且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

确认scapy中数据的确认号

更新时间: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)