如何在c中创建自定义数据包?

5 c tcp packet

我正在尝试使用TCP/IP协议使用C创建自定义数据包.当我说自定义时,我的意思是能够从数据包中更改任何值; 例如:MAC,IP地址等.

我试着四处寻找,但我找不到任何实际指导我或给我示例源代码的东西.

如何创建自定义数据包或在哪里寻找指导?

abl*_*igh 3

执行此操作的一个相对简单的便携式工具是libpcap. 它以接收原始数据包而闻名(实际上,您最好先使用它,因为您可以将收到的数据包与您手工制作的数据包进行比较),但鲜为人知的pcap_sendpacket实际上会发送原始数据包。

如果您想自己从头开始,请使用AF_PACKET和打开一个套接字SOCK_RAW(这适用于 Linux,其他操作系统可能会有所不同) - 例如,请参阅http://austinmarton.wordpress.com/2011/09/14/sending-raw-ethernet -packets-from-a-specific-interface-in-c-on-linux/以及完整代码https://gist.github.com/austinmarton/1922600。请注意,您需要成为 root(或更准确地说具有适当的能力)才能执行此操作。

另请注意,如果您尝试发送原始 tcp/udp 数据包,您将遇到的一个问题是禁用网络堆栈自动处理回复(通过将其视为寻址到现有 IP 地址或尝试转发它)。