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采集博客中上传的QQ截图文件
Jul 18 Python
Python3基础之list列表实例解析
Aug 13 Python
python安装与使用redis的方法
Apr 19 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
numpy自动生成数组详解
Dec 15 Python
Python实现求数列和的方法示例
Jan 12 Python
Django保护敏感信息的方法示例
May 09 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
Django cookie和session的应用场景及如何使用
Apr 29 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 读取文件的正确方法
2009/04/29 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
Node.js实现数据推送
2016/04/14 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python批量下载图片的三种方法
2013/04/22 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
Python制作刷网页流量工具
2017/04/23 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
Django 视图层(view)的使用
2018/11/09 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
广告学专业应届生求职信
2013/10/01 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
医务人员自我评价
2014/01/26 职场文书
业务部主管岗位职责
2014/01/29 职场文书
开工仪式主持词
2014/03/20 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python