我正在尝试编写自己的数据包制作软件,理想情况下,除了在操作系统上构建的内容外,我希望不使用任何外部库...
通常我们可以使用这样的教程创建套接字和网络编程...... http://www.linuxhowtos.org/C_C++/socket.htm
我的问题是,我希望能够更好地控制发送的实际数据包。 (防止操作系统指纹识别并进行渗透测试)
哪里是最好的起点。我们现在假设我们处于Linux环境中。
答案 0 :(得分:2)
最佳起点可能是man 7 raw
或man 7 packet
。创建原始数据包应该很简单;但你必须自己实现CRC生成(TCP必需,UDP可选)和路由( - >正确的接口)。
答案 1 :(得分:2)
有几种方法可以实现这一目标。它可以通过原始套接字或直接访问网络适配器内核模式驱动程序来完成。
传统上,原始套接字已被许多人选择用于制作用户定义的协议/数据包&用于注射试验。
对于使用原始套接字,您需要选择一个提供原始套接字访问和使用的系统。
原始套接字编程的典型步骤如下:
但请注意,虽然linux没有填写任何标题填充,但IP_HDRINCL存在的情况除外(即使在这里,它只会填充0的选择性字段),不同的操作系统将以不同的方式运行。因此,通常原始套接字的使用会降低可移植性的可行性。