Python 如何将原始零件从pcap文件转换为正常格式? pkts[0].show() ###[以太网]### dst=00:00:5e:00:01:32 src=00:01:d7:ea:ec:45 类型=IPv4 ###[知识产权]### 版本=4L ihl=5L tos=0x0 len=523 id=56882 标志=DF frag=0升 ttl=255 proto=udp chksum=0x8738 src=221.131.232.12 dst=10.212.68.18 \选择权\ ###[UDP]### 运动=半径 dport=半径\帐户 len=503 chksum=0xdda4 ###[原始]### load='\x04\x01\xefna\r\xa5\xb0w\x05\xbaU]t\x9a9k\x1c

Python 如何将原始零件从pcap文件转换为正常格式? pkts[0].show() ###[以太网]### dst=00:00:5e:00:01:32 src=00:01:d7:ea:ec:45 类型=IPv4 ###[知识产权]### 版本=4L ihl=5L tos=0x0 len=523 id=56882 标志=DF frag=0升 ttl=255 proto=udp chksum=0x8738 src=221.131.232.12 dst=10.212.68.18 \选择权\ ###[UDP]### 运动=半径 dport=半径\帐户 len=503 chksum=0xdda4 ###[原始]### load='\x04\x01\xefna\r\xa5\xb0w\x05\xbaU]t\x9a9k\x1c,python,scapy,Python,Scapy,更新 Scapy直到目前为止,只有基本的桡骨层未注册到Scapy,用于基于桡骨端口的自动桡骨解剖。跳到最后,查看关于scapy的问题的原始答案。您是否确实知道原始部分中包含哪个协议?它应该是Radius协议。我得到了与您相同的输出,但我的请求是修改Radius pcap的“属性值对”。我想“加载”部分可能是相关的。现在我无法修改它,因为我真的不知道加载意味着什么,我想我应该首先将它转换为普通字符串。scapy的radius层没有解析radius属性(rfc2866,请参见[1]),因此它们将显示

更新


Scapy直到目前为止,只有基本的桡骨层未注册到Scapy,用于基于桡骨端口的自动桡骨解剖。跳到最后,查看关于
scapy的问题的原始答案。您是否确实知道原始部分中包含哪个协议?它应该是Radius协议。我得到了与您相同的输出,但我的请求是修改Radius pcap的“属性值对”。我想“加载”部分可能是相关的。现在我无法修改它,因为我真的不知道加载意味着什么,我想我应该首先将它转换为普通字符串。scapy的radius层没有解析radius属性(rfc2866,请参见[1]),因此它们将显示为原始层。您可能必须自己实现这一点。[1] 伊恩,你可能应该接受这个答案(并投票表决),这对丁丁来说是件好事,也会帮助其他人看到你的问题。丁丁:也许你可以编辑你的答案,添加你评论的内容,因为它真的很有用谢谢你们两个!感谢@Pierre,最近发布的scapy 2.3.2随附了radius属性层,我对我的答案进行了更新。我还修复了指向官方scapy github回购协议的链接。这应该完全回答了这个问题。@tintin做得很好!我希望我能两次投票支持你的答案!
>>> pkts[0].show()

###[ Ethernet ]###
dst       = 00:00:5e:00:01:32
src       = 00:01:d7:ea:ec:45
type      = IPv4
###[ IP ]###
 version   = 4L
 ihl       = 5L
 tos       = 0x0
 len       = 523
 id        = 56882
 flags     = DF
 frag      = 0L
 ttl       = 255
 proto     = udp
 chksum    = 0x8738
 src       = 221.131.232.12
 dst       = 10.212.68.18
 \options   \
###[ UDP ]###
    sport     = radius_acct
    dport     = radius_acct
    len       = 503
    chksum    = 0xdda4
