2011-10-18 86 views
3

下面的編碼是什麼,當你在scapy中編寫一個數據包時,你會得到什麼?這當然不是十六進制。scapy編碼時的編碼

STR(IP())「E \ X00 \ X00 \ X14 \ X00 \ X01 \ X00 \ X00 @ \ X00 | \ XE7 \ 0x7F部分\ X00 \ X00 \ X01 \ 0x7F部分\ X00 \ X00 \ X01'

回答

4

的\ x是十六進制表示法。在這種情況下,當您使用str(IP())時,您試圖將數據包數據轉換爲不完全有效的字符串,因爲不能在ASCII表中找到每個原始十六進制數據以用一個字母代替它,因此任何十六進制將不會被轉換成這種格式\ 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的,如果你沒有確定所述源和目的地的環回地址將被設置爲默認值兩者中所示的例子中 「127.0.0.1> 127.0.0.1 IP」
  • 。總結創建IP層()是一個Scapy方法
  • str(),.encode是一個python方法