我正在使用Scapy(以下代码)捕获网络上的IP / 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 :(得分: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()
。