使用Python scapy构造tcp三次握手,遭遇系统发送rst包解决方法

使用Python scapy构造tcp三次握手,遭遇系统发送rst包解决方法

在这里插入图片描述
在使用Pyhon scapy库构造TCP时,遭遇到系统底层发送的rst包,导致三次握手无法建立情况。

在网上找了很多解决方案,linux相对好解决,直接使用
iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
可以干掉系统rst包干扰。

但在windows系统下,发现这个问题后,真的很伤脑经。

查了很多地方,都没有好的解决方案。
最终无意中将windows自带防火墙打开后,系统自发rst包消失了 :》

以上,供大家分项。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是使用 Scapy 实现 TCP 三次握手和四次挥手的示例代码: TCP 三次握手: ```python from scapy.all import * # 定义目标IP和端口 dst_ip = "192.168.1.1" dst_port = 80 # 发送 SYN 请求 syn_packet = IP(dst=dst_ip)/TCP(dport=dst_port, flags="S") syn_response = sr1(syn_packet, timeout=1) # 发送 ACK 确认 if syn_response and syn_response.haslayer(TCP): if syn_response[TCP].flags & 2: ack_packet = IP(dst=dst_ip)/TCP(dport=dst_port, flags="A", ack=syn_response[TCP].seq + 1) send(ack_packet) print("TCP three-way handshake completed successfully!") else: print("SYN-ACK not received.") else: print("No response to SYN.") ``` TCP 四次挥手: ```python from scapy.all import * # 定义目标IP和端口 dst_ip = "192.168.1.1" dst_port = 80 # 发送 FIN 请求 fin_packet = IP(dst=dst_ip)/TCP(dport=dst_port, flags="F") fin_response = sr1(fin_packet, timeout=1) # 发送 ACK 确认 if fin_response and fin_response.haslayer(TCP): if fin_response[TCP].flags & 2: ack_packet = IP(dst=dst_ip)/TCP(dport=dst_port, flags="A", ack=fin_response[TCP].seq + 1) send(ack_packet) # 发送第二个 FIN 请求 fin2_packet = IP(dst=dst_ip)/TCP(dport=dst_port, flags="F") fin2_response = sr1(fin2_packet, timeout=1) # 发送 ACK 确认 if fin2_response and fin2_response.haslayer(TCP): if fin2_response[TCP].flags & 2: ack2_packet = IP(dst=dst_ip)/TCP(dport=dst_port, flags="A", ack=fin2_response[TCP].seq + 1) send(ack2_packet) print("TCP four-way handshake completed successfully!") else: print("FIN-ACK2 not received.") else: print("No response to FIN2.") else: print("FIN-ACK not received.") else: print("No response to FIN.") ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值