gpt4 book ai didi

python - 如何使用 scapy 欺骗 UDP 数据包中的 IP 地址

转载 作者:行者123 更新时间:2023-12-01 07:11:43 25 4
gpt4 key购买 nike

我正在测试服务器上的安全基础设施,运行一个在端口 7777 上接受 UDP 流量的应用程序。为了做到这一点,我想发送 UDP 数据包来查询有关应用程序的信息,但使用欺骗性 IP来源。

这是我尝试发送的数据包:

我尝试使用 scapy 执行此操作,但看起来另一端未收到数据包,我在端口 7777 上使用 tcpdump 监听 UDP 数据包。

这是我尝试过的代码:

from scapy.all import *
import random

D = 7777 # destination port
opcode = 'd'
target_ip = "1.1.1.1"
ips = target_ip.split('.'); # Target IP

payload = "SAMP{0}{1}{2}{3}{4}{5}{6}".format(chr(int(ips[0])), chr(int(ips[1])), chr(int(ips[2])), chr(int(ips[3])), chr(D & 0xFF), chr(D » 8 & 0xFF), opcode)

ip1 = 84
ip2 = random.randint(1,255)
ip3 = random.randint(1,255)
ip4 = random.randint(1,255)

A = str(ip1) + "." + str(ip2) + "." + str(ip3) + "." + str(ip4)

send(IP(src=A, dst=target_ip)/UDP(dport=D)/Raw(load=payload))

当我运行时,它显示“已发送 1 个数据包”,但是当我使用 tcpdump 时,我看不到另一端的数据包,如下所示:

tcpdump -t -n -v -B 99999 -i gre1 -XX udp dst port 7777

我尝试过两个不同的目标 IP,两者都打开了端口 7777。

The payload I want to send is basically 53 41 4D 50 C0 A8 C8 67 61 1E69, from a spoofed IP src.

最佳答案

仅供引用,您可以创建一个数据包模板,这会容易得多。类似的东西

class YourPacket(Packet):
fields_desc = [
StrFixedLenField("head", "SAMP", 4),
IPField("ip", "0.0.0.0"),
ShortField("port", 0),
ByteField("opcode", 0)
]

然后确保您在正确的接口(interface)上发送它。您可以将 iface=... 添加到 send()

演示:

>>> x = YourPacket(ip="192.168.200.103", port=7777, opcode=ord(b"i"))
>>> x
<YourPacket ip=192.168.200.103 port=7777 opcode=105 |>
>>> hexdump(x)
0000 53 41 4D 50 C0 A8 C8 67 1E 61 69 SAMP...g.ai
>>> send(IP()/UDP(dport=7777)/x)

关于python - 如何使用 scapy 欺骗 UDP 数据包中的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58182300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com