首页 > Web开发 > 详细

使用libnet_build_tcp_options设置options数据

时间:2016-07-03 15:56:51      阅读:452      评论:0      收藏:0      [点我收藏+]

在使用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数据

原文:http://zhuminghui.blog.51cto.com/3838075/1795265

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!