-
-
[旧帖] [求教]用scapy.sniff抓TCP包 0.00雪花
-
发表于: 2017-2-17 10:59 2231
-
【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,不知这种用法是否正确?
各位大神

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,不知这种用法是否正确?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
赞赏
雪币:
留言: