2024-05-19 02:25:20 发布
网友
如果你想做一个完整的三方握手,你必须手动完成。
从你的SYN包开始:
>>> syn = IP(dst='www.google.com') / TCP(dport=80, flags='S') >>> syn <IP frag=0 proto=tcp dst=Net('www.google.com') |<TCP dport=www flags=S |>>
然后从服务器接收SYN-ACK包,sr1工作。然后发送HTTP GET请求:
>>> syn_ack = sr1(syn) Begin emission: Finished to send 1 packets. * Received 1 packets, got 1 answers, remaining 0 packets >>> syn_ack <IP version=4L ihl=5L tos=0x0 len=44 id=424 flags= frag=0L ttl=55 proto=tcp chksum=0x2caa src=74.125.226.148 dst=10.20.30.40 options=[] |<TCP sport=www dport=ftp_data seq=3833491143 ack=1 dataofs=6L reserved=0L flags=SA window=5720 chksum=0xd8b6 urgptr=0 options=[('MSS', 1430)] |<Padding load='\x00\x00' |>>>
然后设置TCP序列号和ack号并发送GET:
getStr = 'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n' request = IP(dst='www.google.com') / TCP(dport=80, sport=syn_ack[TCP].dport, seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A') / getStr reply = sr1(request)
FTR,从Scapy 2.4.3开始,在名为“TCP_client”的util中实现了对HTTP数据包的剖析,以自动执行3次握手。
虽然它不像上面的答案那样教诲人,但看一眼也没什么坏处:https://scapy.readthedocs.io/en/latest/layers/http.html#use-scapy-to-send-receive-http-1-x
load_layer("http") req = HTTP()/HTTPRequest( Accept_Encoding=b'gzip, deflate', Cache_Control=b'no-cache', Connection=b'keep-alive', Host=b'www.secdev.org', Pragma=b'no-cache' ) a = TCP_client.tcplink(HTTP, "www.secdev.org", 80) answser = a.sr1(req) a.close()
你看过the tutorial吗?只是复制和粘贴,这看起来像是要组合一个HTTP请求:
>>> a=Ether()/IP(dst="www.slashdot.org")/TCP()/"GET /index.html HTTP/1.0 \n\n"
如果你想做一个完整的三方握手,你必须手动完成。
从你的SYN包开始:
然后从服务器接收SYN-ACK包,sr1工作。然后发送HTTP GET请求:
然后设置TCP序列号和ack号并发送GET:
FTR,从Scapy 2.4.3开始,在名为“TCP_client”的util中实现了对HTTP数据包的剖析,以自动执行3次握手。
虽然它不像上面的答案那样教诲人,但看一眼也没什么坏处:https://scapy.readthedocs.io/en/latest/layers/http.html#use-scapy-to-send-receive-http-1-x
你看过the tutorial吗?只是复制和粘贴,这看起来像是要组合一个HTTP请求:
相关问题 更多 >
编程相关推荐