【发布时间】:2016-05-31 00:12:40
【问题描述】:
我已经设置了一个监听port A 的服务器套接字(纯原始套接字)。客户端现在连接到此服务器。操作系统为此目的为客户端打开一个端口。假设port B 分配给了这个客户。现在我的问题是,3rd 脚本可以连接到这个port B 并发送数据。或者换句话说,我可以欺骗对客户端的响应,就好像它来自服务器一样?我尝试使用 scapy 欺骗它,但它不起作用。
server.py
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", A))
s.listen(10)
ns, cli_addr = s.accept()
time.sleep(30) # so that i can trigger my 3rd script
goodclient.py
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", A))
print s.getsockname() # to get the local port of client - B
s.recv(1024)
badboy.py
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", B)) # connection refused error
s.send("hihihi")
scapybadboy.py
pack = IP(src="localhost", dst="localhost") / TCP(sport=A, dport=B) / "Hello"
send(pack) # Packet sent but not received by the client
【问题讨论】:
标签: python sockets networking server scapy