###[ Raw ]###
       load      = '\x04;\x01\xefna\r\xa5\xb0w\x05\xbaU]t\x9a9k\x1c<\x01\x0fwzcna06629197\x05\x06\x01!e\x9f\x04\x06\xdd\x83\xe8\x0c\x08\x06\n\x9e\xfd\x9b\x0b\nnat-hsi1 \x1fZJWZH-MC-CMNET-BRAS12-CN_ME60(\x06\x00\x00\x00\x03)\x06\x00\x00\x00\x00*\x06$\x1d|o+\x06g\x88\xe3L,#ZJWZH-M01222175401439efd39c069285-\x06\x00\x00\x00\x01.\x06\x00\x03\xa0 /\x06\x00c\xbeC0\x06\x00\x9dq04\x06\x00\x00\x00\x005\x06\x00\x00\x00\x037\x06S\xbbGk=\x06\x00\x00\x00\x0f\x1f\x13c8:3a:35:4f:30:d8W4slot=1;subslot=2;port=22;vlanid=1439;vlanid2=1754;\x06\x06\x00\x00\x00\x02\x07\x06\x00\x00\x00\x013\x06\x00\x00\x00\x00\x1c\x06\x00\x00\x00\x00\x1b\x06\x00\t:\x80\x1a\xc1\x00\x00\x07\xdb<"10.158.253.155 c8:3a:35:4f:30:d8\x03\x06\x00@\x02\xb8\x02\x06\x00@\x02\xb8\x06\x06\x00@\x02\xb8\x05\x06\x00@\x02\xb8\x16\x06\x00\x00\x00\x0f\x1a\x06\x00\x01\x0e\xa5\x8a\x08nat444T\x06\x00\x00\x00\x00=\x06\x00\x00\x00\x0f>\x06\x00\x00\x00\x0f\x90\x06\x00\x00\x00\x00\x91\x06\x00\x00\x00\x00\x92\x06\x00\x00\x00\x00\x93\x06\x00\x00\x00\x00\x94\x06\x00\x00\x00\x00\x95\x06\x00\x00\x00\x00\x99\x13c8:3a:35:4f:30:d8\x9f\x06\x00\x00\x00\x00\x01\x06\x01@\x00\x00M\x06\x00_\xc2\x88\xa1\x06\xb7\xf5#]\xa2\x06\x00\x004\x00\xa3\x06\x00\x00C\xff'
pip install --upgrade scapy
 Radius(data).show()
###[ Radius ]###
  code= Accounting-Request
  id= 59
  len= 495
  authenticator= 'na\r\xa5\xb0w\x05\xbaU]t\x9a9k\x1c<'
  \attributes\
   |###[ Radius Attribute ]###
   |  type= User-Name
   |  len= 15
   |  value= 'wzcna06629197'
   |###[ Radius Attribute ]###
   |  type= NAS-Port
   |  len= 6
   |  value= '\x01!e\x9f'
   |###[ Radius Attribute ]###
   |  type= NAS-IP-Address
   |  len= 6
   |  value= '\xdd\x83\xe8\x0c'
   |###[ Radius Attribute ]###
   |  type= Framed-IP-Address
   |  len= 6
   |  value= '\n\x9e\xfd\x9b'
   |###[ Radius Attribute ]###
   |  type= Filter-Id
   |  len= 10
   |  value= 'nat-hsi1'
   |###[ Radius Attribute ]###
   |  type= NAS-Identifier
   |  len= 31
   |  value= 'ZJWZH-MC-CMNET-BRAS12-CN_ME60'
   |###[ Radius Attribute ]###
   |  type= Acct-Status-Type
   |  len= 6
   |  value= '\x00\x00\x00\x03'
   |###[ Radius Attribute ]###
   |  type= Acct-Delay-Time
   |  len= 6
   |  value= '\x00\x00\x00\x00'
   |###[ Radius Attribute ]###
   |  type= Acct-Input-Octets
   |  len= 6
   |  value= '$\x1d|o'
   |###[ Radius Attribute ]###
   |  type= Acct-Output-Octets
   |  len= 6
   |  value= 'g\x88\xe3L'
   |###[ Radius Attribute ]###
   |  type= Acct-Session-Id
   |  len= 35
   |  value= 'ZJWZH-M01222175401439efd39c069285'
   |###[ Radius Attribute ]###
   |  type= Acct-Authentic
   |  len= 6
   |  value= '\x00\x00\x00\x01'
   |###[ Radius Attribute ]###
   |  type= Acct-Session-Time
   |  len= 6
   |  value= '\x00\x03\xa0 '
   |###[ Radius Attribute ]###
   |  type= Acct-Input-Packets
   |  len= 6
   |  value= '\x00c\xbeC'
   |###[ Radius Attribute ]###
   |  type= Acct-Output-Packets
   |  len= 6
   |  value= '\x00\x9dq0'
   |###[ Radius Attribute ]###
   |  type= 52
   |  len= 6
   |  value= '\x00\x00\x00\x00'
   |###[ Radius Attribute ]###
   |  type= 53
   |  len= 6
   |  value= '\x00\x00\x00\x03'
   |###[ Radius Attribute ]###
   |  type= 55
   |  len= 6
   |  value= 'S\xbbGk'
   |###[ Radius Attribute ]###
   |  type= NAS-Port-Type
   |  len= 6
   |  value= '\x00\x00\x00\x0f'
   |###[ Radius Attribute ]###
   |  type= Calling-Station-Id
   |  len= 19
   |  value= 'c8:3a:35:4f:30:d8'
   |###[ Radius Attribute ]###
   |  type= 87
   |  len= 52
   |  value= 'slot=1;subslot=2;port=22;vlanid=1439;vlanid2=1754;'
   |###[ Radius Attribute ]###
   |  type= Service-Type
   |  len= 6
   |  value= '\x00\x00\x00\x02'
   |###[ Radius Attribute ]###
   |  type= Framed-Protocol
   |  len= 6
   |  value= '\x00\x00\x00\x01'
   |###[ Radius Attribute ]###
   |  type= Acct-Link-Count
   |  len= 6
   |  value= '\x00\x00\x00\x00'
   |###[ Radius Attribute ]###
   |  type= Idle-Timeout
   |  len= 6
   |  value= '\x00\x00\x00\x00'
   |###[ Radius Attribute ]###
   |  type= Session-Timeout
   |  len= 6
   |  value= '\x00\t:\x80'
   |###[ Radius Attribute ]###
   |  type= Vendor-Specific
   |  len= 193
   |  value= '\x00\x00\x07\xdb<"10.158.253.155 c8:3a:35:4f:30:d8\x03\x06\x00@\x02\xb8\x02\x06\x00@\x02\xb8\x06\x06\x00@\x02\xb8\x05\x06\x00@\x02\xb8\x16\x06\x00\x00\x00\x0f\x1a\x06\x00\x01\x0e\xa5\x8a\x08nat444T\x06\x00\x00\x00\x00=\x06\x00\x00\x00\x0f>\x06\x00\x00\x00\x0f\x90\x06\x00\x00\x00\x00\x91\x06\x00\x00\x00\x00\x92\x06\x00\x00\x00\x00\x93\x06\x00\x00\x00\x00\x94\x06\x00\x00\x00\x00\x95\x06\x00\x00\x00\x00\x99\x13c8:3a:35:4f:30:d8\x9f\x06\x00\x00\x00\x00\x01\x06\x01@\x00\x00M\x06\x00_\xc2\x88\xa1\x06\xb7\xf5#]\xa2\x06\x00\x004\x00\xa3\x06\x00\x00C\xff'
