2016-06-25 6 views
0

Я использую Scapy (ниже кода), чтобы захватить IP/TCP-пакеты по сети:Как вычислить контрольную сумму пакета TCP с помощью Python?

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() слоя, замените sendp() на send().

Смежные вопросы