我一直在玩scapy,我有一个小问题...... 假设我在服务器上打开了一个套接字,比如在IP地址为1.2.3.4的端口80,并说它正在监听并记录任何连接。 现在,我想使用scapy从我的客户端(比如2.3.4.5)连接到这个端口,所以我必须启动三次握手,我一直尝试使用以下代码执行:
ip=IP(src="2.3.4.5", dst="1.2.3.4")
TCP_SYN=TCP(sport=1500, dport=80, flags="S", seq=100)
TCP_SYNACK=sr1(ip/TCP_SYN)
my_ack = TCP_SYNACK.seq + 1
TCP_ACK=TCP(sport=1500, dport=80, flags="A", seq=101, ack=my_ack)
send(TCP_ACK/ip)
my_payload="space for rent!"
TCP_PUSH=TCP(sport=1500, dport=80, flags="PA", seq=102, ack=my_ack)
sendp(ip/TCP_PUSH/my_payload)
但我从来没有收到服务器的回复;控制台只打印"完成发送1个数据包。"然后打印一个点流。有谁知道我做错了什么?
答案 0 :(得分:0)
1)看起来“发送”和“sendp”无法接收答案。
2)所以你可以试试这个:
def isPalindrome(string):
return string == string[::-1]
此打印之一应显示服务器的响应。
3)您可以尝试将“发送”和“sendp”更改为“sr”或“sr1”,然后打印结果:
ip=IP(src="2.3.4.5", dst="1.2.3.4")
TCP_SYN=TCP(sport=1500, dport=80, flags="S", seq=100)
TCP_SYNACK=sr1(ip/TCP_SYN)
print(TCP_SYNACK)
print(TCP_SYNACK.show())
我不确定这是否有效,以前从未使用过scapy,所以请等待你的回答。