弦乐时的scapy编码

时间:2011-10-18 16:53:56

标签: encoding packet scapy

在scapy中将数据包串起来时,下面的编码是什么?这肯定不是十六进制。

  
    
      

str(IP())'E \ x00 \ x00 \ x14 \ x00 \ x01 \ x00 \ x00 @ \ x00 | \ xe7 \ x7f \ x00 \ x00 \ x01 \ x7f \ x00 \ x00 \ x01'

    
  

1 个答案:

答案 0 :(得分:4)

\ x是十六进制表示法。在这种情况下,当您使用str(IP())时,您正在尝试将数据包数据转换为不完全有效的字符串,因为并非每个原始十六进制数据都可以在ASCII表中找到,以用字母替换它,因此任何hex都可以转换将以这种格式显示\ x14。

我认为以下示例将有所帮助:

  • 使用scapy方法查看数据包摘要
  • 将数据包数据编码为十六进制格式,以便使用python方法进行查看

    Welcome to Scapy (2.1.1-dev)
    >>> pkt=IP()
    >>> pkt.summary()
    '127.0.0.1 > 127.0.0.1 ip'
    >>> data=str(pkt)
    >>> data.encode('hex')
    '450000140001000040007ce77f0000017f000001'
    >>>
    

考虑以下几点:

  • 在SCAPY中如果创建IP层而不确定源和目标,则将环回地址设置为默认值,如示例所示     '127.0.0.1> 127.0.0.1 ip'
  • .summary()是一个Scapy方法
  • str(),。encode是一个python方法