千家信息网

如何使用libnet_build_tcp_options设置options数据

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章将为大家详细讲解有关如何使用libnet_build_tcp_options设置options数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在使用lib
千家信息网最后更新 2025年01月18日如何使用libnet_build_tcp_options设置options数据

这篇文章将为大家详细讲解有关如何使用libnet_build_tcp_options设置options数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在使用libnet发送TCP SYN数据时,一般默认不设置options信息,即没有mss和时间戳。

在某些IDC机房,这些数据会被拦截掉。出现的现象是使用telnet访问没有问题,但是libnet发送SYN数据包没有回应。需要在发包的时候设置options信息。libnet提供了libnet_builf_tcp_options来进行设置。

uint8_t payload[20] = {0x00};static int set_options_payload(uint8_t *payload,uint32_t timeval,uint16_t mss){    int len = 0;        //set mss value    payload[len++] = 0x02;    payload[len++] = 0x04;    payload[len++] = (uint8_t)((mss >> 8) & 0xFF);    payload[len++] = (uint8_t)(mss & 0xFF);        //set SACK    payload[len++] = 0x04;    payload[len++] = 0x02;        //set timeval    payload[len++] = 0x08;    payload[len++] = 0x0a;    payload[len++] = (uint8_t)((timeval >> 24) & 0xFF);    payload[len++] = (uint8_t)((timeval >> 16) & 0xFF);    payload[len++] = (uint8_t)((timeval >> 8) & 0xFF);    payload[len++] = (uint8_t)(timeval & 0xFF);    len+=4;        //set NOP    payload[len++] = 0x01;        //set Window scale    payload[len++] = 0x03;    payload[len++] = 0x03;    payload[len] = 0x07;        return 0;}r = libnet_build_tcp_options(            payload,            20,            l,            0);

关于"如何使用libnet_build_tcp_options设置options数据"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0