使用libnet_build_tcp_options设置options数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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数据的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)