在第二层主机发现中,除了使用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. iOS 协议分发

    Github:AOMultiproxier.HJProtocolDispatcher 协议实现分发器,能够轻易实现将协议事件分发给多个实现者. 一.AOMultiproxier.h #define A ...

  2. 基于MVP模式实现四则运算器

    基于MVP模式四则运算器 来到新东家,项目的框架采用的是MVP模式,刚来公司的时候,项目经理给予分配小任务,首先熟悉MVP模式,而后普通的四则运算器的实现使用MVP分层.这里主要回顾当时做任务时候的对 ...

  3. Python第十二章-多进程和多线程01-多进程

    多进程和多线程 一.进程 1.1 进程的引入 现实生活中,有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的:试想,如果把唱歌和跳舞这2件事情分开依次 ...

  4. NCEP CFSR数据下载

    一.简介 CFSR(Climate Forecast SystemReanalysis)再分析资料使用了 GEOS-5(Goddard EarthObserving System)大气模式与资料同化系 ...

  5. Mob 之 短信验证集成 SMSSDK

    开相关发中总会遇到短信验证这些操作,这周没有来得及写新的东西,借此分享一篇以前学习短信验证的笔记,本文使用的是 Mob 提供的 SMSSDK . 下载 SMSSDK 官网下载地址:SMSSDK 集成 ...

  6. H - Bone Collector

    H - Bone Collector Many years ago , in Teddy's hometown there was a man who was called "Bone Co ...

  7. 解决VS项目程序运行完就自动关闭窗口

    VS的程序运行完会关闭窗口,需要设置工程属性 笔者虽然是Java开发者,但是学习用到了C++与C语言,之前使用的是dev与codeblock并没有这个情况,那么如何解决 首先你有这个hello,wor ...

  8. 1026 Table Tennis (30分)

    A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For a ...

  9. WIFI:802.11无线LAN

    IEEE 802.11 无线LAN(也称WiFi) IEEE是什么 电气和电子工程师协会(IEEE,全称是Institute of Electrical and Electronics Enginee ...

  10. 路由与交换,cisco路由器配置,动态路由协议—RIP

    一.动态路由协议分类 动态路由协议包括IGP(内部网关协议)和EGP(外部网关协议). 1.IGP IGP又包括距离向量路由协议和链路状态路由协议. (1)距离向量路由协议典型代表:RIP (2)链路 ...