如何使用损坏的FCS发送以太网帧?

use*_*753 8 python networking automated-tests ethernet

我不确定这是否可能,因为这可能是在硬件中处理的,但我需要发送一些有错误的以太网帧.我希望能够创建runts,jabber,misalignment和错误的FCS错误.我在Python工作.

Cha*_*ffy 9

可以在硬件中处理,但并不总是 - 即使它是,你可以关闭它; 请参阅ethtool卸载参数.

关于完全控制您创建的帧 - 查看PF_PACKET(针对一种方法)或点击驱动程序(针对另一种方法).

这是一篇关于使用PF_PACKET从Python发送手工制作帧的文章.


bri*_*ice 5

首先,禁用以太网卡的校验和:

sudo ethtool -K eth1 tx off
Run Code Online (Sandbox Code Playgroud)

然后,您从 python 发送损坏的帧:

#!/usr/bin/env python

from socket import *

#
# Ethernet Frame:
# [
#   [ Destination address, 6 bytes ]
#   [ Source address, 6 bytes      ]
#   [ Ethertype, 2 bytes           ]
#   [ Payload, 40 to 1500 bytes    ]
#   [ 32 bit CRC chcksum, 4 bytes  ]
# ]
#

s = socket(AF_PACKET, SOCK_RAW)
s.bind(("eth1", 0))
src_addr = "\x01\x02\x03\x04\x05\x06"
dst_addr = "\x01\x02\x03\x04\x05\x06"
payload = ("["*30)+"PAYLOAD"+("]"*30)
checksum = "\x00\x00\x00\x00"
ethertype = "\x08\x01"
s.send(dst_addr+src_addr+ethertype+payload+checksum)
Run Code Online (Sandbox Code Playgroud)

看到一个类似的问题