-
-
[旧帖] [求教]用scapy.sniff抓TCP包 0.00雪花
-
发表于: 2017-2-17 10:59 2208
-
【Question】
各位大神本人小白,最近想用scapy的sniff函数抓特定的tcp数据包进行分析,但是遇到了如下问题:
1. 抓到的tcp包与过滤器filter设置的不一致
2. 用sprinf输出Raw.load没有显示
【Code】
from scapy.all import *
filter_S2U = '(src host 192.168.1.20) and (dst port 5678) and tcp[36:2] = 0x0228'
def findpacket(filtre):
pkt=sniff(iface='wlan0',count=1,filter=filtre)
wrpcap('demo.pcap', pkt)
pkt[0].show()
hexdump(pkt[0])
print 'Raw.load:'
tcpload = pkt[0].sprintf('%Raw.load%')
print 'tcpload[4:6]'
cmdseq = tcpload[4:6]
print cmdseq
return pkt
findpacket(filter_S2U )
【Output】
说明
1.图中src,dst与代码中过滤器filter_S2U正好相反
2.图中Raw.load没有显示,但从数据包来看TCP是携带数据的
PS:filter中加上tcp[36:2] = 0x0228是想捕获tcp部分偏移36字节处的后两个字节(图中红色圆圈处),让他们等于0228,不知这种用法是否正确?
各位大神本人小白,最近想用scapy的sniff函数抓特定的tcp数据包进行分析,但是遇到了如下问题:
1. 抓到的tcp包与过滤器filter设置的不一致
2. 用sprinf输出Raw.load没有显示
【Code】
from scapy.all import *
filter_S2U = '(src host 192.168.1.20) and (dst port 5678) and tcp[36:2] = 0x0228'
def findpacket(filtre):
pkt=sniff(iface='wlan0',count=1,filter=filtre)
wrpcap('demo.pcap', pkt)
pkt[0].show()
hexdump(pkt[0])
print 'Raw.load:'
tcpload = pkt[0].sprintf('%Raw.load%')
print 'tcpload[4:6]'
cmdseq = tcpload[4:6]
print cmdseq
return pkt
findpacket(filter_S2U )
【Output】
说明
1.图中src,dst与代码中过滤器filter_S2U正好相反
2.图中Raw.load没有显示,但从数据包来看TCP是携带数据的
PS:filter中加上tcp[36:2] = 0x0228是想捕获tcp部分偏移36字节处的后两个字节(图中红色圆圈处),让他们等于0228,不知这种用法是否正确?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
看原图
赞赏
雪币:
留言: