python发送udp报文并修改源ip

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python发送udp报文并修改源ip相关的知识,希望对你有一定的参考价值。

python发送udp报文并修改源IP地址

```
import socket
import struct

# 创建udp套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 绑定源IP地址
s.bind(('192.168.0.1', 0))

# 设置报文信息
data = 'hello world!'
dst_addr = ('192.168.0.2', 80)

# 修改源IP地址
src_addr = ('192.168.0.3', 0)
s.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(src_addr[0]))

# 发送报文
s.sendto(data.encode('utf-8'), dst_addr)
```
参考技术A 假设我有一个用 python 编写的应用程序来发送 ping 或电子邮件。如何使用 Scapy 等将已发送数据包的源 IP 地址更改为假 IP 地址?

假设分配给我的 eth0 的 IP 地址是 192.168.0.100。我的电子邮件应用程序将使用此 IP 发送消息。但是,我想在这个数据包准备好发送时对其进行操作,因此它的源 IP 不是 192.168.0.100,而是 192.168.0.101。

我想在不必实现 MITM 的情况下执行此操作。

最佳答案

您可以执行以下操作:

from scapy.all import *

A = '192.168.0.101' # spoofed source IP address
B = '192.168.0.102' # destination IP address
C = 10000 # source port
D = 20000 # destination port
payload = "yada yada yada" # packet payload

spoofed_packet = IP(src=A, dst=B) / TCP(sport=C, dport=D) / payload
send(spoofed_packet)

以上是关于python发送udp报文并修改源ip的主要内容,如果未能解决你的问题,请参考以下文章

Python原始套接字编程

详解TCP与UDP

应用程序PING 发出的是( )报文。

iptables

UDP的报文结构及注意事项

UDP 协议报文格式