在第二层主机发现中,除了使用arping命令外,还可以使用Kali下自带的一个工具————netdiscover。

     netdiscover是一个专门用于二层主机发现的工具,它有两种扫描方式:主动扫描和被动扫描。其中,主动扫描的原理就是对外发送ARP广播,操作也很简单。例如,我本机的IP所在的网段为192.168.80.0/24,我要扫描我这个网段的存活主机,指令为netdiscover -r 192.168.80.0/24 这里的扫描参数为r。被动扫描的原理是将我们自己机器的网卡设置为混杂模式,接受网络中的ARP广播,被动扫描相比主动扫描的好处是被动扫描可以隐蔽自己。操作指令为netdiscover -p,如下所示:



    介绍完工具之后,我们来用python实现一下这个功能,与之前利用python模块subprocess发送arping命令不同是,这次我们使用python下的另外一个模块————scapy。

    scapy模块的优势在于可以自由的去构造一系列的报文,并通过scapy发送出去,再接收回应。另外scapy模块对接收到的回应只做解码,而不做解释,它只会如实显示响应的报文,不会去提供分析的结论,至于判断和利用都由我们自己来决定。,并且scapy可以在二、三、四层工作。

    先上代码

import os
import time
from scapy.all import *
from threading import Thread
from optparse import OptionParser def sweep(ip):
try:
pakt=Ether(dst="ff:ff:ff:ff:ff:ff",src="")/ARP(
hwsrc="",psrc="",hwdst="00:00:00:00:00:00",pst=ip
)
#src源mac,hwsrc源mac,psrc写源ip
if result:
time.sleep(0.1)
print ip,'在线'
return
except:
return def main():
usage="Usage: %prog -f <filename> -i <ip address>"
parser=OptionParser(usage=usage)
parser.add_option("-f","--file",type="string",dest="filename",help=
"specify the IP address file")
parser.add_option("-i","--ip",type="string",dest="address",help=
"specify the IP address")
(options,args)=parser.parse_args()
filename=options.filename
address=options.address if(filename == None and address == None):
print "请指定IP列表文件或者IP地址"
sys.exit() if filename:
if not os.path.exists(filename):
print "指定文件不存在,请重新输入"
sys.exit()
f=open(filename,"r")
for i in f.readlines():
ip = i.strip("\n")
t=Thread(target=sweep,args=(ip,))
t.start() if address:
prefix=address.split(".")[0]+"."+address.split(".")[1]+"."+address.split(".")[2]+"."
for i in range(1,255):
ip=prefix+str(i)
t=Thread(target=sweep,args=(ip,))
t.start() if __name__=='__main__':
main()

代码的一些解释

1.sweep()函数中是这个脚本的主要功能,我们通过scapy构造一个ARP广播包。dst为目的mac地址,这里由于我们要发现主机,所以填写广播地址ff:ff:ff:ff:ff:ff ,src为本机的mac地址,可以不填写。hwsrc同样为本机的mac地址,psrc为本机的ip地址,hwdst为被攻击的mac地址,这里保持默认就好。

2.verbose=0的作用是不反馈各种信息,如果不加这条,会返回很多影响我们判断的信息,建议写上。

3.-f选项是读取文件,-i选项是选择ip地址

4.readlines()方法是一次性把内容都读取到内存中,当文件很大时,可能会导致内存不够用。要读取大文件的话,一般是一行一行的读,

如  f=open('password.txt')

     for i in f:

          print i.strip()

...

