使用Scapy

时间:2018-03-13 00:33:05

标签: python python-3.x networking tcp scapy

我一直在玩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个数据包。"然后打印一个点流。有谁知道我做错了什么?

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,所以请等待你的回答。