[python] [scapy]发现原始负载,如何访问?

时间:2015-12-15 15:34:12

标签: python scapy payload

首先,我已经阅读了有关scapy的其他原始答案,但是没有一个有用,也许我只是做错了什么,这就是我今天带来的。

所以,对于初学者来说,我有一个pcap文件,它开始损坏了一些重传,我相信我已经恢复正常了。

它包含Radiotap标头,IEEE 802.11(dot11),逻辑链路控制,IPv4,UDP和DNS。

根据我的理解,传输的udp数据包保存了这些原始数据,然而,这是最近的一些怪癖,也许原始数据是Radiotap / raw。

使用scapy,我会遍历数据包,当找到包含Raw层的数据包时,我正在使用scapy的.show()函数来查看它。

因此,我可以看到有可用的原始负载

###[ Raw ]###
 \load      \
  |###[ Raw ]###
  |  load      = '@\x00\x00\x00\xff\xff\xff\xff\xff\xff\x10h?'

所以,我想我的问题是,如何捕获这个有效负载以接收这些可能的内容,据我所知,负载应该是一个图像文件,但是我很难相信这样,所以我假设我已经错过了某处。

以下是我用来实现上述结果的代码

from scapy.all import *
from scapy.utils import *


pack = rdpcap('/home/username/Downloads/new.pcap')
for packet in pack:
    if packet.getlayer(Raw):
        print '[+] Found Raw' + '\n'
        l = packet.getlayer(Raw)
        rawr = Raw(l)
        rawr.show()

任何帮助,或进一步阅读的见解将不胜感激,我是scapy的新手,也没有分组解剖的专家。

*旁注,以前我曾尝试(使用单独的代码和服务器)重播数据包并将它们发送给自己,但无济于事。但是我觉得这是因为我对接收UDP数据包缺乏了解。

更新 - 我现在用scapy reassembler测试了我的pcap文件,并且我已经确认我没有碎片包或任何类型的包,所以我认为一切都应该顺利...  在wireshark中打开我的pcap后,我可以看到有重传,但我不确定会有多少会影响我的目标,因为没有碎片发生?

另外,我尝试了getlayer(Raw).load,如果我在其上使用print,我会在屏幕上看到一些乱码,我假设它的数据是我的想象,但是我需要现在把它变成一种可用的格式。

3 个答案:

答案 0 :(得分:1)

你可以这样做:

data = packet[Raw].load

答案 1 :(得分:-1)

您应该能够以这种方式访问​​该字段:

l = packet.getlayer(Raw).load

答案 2 :(得分:-1)

使用Scapy的交互式shell我成功地做到了这一点:

pcap = rdpcap('sniffed_packets.pcap')
s = pcap.sessions()

for key, value in s.iteritems():

     # Looking for telnet sessions
     if ':23' in key:
         for v in value:
             try:
                 v.getlayer(Raw).load
             except AttributeError:
                 pass