根据 OSI 模型,数据包将分几层完成。是否可以以编程方式发送完整的 TCP 或 UDP 数据包(包括标头等)。
例如带有自定义 MAC ADD 的数据包。和发件人(请求者)的假IP?
根据 OSI 模型,数据包将分几层完成。是否可以以编程方式发送完整的 TCP 或 UDP 数据包(包括标头等)。
例如带有自定义 MAC ADD 的数据包。和发件人(请求者)的假IP?
是的。如果您使用 RAW sockets 发送它,您可以放置任何 TCP 或 UDP 数据包标头,为此您必须具有系统的root访问权限:
sock = socket(PF_INET, SOCK_RAW, IPPROTO_UDP);
或者您也可以直接使用以太网卡绕过 linux TCP 堆栈和 write() 和 read()。
问题是,如果您在 TCP 中使用假 IP,您将不会从 SYN 请求中获得响应,因为真正的 IP 会拒绝它,或者根本不会将其路由回。如果您查询“ip spoofing”关键字,您可以对此进行研究。