radius-acct     1813/tcp        radacct         # Radius Accounting
radius-acct     1813/udp        radacct
 rad = Radius(pkts[0]['Raw'].load)
 bind_layers(TCP, Radius, dport=1813)
 bind_layers(UDP, Radius, dport=1813)
>>> Radius(pkts[0][Raw].load).show()
###[ Radius ]###
  code= Accounting-Request
  id= 59
  len= 495
  authenticator= 'na\r\xa5\xb0w\x05\xbaU]t\x9a9k\x1c<'
###[ Raw ]###
     load= '\x01\x0fwzcna06629197\x05\x06\x01!e\x9f\x04\x06\xdd\x83\xe8\x0c\x08\x06\n\x9e\xfd\x9b\x0b\nnat-hsi1 \x1fZJWZH-MC-CMNET-BRAS12-CN_ME60(\x06\x00\x00\x00\x03)\x06\x00\x00\x00\x00*\x06$\x1d|o+\x06g\x88\xe3L,#ZJWZH-M01222175401439efd39c069285-\x06\x00\x00\x00\x01.\x06\x00\x03\xa0 /\x06\x00c\xbeC0\x06\x00\x9dq04\x06\x00\x00\x00\x005\x06\x00\x00\x00\x037\x06S\xbbGk=\x06\x00\x00\x00\x0f\x1f\x13c8:3a:35:4f:30:d8W4slot=1;subslot=2;port=22;vlanid=1439;vlanid2=1754;\x06\x06\x00\x00\x00\x02\x07\x06\x00\x00\x00\x013\x06\x00\x00\x00\x00\x1c\x06\x00\x00\x00\x00\x1b\x06\x00\t:\x80\x1a\xc1\x00\x00\x07\xdb<"10.158.253.155 c8:3a:35:4f:30:d8\x03\x06\x00@\x02\xb8\x02\x06\x00@\x02\xb8\x06\x06\x00@\x02\xb8\x05\x06\x00@\x02\xb8\x16\x06\x00\x00\x00\x0f\x1a\x06\x00\x01\x0e\xa5\x8a\x08nat444T\x06\x00\x00\x00\x00=\x06\x00\x00\x00\x0f>\x06\x00\x00\x00\x0f\x90\x06\x00\x00\x00\x00\x91\x06\x00\x00\x00\x00\x92\x06\x00\x00\x00\x00\x93\x06\x00\x00\x00\x00\x94\x06\x00\x00\x00\x00\x95\x06\x00\x00\x00\x00\x99\x13c8:3a:35:4f:30:d8\x9f\x06\x00\x00\x00\x00\x01\x06\x01@\x00\x00M\x06\x00_\xc2\x88\xa1\x06\xb7\xf5#]\xa2\x06\x00\x004\x00\xa3\x06\x00\x00C\xff'