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接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
python提取页面内url列表的方法
May 25 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
对python周期性定时器的示例详解
Feb 19 Python
python 日期排序的实例代码
Jul 11 Python
Django app配置多个数据库代码实例
Dec 17 Python
Python可以实现栈的结构吗
May 27 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
pycharm debug 断点调试心得分享
Apr 16 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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 mkdir()定义和用法
2009/01/14 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
新浪的图片新闻效果
2007/01/13 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
python如何爬取个性签名
2018/06/19 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
自我鉴定模板
2013/10/29 职场文书
环境整治工作方案
2014/05/18 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
离婚财产分配协议书
2014/10/21 职场文书
工伤私了协议书范本
2014/11/24 职场文书
商务考察邀请函模板
2015/02/02 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
MySQL的join buffer原理
2021/04/29 MySQL
Python 内置函数速查表一览
2021/06/02 Python