2016-06-25 166 views
0

我使用Scapy的(下面的代碼)來捕獲網絡上的IP/TCP報文:如何使用Python計算TCP數據包校驗和?

sniff(iface='ens33', prn=call_back, filter="ip and dst host 10.0.0.12", store=0) 

def call_back(packet): 
    ip_packet = packet['IP'] 
    tcp_packet = ip_packet['TCP'] 

當我得到了「ip_packet」,我需要它的源地址更改爲另一個,併發送出。

如何重新計算IP頭和TCP頭中的校驗和?

回答

0

Scapy的會爲你做的,只要你刪除現有的值:

def call_back(packet): 
    del packet[IP].chksum, packet[TCP].chksum 
    packet[IP].src = "1.2.3.4" 
    sendp(packet) 

如果packet不包括Ether()層並直接與IP()層開始,通過send()更換sendp()