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封装shell命令实例分析
May 05 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
Python3实现腾讯云OCR识别
Nov 27 Python
Python实现元素等待代码实例
Nov 11 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
flask框架自定义url转换器操作详解
Jan 25 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
javascript的事件描述
2006/09/08 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
Cython 三分钟入门教程
2009/09/17 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
python多维数组切片方法
2018/04/13 Python
python版本的仿windows计划任务工具
2018/04/30 Python
Windows下python3.6.4安装教程
2018/07/31 Python
set在python里的含义和用法
2019/06/24 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
餐饮主管岗位职责
2013/12/10 职场文书
政府法律服务方案
2014/06/14 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
护士业务学习心得体会
2016/01/25 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android