在 MQTT 上使用 Scapy 创建客户端
Create a client by using Scapy on MQTT
我正在努力通过将 scapy 用于 MQTT 网络来创建合法客户端。我实现了 3 次握手和与 MQTT 代理的可能连接(代理完全正常工作,我用另一个客户端测试了它)。这是我的代码:
from scapy.contrib.mqtt import *
from scapy.all import send, sendp, IP, TCP, Ether, sr, sr1
seq = 12345
src='192.168.1.90'
dst='192.168.1.91'
sport = 1040
dport=1883
pkt=IP(src=src, dst=dst)
SYN=pkt/TCP(sport=sport, dport=dport, flags="S")
SYNACK=sr1(SYN)
ACK=pkt/TCP(sport=sport, dport=dport, flags="A", seq=SYNACK.ack, ack=SYNACK.seq + 1)
send(ACK)
payload_packet = TCP(sport=sport, dport=dport, flags='A', seq=ACK.ack, ack=ACK.seq + 1)
mqtt_pkt = MQTTConnect(clientId='my_client_id')
reply, error = sr(pkt/payload_packet/mqtt_pkt, multi=1, timeout=1)
for r in reply:
r[0].show2()
r[1].show2()
此代码无法将客户端连接到 MQTT 代理,因为软件会在 ACK 数据包之前发送 RST。请看下图。
Wireshark 流程:
你能帮帮我吗?提前致谢
当您自己的机器看到来自您的 TCP partenaire 的 syn 时,它正在发送 TCP 重置。
你需要做的是通知你的内核你想使用一个特定的端口。
在 linux 中,它是通过以下方式完成的:
sudo iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
# to see the result:
sudo iptables -L
参考:https://www.fir3net.com/Programming/Python/how-to-build-a-tcp-connection-in-scapy.html
我正在努力通过将 scapy 用于 MQTT 网络来创建合法客户端。我实现了 3 次握手和与 MQTT 代理的可能连接(代理完全正常工作,我用另一个客户端测试了它)。这是我的代码:
from scapy.contrib.mqtt import *
from scapy.all import send, sendp, IP, TCP, Ether, sr, sr1
seq = 12345
src='192.168.1.90'
dst='192.168.1.91'
sport = 1040
dport=1883
pkt=IP(src=src, dst=dst)
SYN=pkt/TCP(sport=sport, dport=dport, flags="S")
SYNACK=sr1(SYN)
ACK=pkt/TCP(sport=sport, dport=dport, flags="A", seq=SYNACK.ack, ack=SYNACK.seq + 1)
send(ACK)
payload_packet = TCP(sport=sport, dport=dport, flags='A', seq=ACK.ack, ack=ACK.seq + 1)
mqtt_pkt = MQTTConnect(clientId='my_client_id')
reply, error = sr(pkt/payload_packet/mqtt_pkt, multi=1, timeout=1)
for r in reply:
r[0].show2()
r[1].show2()
此代码无法将客户端连接到 MQTT 代理,因为软件会在 ACK 数据包之前发送 RST。请看下图。
Wireshark 流程:
你能帮帮我吗?提前致谢
当您自己的机器看到来自您的 TCP partenaire 的 syn 时,它正在发送 TCP 重置。
你需要做的是通知你的内核你想使用一个特定的端口。 在 linux 中,它是通过以下方式完成的:
sudo iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
# to see the result:
sudo iptables -L
参考:https://www.fir3net.com/Programming/Python/how-to-build-a-tcp-connection-in-scapy.html