python - 如何使用python发送原始帧

标签 python sockets scapy

我有一个要发送的原始以太网帧

我该怎么办?我尝试发送帧的十六进制值,但是我仍然无法控制包含src/dst地址和端口的数据包报头

import socket

# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
addr = ('46.165.204.237', 10000)

# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))

netpacket = '\xDE\xB0\x7B\xE5\xA7\xCD\x4C\x17\xEB\x07\x0D\xBC\x08\x00\x45\x00\x00\x92\x68\x94\x40\x00\x78\x06\xDC\x94\x2E\xA5\xCC\xED\xC0\xA8\x01\x02\x27\x10\x07\xC8\x04\xD7\xEA\xEA\xC3\x2A\x4E\xA2\x50\x18\x01\x02\x39\xB0\x00\x00\x3C\x3F\x78\x6D\x6C\x20\x76\x65\x72\x73\x69\x6F\x6E\x3D\x22\x31\x2E\x30\x22\x3F\x3E\x3C\x50\x61\x63\x6B\x65\x74\x3E\x3C\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E\x3E\x33\x3C\x2F\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E\x3E\x3C\x64\x61\x74\x61\x3E\x33\x24\x30\x24\x30\x24\x30\x24\x30\x24\x30\x3C\x2F\x64\x61\x74\x61\x3E\x3C\x65\x78\x74\x64\x61\x74\x61\x3E\x3C\x2F\x65\x78\x74\x64\x61\x74\x61\x3E\x3C\x2F\x50\x61\x63\x6B\x65\x74\x3E'
#netpaket = netpacket.encode('UTF-8')
s.sendto(netpacket.encode('UTF-8'), addr)

Python中是否有诸如sendRaw()或sendRawFrame()之类的函数?

我知道scapy可以处理这个问题,但是我需要这样做很多次,并且每次都要处理各种有效载荷数据。 scapy 如何自动化?我的意思是启动scapy的python脚本会创建带有一些有效负载的数据包并将其发送。
scapy.py
packet1 = IP(dst='46.165.204.237')/TCP(sport=1992, dport=10000)/'<?xml version="1.0"?><Packet><operation>99</operation><data><![CDATA[8 fast]]></data><extdata><![CDATA[]]></extdata></Packet>.'
send(packet1)

其目标是从已使用的端口发送数据包。是否有针对该问题的更好解决方案?

题外话:也许有人知道如何通过Windows中的Open socket id(不仅在python中)发送数据包?

最佳答案

您可以使用Raw层为Scapy提供原始输入。

netpacket = Raw('\xDE\xB0...')

要在以太网层发送数据包-请参见documentation for sendp .
sendp(netpacket, iface="eth1")

关于python - 如何使用python发送原始帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20030277/

相关文章:

python - 基于联合条件的 Pandas 切片行

java - 在 Java 中通过套接字有效地发送大的 int[]

python - 带有自定义选项的 scapy dhcp 请求

python - 整数数组作为 Scapy 自定义字段

python - Scapy 嗅探过滤器不起作用

Python sys.stdin.read(max) 阻塞直到读到max(如果max>=0),阻塞直到EOF else,但是select表示有数据要读取

Python - 如果包含列表中元组的元素,则仅打印行

python - 如何简单地杀死 python-tensorflow 进程并释放内存?

c++ - 使用 CreateFile 打开套接字

macos - OSX Lion 中的套接字与 xcode4?