更新时间:2022-12-02 18:47:06
Wireshark 在其显示中使用相对数字,因此正确的 scapy 行是:
Wireshark uses relative numbers in its display so the right scapy line is :
ans_ack,unans_ack = sr(IP(dst=ip)/TCP(sport=pkt[1].dport,
dport=pkt[1].sport,
seq=rp[1].ack,
ack=rp[1].seq + tcp_seg_len,
flags="A"),
verbose=0, timeout=1)
以下代码(请参阅问题中的编辑)确实有效:
And the following code (see EDIT in the question) does work :
ip_total_len = rp.getlayer(IP).len
ip_header_len = rp.getlayer(IP).ihl * 32 / 8
tcp_header_len = rp.getlayer(TCP).dataofs * 32 / 8
tcp_seg_len = ip_total_len - ip_header_len - tcp_header_len
ans_ack,unans_ack = sr(IP(dst=ip)/TCP(sport=pkt[1].dport,
dport=pkt[1].sport,
seq=rp[1].ack,
ack=rp[1].seq + tcp_seg_len,
flags="A"),
verbose=0, timeout=1)