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爬虫之爬虫框架Scrapy安装配置
Nov 06 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
python查看列的唯一值方法
Jul 17 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
详解Python 正则表达式模块
Nov 05 Python
使用python绘制二元函数图像的实例
Feb 12 Python
python实现诗歌游戏(类继承)
Feb 26 Python
Python配置虚拟环境图文步骤
May 20 Python
python实现KNN分类算法
Oct 16 Python
python实现简易淘宝购物
Nov 22 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 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
BBS(php & mysql)完整版(四)
2006/10/09 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
php中final关键字用法分析
2016/12/07 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
Js注册协议倒计时的小例子
2013/06/24 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
使用numba对Python运算加速的方法
2018/10/15 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
植物选择:Botanic Choice
2017/02/15 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
客服文员岗位职责
2013/11/29 职场文书
大学同学聚会邀请函
2014/01/19 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
大学学习计划书范文
2014/05/02 职场文书
项目验收申请报告
2015/05/15 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript
Python各协议下socket黏包问题原理
2022/04/12 Python