Python Scapy-数据包列表中的TCP会话
我尝试使用TCPSession函数,比如:sniffoffline=./my_file.pcap,prn=func,store=False,session=TCPSession,但不创建pcap文件 我收到一个原始数据包列表,这样我就可以构建一个Scapy数据包列表,但由于HTTP数据包,我需要TCPSession功能:没有TCPSession,头和主体在不同的数据包中,因此HTTP Layers类无法识别主体部分 因此,我有一个查找HTTP请求的代码:Python Scapy-数据包列表中的TCP会话,python,networking,scapy,packet-sniffers,Python,Networking,Scapy,Packet Sniffers,我尝试使用TCPSession函数,比如:sniffoffline=./my_file.pcap,prn=func,store=False,session=TCPSession,但不创建pcap文件 我收到一个原始数据包列表,这样我就可以构建一个Scapy数据包列表,但由于HTTP数据包,我需要TCPSession功能:没有TCPSession,头和主体在不同的数据包中,因此HTTP Layers类无法识别主体部分 因此,我有一个查找HTTP请求的代码: [...]<HTTPRequest
[...]<HTTPRequest Method='POST' Path='/NP3POCF.jsp' Http_Version='HTTP/1.1' Accept='*/*' Accept_Encoding='gzip, deflate' Connection='keep-alive' Content_Length='56' Content_Type='application/x-www-form-urlencoded' Host='172.16.191.129' User_Agent='python-requests/2.7.0 CPython/3.7.5 Linux/5.3.0-kali2-amd64' |>]
进口泡菜
从斯卡皮来的,都是进口货*
从scapy.layers导入http
加载层http
def expandx:
产量x
而x.payload:
x=x.1有效载荷
产量x
文件_pickle=open'prueba.pkl','rb'
pkt\u list=pickle.loadfile\u pickle
对于pkt_列表中的原始pkt_:
p=以太PKT_原始
如果p.haslayerIP:
srcIP=p[IP].src
如果p.haslayerhtp:
如果p.haslayerHTTPRequest:
printlistexpandp,end=\n--------------------------------------\n
执行此代码将查找HTTP请求,但不包含POST请求的正文部分:
[...]<HTTPRequest Method='POST' Path='/NP3POCF.jsp' Http_Version='HTTP/1.1' Accept='*/*' Accept_Encoding='gzip, deflate' Connection='keep-alive' Content_Length='56' Content_Type='application/x-www-form-urlencoded' Host='172.16.191.129' User_Agent='python-requests/2.7.0 CPython/3.7.5 Linux/5.3.0-kali2-amd64' |>]
使用带有TCPSession的嗅探器(如Scapy sniff函数),数据包有一个原始层,其中包含请求主体
应用TCPSession有什么帮助吗?谢谢。您可以通过X调用sniff offline=X,其中包含数据包列表、数据包、文件名或文件列表。
请确保您使用的是github开发版本,请参阅,因为我不确定该版本是否已发布。目前,scapy不会接受带有offline arg的实际PacketList,因此需要将其包装在list函数中:offline=listmy_packet_list,尽管这可能很快会得到修复。