赞
踩
- from scapy.all import *
-
- dst_ip = "192.168.1.1"
- dst_port = 80
- src_port = 20001
- data = "GET / HTTP/1.0/nihao \r\n\r\n"
- ##数据是我随意构造的,一个随便的http请求
- try:
- ##产生SYN包(FLAG = S 为SYN)
- spk1 = IP(dst=dst_ip)/TCP(dport=dst_port,sport=src_port,flags="S")
- res1 = sr1(spk1)
- ack1 = res1[TCP].ack
- ack2 = res1[TCP].seq + 1
- ##发送ACK(flag = A),完成三次握手
- spk2 = IP(dst=dst_ip)/TCP(dport=dst_port,sport=src_port,seq=ack1,ack=ack2,falgs="A")
- send(spk2)
- except Exception as e:
- print(e)
- ##握完手后,由你先给他发第一个数据包,需要照搬第三个包的确认号和验证号,同时flags设值为24,后面跟##数据即可
- da1 = IP(dst=dst_ip)/TCP(dport=dst_port,sport=src_port,seq=ack1,ack=ack2,flags=24)/data
- res2 = sr1(da1)
在使用Pyhon scapy库构造TCP时,遭遇到系统底层发送的rst包,导致三次握手无法建立情况。
在网上找了很多解决方案,linux相对好解决,直接使用
iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
可以干掉系统rst包干扰。
但在windows系统下,发现这个问题后,真的很伤脑经。
查了很多地方,都没有好的解决方案。
最终无意中将windows自带防火墙打开后,系统自发rst包消失了
————————————————
原文链接:https://blog.csdn.net/weixin_44704374/article/details/103492578
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。