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实现在windows下操作word的方法
Apr 28 Python
基于wxpython开发的简单gui计算器实例
May 30 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
python判断输入日期为第几天的实例
Nov 13 Python
Python安装Flask环境及简单应用示例
May 03 Python
简单介绍django提供的加密算法
Dec 18 Python
python如何使用Redis构建分布式锁
Jan 16 Python
Python count函数使用方法实例解析
Mar 23 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
python中如何写类
Jun 29 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Python实现文件压缩和解压的示例代码
Aug 12 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语法(3)
2006/10/09 PHP
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
项目经理任命书范本
2014/06/05 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
运动会通讯稿600字
2015/07/20 职场文书
《观潮》教学反思
2016/02/17 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
如何书写授权委托书?
2019/06/25 职场文书
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL