Python3利用scapy局域网实现自动多线程arp扫描功能


Posted in Python onJanuary 21, 2021

一、所需Python库

from scapy.all import *
import threading

二、实现ip扫描

1.获取c段ip地址

在ARP()里面有ip地址,我们可以从里面提取出前3段出来

ARP().show()

Python3利用scapy局域网实现自动多线程arp扫描功能

然后通过从后查找最后一个.得到最后一段位数,然后总长度-最后一段长度就能取出前3段

tip=ARP().psrc
print(tip[:(len(tip)-tip[::-1].find('.'))])

2.arp扫描函数实现

然后就是建立函数实现扫描了,构造arp包->发送包->判断是否响应->输出信息

def ScanIp(ip):
	pkt=Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip)
	res=srp1(pkt,timeout=10,verbose=0)
	if res:
		print(res.psrc)
		print(res.hwsrc)

然后来在加个判断返回的ip跟我们要扫描的ip是否一致,然后加上异常处理

def ScanIp(ip):
	pkt=Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip)
	try:
		res=srp1(pkt,timeout=10,verbose=0)
		if res.psrc==ip:
			print(res.psrc)
			print(res.hwsrc)
	except:
		pass

现在把输出结果美化一下,不然直接print很难看

def ScanIp(ip):
	pkt=Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip)
	try:
		res=srp1(pkt,timeout=10,verbose=0)
		if res.psrc==ip:
			print('IP     MAC')
			print('[+]'+res.psrc+' '+res.hwsrc)
	except:
		pass

尝试调用一下

ScanIp('192.168.123.1')

现在看起来就很舒服

Python3利用scapy局域网实现自动多线程arp扫描功能

3.多线程

现在我们只需要循环一下c段ip然后用多线程跑起来就行了

for i in range(1,256):
	ip=tip+str(i)
	Go=threading.Thread(target=ScanIp,args=(ip,))
	Go.start()

然后看一下效果好像不是我们想要的因为IP MAC输出了很多次看起来很难受

Python3利用scapy局域网实现自动多线程arp扫描功能

然后这里把输出移动到函数外的for循环上方,然后判断一下__name__,这样就完成了所有的功能了

from scapy.all import *
import threading
 
tip=ARP().psrc
tip=tip[:(len(tip)-tip[::-1].find('.'))]
 
def ScanIp(ip):
	pkt=Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip)
	try:
		res=srp1(pkt,timeout=10,verbose=0)
		if res.psrc==ip:
			print('[+]'+res.psrc+' '+res.hwsrc)
	except:
		pass
 
if __name__=='__main__':
	print('IP     MAC')
	for i in range(1,256):
		ip=tip+str(i)
		Go=threading.Thread(target=ScanIp,args=(ip,))
		Go.start()

运行效果

Python3利用scapy局域网实现自动多线程arp扫描功能

到此这篇关于Python3利用scapy局域网实现自动多线程arp扫描功能的文章就介绍到这了,更多相关Python scapy实现arp扫描内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 变量类型及命名规则介绍
Jun 08 Python
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
python获取远程图片大小和尺寸的方法
Mar 26 Python
举例详解Python中的split()函数的使用方法
Apr 07 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
对python的输出和输出格式详解
Dec 08 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
使用python实现ftp的文件读写方法
Jul 02 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
python zip()函数使用方法解析
Oct 31 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
Pandas直接读取sql脚本的方法
Jan 21 #Python
python asyncio 协程库的使用
Jan 21 #Python
python palywright库基本使用
Jan 21 #Python
python Scrapy爬虫框架的使用
Jan 21 #Python
python 可视化库PyG2Plot的使用
Jan 21 #Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 #Python
Python实现石头剪刀布游戏
Jan 20 #Python
You might like
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
php实现URL加密解密的方法
2016/11/17 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
Underscore源码分析
2015/12/30 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
Python切片用法实例教程
2014/09/08 Python
python开发之thread线程基础实例入门
2015/11/11 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
keras的三种模型实现与区别说明
2020/07/03 Python
python 如何实现遗传算法
2020/09/22 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
python time.strptime格式化实例详解
2021/02/03 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
德国网上花店:Valentins
2018/08/15 全球购物
大学辅导员事迹材料
2014/02/05 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
法定代表人证明书
2014/11/28 职场文书
文明单位汇报材料
2014/12/24 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
教你怎么用Python实现多路径迷宫
2021/04/29 Python
浅谈python中的多态
2021/06/15 Python
SpringBoot生成License的实现示例
2021/06/16 Java/Android