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下载文件时显示下载进度的方法
Apr 02 Python
python输出指定月份日历的方法
Apr 23 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python面向对象特殊成员
Apr 24 Python
python中reduce()函数的使用方法示例
Sep 29 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
python 基于wx实现音乐播放
Nov 24 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
19个Android常用工具类汇总
2014/12/30 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
JavaScript版代码高亮
2006/06/26 Javascript
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
js实现随机点名程序
2020/09/17 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
Python splitlines使用技巧
2008/09/06 Python
Python运行的17个时新手常见错误小结
2012/08/07 Python
python str与repr的区别
2013/03/23 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
python生成密码字典的方法
2018/07/06 Python
python requests post多层字典的方法
2018/12/27 Python
python语言基本语句用法总结
2019/06/11 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
网络技术专业求职信
2014/05/02 职场文书
新农村建设汇报材料
2014/08/15 职场文书
优秀班主任申报材料
2014/12/16 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
create-react-app开发常用配置教程
2022/06/25 Javascript