如何使用python将RAW LOAD从scapy转换为KERBEROS表示法

时间:2016-04-07 16:32:57

标签: python scapy asn.1 sniffing

我使用scapy获取了一个捕获kerberos数据包:

###[ Ethernet ]###
  dst       = 20:6a:8a:0c:1e:3f
  src       = 00:25:64:a1:2a:9d
  type      = 0x800
###[ IP ]###
     version   = 4L
     ihl       = 5L
     tos       = 0x0
     len       = 213
     id        = 48219
     flags     = DF
     frag      = 0L
     ttl       = 64
     proto     = tcp
     chksum    = 0x4aaf
     src       = 192.168.88.224
     dst       = 192.168.88.231
     \options   \
###[ TCP ]###
        sport     = 34856
        dport     = kerberos
        seq       = 2748677979
        ack       = 527108396
        dataofs   = 8L
        reserved  = 0L
        flags     = PA
        window    = 229
        chksum    = 0x6ab9
        urgptr    = 0
        options   = [('NOP', None), ('NOP', None), ('Timestamp', (8241937, 896410))]
###[ Raw ]###
           load      = '\x00\x00\x00\x9dj\x81\x9a0\x81\x97\xa1\x03\x02\x01\x05\xa2\x03\x02\x01\n\xa3\x0e0\x0c0\n\xa1\x04\x02\x02\x00\x95\xa2\x02\x04\x00\xa4{0y\xa0\x07\x03\x05\x00@\x00\x00\x10\xa1\x120\x10\xa0\x03\x02\x01\x01\xa1\t0\x07\x1b\x05admin\xa2\n\x1b\x08TEST.LAN\xa3\x1d0\x1b\xa0\x03\x02\x01\x02\xa1\x140\x12\x1b\x06krbtgt\x1b\x08TEST.LAN\xa5\x11\x18\x0f20160408162022Z\xa7\x06\x02\x04\x1f\xf2f\x81\xa8\x140\x12\x02\x01\x12\x02\x01\x11\x02\x01\x10\x02\x01\x17\x02\x01\x19\x02\x01\x1a'

我需要翻译(Parses)部分[Raw] load = \ x00 \ x00 \ x ...因为它可以像Wireshark一样, 因为我想操纵存储在数据包中的数据并发送数据包进一步修改的收件人。我知道它可以用ASN1库,但我不知道怎么做。 谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

您应该能够通过使用Kerberos ASN.1 spec工具将pyasn1编译为asn1ate(Python)模块,然后针对捕获运行pyasn1解码器,从序列化形式恢复Kerberos数据结构。这会将Kerberos数据转换为可在内存中修改并重新序列化为八位字节序列的实时Python对象。

可以找到解码其他协议的一些示例脚本here