0

所以我在 linux 上使用 scapy,以便在我成功开始 3 路 TCP 握手后向服务器发送 IPv6 HTTP 请求。

如果没有扩展标头(我正在使用 ipv6 执行此操作),则 http 请求成功返回,但如果有,则我没有得到任何响应。我怀疑服务器会丢弃数据包,因为我将它发送到世界顶级服务器(启用 ipv6 的前 1000 台服务器)作为我论文的一部分,以查看它们的兼容性。这可能是配置错误。

atm 格式为:

我创建了一个 IPv6 数据包/IPv6ExtHdrRouting()。

长话短说,我使用了所有 4 个可用的扩展标头,但我没有收到任何回复,如果我不使用,我会收到完整的回复。为什么我的数据包会被丢弃?

所有的数据包都是在没有任何参数的情况下发送的。如果这是问题所在,您能否向我展示每个扩展标头的示例初始化以便获得响应?

编辑

我的代码非常复杂,毕竟运行了所有程序但是我做了这样的事情:

site[:-1] 是一个网站,即 www.google.com

ip 是带有扩展标头的 ipv6 地址。

如您所见,3 次握手没有扩展标头,当我执行 HTTP 请求时,我使用带有扩展标头的 IP。

带有扩展头的 ip 看起来像这样(没有较低级别的详细信息,例如 TCP 等):

IPv6(dst=...)/IPv6ExtHdrHopByHop()

or 
IPv6(dst=...)/IPv6ExtHdrHopByHop()/IPv6ExtHdrFragment()


                    destination=getIPv6Addr(site[:-1])
                    ip.dst=destination
                    syn = IPv6(dst=getIPv6Addr(site[:-1]))/TCP(sport=12345,dport=80, flags='S', seq=1000)#flag S is syn packet
                    syn_ack_rcv = sr1(syn,timeout=1)


                    my_ack = syn_ack_rcv.seq + 1
                    ack=IPv6(dst=getIPv6Addr(site[:-1]))/TCP(sport=12345,dport=80, flags='A', seq=1001, ack=my_ack)#flag S is syn packet
                    send(ack)    

                    httpRequest = 'GET / HTTP/1.1\r\nHost:' +site[:-1] +"\r\n\r\n"
                    http=ip/TCP(sport=11235,dport=80,seq=1002, ack=my_ack)/httpRequest
                    answers = sr1(http,timeout=1)
4

0 回答 0