使用Python scapy发送TCP RST以防止客户端访问问题

时间:2017-04-09 09:28:07

标签: python scapy

我使用SCAPY编写部署在WEB服务器中的程序,并希望使用SCAPY发送TCP RST来阻止某些特定的HTTP客户端访问。

运行程序后,客户端使用Telnet连接服务器WEB监听端口可以是SCAPY程序中断,但使用浏览器访问不能中断。为什么会这样?

代码如下:

# coding: utf-8

# web server  : 10.28.16.20 ;
# http client : 10.28.1.70;

from scapy.all import *
def pkgs(pkg):
    if pkg.getlayer(TCP) and pkg[IP].dst=="10.28.16.20" and "10.28.1.70" in pkg[IP].src:
        resp=IP(dst=pkg[IP].src,src=pkg[IP].dst)/TCP(dport=pkg[TCP].sport,sport=pkg[TCP].dport,flags="RA",seq=pkg[TCP].ack,ack=pkg[TCP].seq+(len(pkg[TCP].payload) if pkg.getlayer(Raw) else 1))
        send(resp,count=2,verbose=0)
if __name__=="__main__":
    conf.L3socket=L3RawSocket
    sniff(filter="tcp",prn=pkgs,store=0)

Program code screenshot

2 个答案:

答案 0 :(得分:0)

我已经解决了它。进口线程。

答案 1 :(得分:0)

我认为最好的方法是进入“ Scapy” 然后粘贴该代码并输入:

#!/usr/bin/python
from scapy.all import *
ip = IP(src="10.28.16.20", dst="10.28.1.70")
tcp = TCP(sport=80, dport=@@@@, flags=@@@@, seq=@@@@, ack=@@@@)
pkt = ip/tcp
ls(pkt)
send(pkt,verbose=0)

您需要将 dport 更改为PC的源端口,将 flags 更改为您要执行的操作, seq&ack 跟随数据包您从这里开始。