libnet发包checksum不正确

ray_mon 2012-01-11 10:04:04
Mint+Libnet 1.14
代码如下:


#include <iostream>
using namespace std;
#include <libnet.h>
#include <pcap/pcap.h>

int main(int argc,char ** argv)
{
pcap_if_t *alldevs = NULL;
char errbuf[PCAP_ERRBUF_SIZE] = {0};

if(-1 == pcap_findalldevs(&alldevs,errbuf))
{
cout<<"Find devices failed"<<endl;
return -1;
}

for(pcap_if_t *d = alldevs;d != NULL;d = d->next)
{
cout<<d->name<<endl;
}

libnet_t *l = libnet_init(LIBNET_RAW4,alldevs->next->name,errbuf);
if(NULL == l)
{
cout<<"Libnet initial failed"<<endl;
return -1;
}


libnet_build_tcp(8000,80,1234,0,TH_SYN,1460,IPPROTO_TCP,0,LIBNET_TCP_H,NULL,0,l,0);
libnet_build_tcp_options(NULL,0,l,0);

libnet_build_ipv4(LIBNET_TCP_H,IPTOS_LOWDELAY,32,0,246,IPPROTO_TCP,0,inet_addr("192.168.0.2"),inet_addr("119.75.218.77"),NULL,0,l,0);

libnet_write(l);

return 0;
}


用wireshark抓包时,不管程序怎么改,checksum总是0x0006。

我觉得应该是没有调用计算校验和的函数造成的,但是libnet 的docs里并没有给出相关的函数。
而且奇怪的是,libnet里介绍的诸如libnet_init_packet()这些函数,我这里并没有。很奇怪...

希望做过的朋友能指点一二,小弟感激不尽。
...全文
177 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dynald 2014-01-04
  • 打赏
  • 举报
回复
没有做checksum,我现在正在想搞清楚checksum和libnet_build_ipv4结合在一起怎么用。你有答案了吗?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