代码之家  ›  专栏  ›  技术社区  ›  Austin

将原始Scapy数据解码为人类可读的

  •  1
  • Austin  · 技术社区  · 6 年前

    我正在尝试改用Scapy而不是Wireshark,但是在解码我得到的数据时遇到了问题。在Wireshark中,我可以很容易地看到标记为“分布式交互模拟”的过滤包的最后一层,但在Scapy中,最后一层是“原始”的。我试着从这一层以人类可读的格式获取数据。到目前为止我得到了:

    # Capture with Scapy
    from scapy.all import sniff
    capture = sniff(filter="dst 10.6.255.255 and port 3000", count=5)
    packet = capture[0]
    raw = pkt.lastlayer()
    print(raw)
    
    <Raw  load='\x068\x14\x05L\x88nK\x00x\x00\x00\x00\x94\x08\x88\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x9f\x00\x00\x02 \x00\x01sj\x9b\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04p\x00\x08\x00\x00\x00\x00\x00\x00d\xe9Y<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x8c\x00\x00\x113\x00\x00\x00\x01\x00\x02\x0c\x00\x00\x00\x01\x02\x00\x00\x00\x041187\x00\x00\x00\x00\x00' |>
    

    有人能告诉我怎么让这本书可读吗?

    1 回复  |  直到 6 年前
        1
  •  6
  •   maafk    5 年前

    首先,脚本中有一个错误。 raw = pkt.lastlayer() raw = packet.lastlayer() .

    尝试添加 print(packet.show())

    ###[ Ethernet ]###
      dst       = 94:c6:91:1c:68:c3
      src       = 94:c6:91:1c:68:1d
      type      = 0x800
    ###[ IP ]###
         version   = 4
         ihl       = 5
         tos       = 0x0
         len       = 84
         id        = 49689
         flags     = DF
         frag      = 0
         ttl       = 64
         proto     = icmp
         chksum    = 0x1938
         src       = 192.168.111.4
         dst       = 192.168.111.2
         \options   \
    ###[ ICMP ]###
            type      = echo-request
            code      = 0
            chksum    = 0xb468
            id        = 0x6d3
            seq       = 0xab
    ###[ Raw ]###
               load      = '\x0e\x85\x96[\x00\x00\x00\x00\xd2e\x06\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567'
    
    None
    

    Hextump公司 命令以更可读的格式显示原始加载。

    from scapy.utils import hexdump
    raw = packet.lastlayer()
    hexdump(raw)
    

    输出如下:

    0000  D091965B0000000080FD0E0000000000 ...[............
    0010  101112131415161718191A1B1C1D1E1F ................
    0020  202122232425262728292A2B2C2D2E2F  !"#$%&'()*+,-./
    0030  3031323334353637                 01234567
    0000  063814054CC2886E4B0078000000C294 .8..L..nK.x.....
    0010  08C2880000C3BFC3BFC3BFC3BF000000 ................
    0020  00000000000000000000000000000100 ................
    0030  0000C29F000002200001736AC29BC3B4 ....... ..sj....
    0040  00000000000000000000000470000800 ............p...
    0050  000000000064C3A9593C000000000000 .....d..Y<......
    0060  0000000004C28C000011330000000100 ..........3.....
    0070  020C0000000102000000043131383700 ...........1187.
    0080  00000000                         ....