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 相关文章推荐
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
深入理解NumPy简明教程---数组2
Dec 17 Python
Python实现类的创建与使用方法示例
Jul 25 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
Python学生成绩管理系统简洁版
Apr 05 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
python框架django项目部署相关知识详解
Nov 04 Python
django日志默认打印request请求信息的方法示例
May 17 Python
Python json格式化打印实现过程解析
Jul 21 Python
python爬虫爬取某网站视频的示例代码
Feb 20 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防注入安全代码
2008/04/09 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
php中动态修改ini配置
2014/10/14 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
Python循环语句中else的用法总结
2016/09/11 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python 实现敏感词过滤的方法
2019/01/21 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
英语自荐信范文
2013/12/11 职场文书
高一家长会邀请函
2014/01/12 职场文书
运动会广播稿50字
2014/01/26 职场文书
大型车展策划方案
2014/02/01 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
Python中for后接else的语法使用
2021/05/18 Python
详解如何用Python实现感知器算法
2021/06/18 Python