关键词:
1.问题
python的scapy
库,是构造TCP/IP
报文的利器,并且支持asn.1
,搞过电路交换协议的人一定会明白基于asn.1
协议的描述复杂度。
使用中遇到的一个比较麻烦的问题,scapy
抓到的Packet
如何在网络中传输,如何在使用端还原到Packet
类型。
2.方案
2.1.Packet
转换为str
Packet
转换为str
很简单,直接上代码:
from scapy.all import *
pkts = sniff('eth1', count=1, timeout=5)
pkts[0].show()
pkt_str = str(raw(pkts[0]))
print(pkt_str)
2.2.str
转换为Packet
str
转换为Packet
看上去不那么容易,遇到过两个问题:
- 还原到
Packet
类型,需要bytes
,str
转换为bytes
一直没有试成功; - 还原到
Packet
类型,调用show
方法,没有解析出席完整的报文结构;
对于问题1的方法:
from scapy.all import *
pkts = sniff('eth1', count=1, timeout=5)
pkts[0].show()
pkt_str = str(raw(pkts[0]))
print(pkt_str)
pkt_bytes = eval(pkt_str)
print(pkt_bytes)
利用eval
方法,str
转换到bytes
很容易,不需要对str的编码格式设置,比较方便。
对于问题2的方法:
from scapy.all import *
pkts = sniff('eth1', count=1, timeout=5)
pkts[0].show()
pkt_str = str(raw(pkts[0]))
print(pkt_str)
pkt_bytes = eval(pkt_str)
pkt_old = Ether(pkt_bytes)
pkt_old.show()
scapy
解析报文的时候,需要指定第一层什么时候结构,不然无法进行完整的解析,不明白sniff
的原理,如果知道报文是以太网结构,直接使用类型Ether
构造报文Packet
,再调用show
方法就能完整的解析了。
解决了上述两个问题,就可以方便在网络中传输scapy
的Packet
结构。
3.讨论
既然使用scapy
是网络方面的库,系统往往不是单一进程就能完成的,会涉及到网络传输,Packet
与str
相互转换的问题解决了,就离正式的方案不远了。本文讨论的方法,网上还是比较难找到一个完整的方法,所以贴上来供大家学习使用。
上述的方法,还有一个问题使用sniff
抓到的包,如何确定首层是什么报文呢?这里再附送一个方法,把Packet
转换成json
格式,这样就容易判断了,代码如下:
def packet2json(pkt: Packet):
js = dict()
for key in pkt.fields.keys():
js[key] = str(pkt.fields[key])
if isinstance(pkt.payload, NoPayload):
return js
js[pkt.payload.name] = packet2json(pkt.payload)
return js
enjoy!!!
使用scapy给pcap包添加vlan(代码片段)
...、使用scapy编辑没有vlan的文件的第4个报文fromscapy.allimport*packets=rdpcap("gen_full_tcp_2023_04_20_10_21_14.pcap")data=Ether(dst="00:16:3e:33:02:64",src="00:16:3e:5c:f2:a3",type="VLAN")/Dot1Q(prio=0,id=0,vlan=10,type="IPv4")/IP(raw(packets[3]["IP"]))stream=[]stream.append(packets[0])... 查看详情
实践三网络嗅探与协议分析(代码片段)
...务之后,我去查找如何去编写一个简单的抓包工具,发现python有一个抓包用的库scapy和解析包用到的库dpkt。于是我就打算使用python来进行编写。下面是安装这两个库的截图(由于pip版本不能更新问题导致无法导入库,将近耗费了... 查看详情
使用 scapy 时 PyX 未正确安装
...发布时间】:2018-06-1816:43:42【问题描述】:我正在尝试在python3.6中使用scapy来解析pcap文件,我尝试使用的功能是pdfdump。fromscapy.allimport*packets=rdpcap(\'***path***/nitroba.pcap\')forpacketinpa 查看详情
在scapy中绑定自定义图层(代码片段)
我有一个python脚本,它将AVB(IEEE)数据包组装并发送到网络中。数据包将被wireshark捕获。使用其他python脚本,我遍历捕获文件。但我无法在几层中访问一些参数,因为scapy不知道它们。所以我必须将这些图层添加到scapy中。这是w... 查看详情
python关于pil库的学习总结与成果展示(代码片段)
一、关于PIL库的学习总结PIL(PythonImageLibrary)库是Python语言的第三方库,需要通过pip工具安装。安装PIL库的方法如下,需要注意,安装库的名字是pillow。 :>pipinstallpillow #或者 pip3installpillow PIL库支... 查看详情
中间人用 scapy 攻击
...是代码:fromscapy.allimport*importmultiprocessingimporttimeclassMITM:packets=[]def__init__(self,vict 查看详情
使用 Python 2.7 在 Windows 上运行 Scapy
】使用Python2.7在Windows上运行Scapy【英文标题】:RunningScapyonWindowswithPython2.7【发布时间】:2011-07-2318:40:59【问题描述】:我喜欢在Windows7下将Scapy与Pythonv2.7一起使用。如何安装Python2.7所需的模块pypcap?是否可以使用py2exe等分发工具... 查看详情
《python黑帽子:黑客与渗透测试编程之道》读书笔记:scapy——网络的掌控者(代码片段)
...1、窃取email认证2、ARP缓存投毒3、PCAP文件处理结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了,anyway,还是本很好的书本... 查看详情
使用 Scapy 获取 TCP 标志
...,我需要提取TCP标志(SYN、ACK、PSH、URG...)。我正在使用packet[\'TCP\'].flags值一次获取所有标志。pkts=PcapReader(infile)forpinpkts:F=bin(p[\'TCP\'].flags)printF,b 查看详情
python与机器学习
文章目录机器学习的目标机器学习分类pythonscikit-learnscikit-learn常用函数sklearn库的简介无监督学习聚类clustering欧式距离曼哈顿距离马氏距离夹角余弦降维k-means聚类算法DBSCAN密度聚类PCA方法及其应用非负矩阵分解(NMF)基... 查看详情
自定义协议的 Scapy 图形转储
...以下数据包:p=IP()/TCP()/Unique()Unique是一个新层:classUnique(Packet):name="Unique"fields_desc=[IntField("a",0),IntField("b",0),IntField( 查看详情
发送的 Scapy 数据包收不到
】发送的Scapy数据包收不到【英文标题】:Scapypacketsentcannotbereceived【发布时间】:2013-12-0915:31:03【问题描述】:我正在尝试使用以下命令发送带有scapy的UDP数据包:>>send(IP(dst="127.0.0.1",src="111.111.111.111")/UDP(dport=5005)/"Hello").Sent1... 查看详情
python爬虫学习记录基本库的使用——requests(代码片段)
一、基本用法urllib库中的urlopen方法实际是用GET方式请求网页,而requests中相应的方法是get()我们用get方法实现与urlopen相同的操作,得到一个response对象,分别输出response类型,状态码,响应体以及cooki... 查看详情
scapy的使用(代码片段)
...需要伪造IGMP报文,骗取交换机相关组播流量,慌忙之下学习了Scapy的使用,以及相关快速学习的方法,在这里分享下。1.Scapy库安装github地址:https://github.com/secdev/scapy安装过程:见官方文档笔者方案:$gitclonehttps://github.com/secdev/sc... 查看详情
Scapy 和 Python 3.2
】Scapy和Python3.2【英文标题】:ScapyandPython3.2【发布时间】:2012-03-1903:31:37【问题描述】:Scapy会与Python3.2兼容吗?我一直试图找到一些关于它如何执行的信息,因为Scapy网站上关于Python3.X兼容性的信息相当稀少(如果有的话),... 查看详情
python网络爬虫与信息提取—requests库入门(代码片段)
...c;自动网络请求提交此博客为中国大学MOOC北京理工大学《Python网络爬虫与信息提取》的学习笔记requests库的安装requests库是Python的第三方库,是目前公认的,爬取网页最好的第三方库。关于requests库的更多信息,可以在... 查看详情
scapy在windows上的安装
你需要以下为软件在Windows上安装Scapy: Python:Python2.7或3.3+。安装后,将Python安装目录及其脚本子目录添加到您的路径中。根据你的Python版本,默认是C:\python27和C:\python27\脚本分别。Npcap:最新版本。默认值是推荐。Scapy还... 查看详情