>>> 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'


上面的输出是从python scapy解析的,[Raw]部分是我关心的问题。我需要识别[原始]部分中的每个字段,然后对其进行修改,有人可以帮忙吗?谢谢!

最佳答案

更新

Scapy直到v2.3.1仅具有基本Radius层,这些基本Radius层未注册到Scapy中,无法根据半径端口自动进行半径解剖。跳到最后以参考scapy<=2.3.1的方式获取此问题的原始答案。

Scapy v2.3.2带有“半径”和“半径属性”图层,这些图层绑定到半径端口以进行自动解剖。因此,请更新Scapy,然后重试。

pip install --upgrade scapy


这是使用此版本的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'


原始答案引用船长
Scapy带有基本的Radius图层,但似乎它们并未自动绑定到radius端口。这意味着您将必须a)手动剖析[Raw]图层作为Radius()或b)将半径图层绑定到radius-acct端口。

radius-acct     1813/tcp        radacct         # Radius Accounting
radius-acct     1813/udp        radacct


a)手动将Raw分解为Radius

 rad = Radius(pkts[0]['Raw'].load)


b)将Radius层绑定到dst端口1813以进行自动解剖:

 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'

关于python - 如何从pcap文件转换Raw零件为普通格式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34846817/

10-14 19:08