python信息收集(二)的更多相关文章

  1. python信息收集之子域名

    python信息收集之子域名 主要是以下3种思路: 字典爆破 搜索引擎 第三方网站 0x00 背景知识 list Python内置的一种数据类型是列表:list是一种有序的集合. >>&g ...

  2. python信息收集(一)

        在渗透测试初期,需要进行大量的信息收集.一般情况下,信息收集可以分为两大类----被动信息收集和主动信息收集.     其中,被动信息收集主要是通过各种公开的渠道来获取目标系统的信息,例如:站 ...

  3. python 信息收集器和CMS识别脚本

    前言: 信息收集是渗透测试重要的一部分 这次我总结了前几次写的经验,将其 进化了一下 正文: 信息收集脚本的功能: 1.端口扫描 2.子域名挖掘 3.DNS查询 4.whois查询 5.旁站查询 CM ...

  4. python信息收集(四)

        在前三篇中,我们介绍了使用python脚本发现二层.三层的主机设备,接下来我们介绍使用python发现第四层主机.     在TCP/IP协议中,第四层为传输层,主要使用的通信协议为TCP协议 ...

  5. python信息收集(三)

        前两篇介绍了利用python编写一些脚本实现二层主机的发现,这一篇介绍一下三层主机的发现.     一般来说,三层主机的发现主要是通过ICMP协议来实现的.其中ICMP协议中的ping命令可以 ...

  6. 内网横向渗透 之 ATT&CK系列一 之 信息收集

    前言 靶机下载地址:ATT&CK 拓扑图: 通过模拟真实环境搭建的漏洞靶场,完全模拟ATK&CK攻击链路进行搭建,形成完整个闭环.虚拟机默认密码为hongrisec@2019. 环境搭 ...

  7. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  8. 基于Python的渗透测试信息收集系统的设计和实现

    信息收集系统的设计和实现 渗透测试是保卫网络安全的一种有效且必要的技术手段,而渗透测试的本质就是信息收集,信息搜集整理可为后续的情报跟进提供强大的保证,目标资产信息搜集的广度,决定渗透过程的复杂程度, ...

  9. 『.NET Core CLI工具文档』(二).NET Core 工具遥测(应用信息收集)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Tools Telemetry 翻译:.NET Core 工具遥测(应用信息收集) .NET Cor ...

随机推荐

  1. 使用tensorflow实现cnn进行mnist识别

    第一个CNN代码,暂时对于CNN的BP还不熟悉.但是通过这个代码对于tensorflow的运行机制有了初步的理解 ''' softmax classifier for mnist created on ...

  2. python项目依赖的生成与使用

    1.cd到相关项目下并创建虚拟环境 ~$ pipenv install --dev 2.激活虚拟环境 ~$ pipenv shell 3.执行命令 ~$ pip freeze > require ...

  3. Excel决定吃什么

    1.Excel填充 在第一列填充1到100 (1)下拉填充 (2)填充——自动填充——序列 2.第二列加权填上自己吃的午饭 3.vloopup函数(列查找) 几乎都使用精确匹配,该项的参数一定要选择为 ...

  4. 一文摸透从输入URL到页面渲染的过程

    一文摸透从输入URL到页面渲染的过程 从输入URL到页面渲染需要Chrome浏览器的多个进程配合,所以我们先来谈谈现阶段Chrome浏览器的多进程架构. 一.Chrome架构 目前Chrome采用的是 ...

  5. M - 湫湫系列故事——减肥记I

    M - 湫湫系列故事--减肥记I 对于吃货来说,过年最幸福的事就是吃了,没有之一! 但是对于女生来说,卡路里(热量)是天敌啊! 资深美女湫湫深谙"胖来如山倒,胖去如抽丝"的道理,所 ...

  6. CentOS-7.6 下搭建 NIS 服务器

    ##服务端配置: ####Server: 192.168.0.178(CentOS 7.6) # systemctl stop firewalld # systemctl disable firewa ...

  7. SpringMVC知识大览

    SpringMVC大览 springMVC的基础知识 什么是SpringMVC? springmvc框架原理(掌握) 前端控制器.'处理映射器.处理适配器.视图解析器 springmvc的入门程序 目 ...

  8. 《Three.js 入门指南》3.1.1 - 基本几何形状 -圆环面(TorusGeometry)

    3.1 基本几何形状 圆环面(TorusGeometry) 构造函数 THREE.TorusGeometry(radius, tube, radialSegments, tubularSegments ...

  9. HDU1074:Doing Homework(状压DP)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  10. 【php】正则表达式

    一.生活当中的正则表达式: a)Notepad++.word等这些具有编辑功能的软件,都具有一个查找.替换的功能,这个功能,其实就属于正则模式的一种匹配.替换:包括windows当中可以实现的查找,也 ...