这个应该是你的毕业设计吧。我做的是libnet发包,也用到winpcap,你说的要求在winpcap的中文文档里面全部都有,只要把4个它给的搜伍例子结合一下应该自己看最多一个星期就弄好了。
vc6.0的sdk太老了,搭配好winpcap的环境问题很大呀!!!!我就遇到了,比如winpcap调用Windows的API中soket的一个头文件中的一信姿个结构体,但是这个结构体的声明不是winpcap需要的,或者根本就没有,类似的例子很多。
你还是先把环境搭建好吧,我现在用的vs2005在做,环境搭建容易些。
如果你坚持用6.0搭建环境(或者根本就没有搭滑漏绝建)即使别人给你了源代码你也编译过不了,错误一大堆!!!
哥们从头开始吧.......
MFC抓?肆棚那是不太现实的。有三种方式:燃雹衡
1、写驱动,进入RING0抓IRP;
2、逆向别的应用程序;
3、使用AccessPort。
3最皮做简单,因为下载下来然后监控指定串口就行了。
我刚刚做完这个程序,你太有命了给你讲讲首先 设置过滤 在pcap_compile函数中的过滤函数写上“ip and tcp”,由于你的http包陪拦也是tcp包ip的意思就是ipv4协议的。
int main(int arg, char **argv)
{
pthread_t saveHost, saveTotal, delLink
char errbuf[PCAP_ERRBUF_SIZE]
//const u_char *pkt_data
uint32_t localnet, netmask
struct bpf_program fcode
int ret
char *dev = eth0
/* 打开设备*/
if((adhandle = pcap_open_live(dev, 640, 1, 1000, errbuf) ) == NULL)
{
fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", dev)
exit(1)
}
if((pcap_lookupnet(dev, &localnet, &netmask, errbuf)) <0)
{
fprintf(stderr, "pcap_lookupnet error : %s\n", errbuf)
exit(1)
}
if((pcap_compile(adhandle, &fcode, "ip and tcp", 0, netmask)) <0)
{
fprintf(stderr, "pcap_compile error:%s\n", pcap_geterr(adhandle))
exit(1)
}
if((pcap_setfilter(adhandle, &fcode)) <0)
{
fprintf(stderr, "pcap_setfilter error:%s\n", pcap_geterr(adhandle))
exit(1)
}
pcap_loop(adhandle, 0, packet_handler, NULL)//回掉函数,处理你抓到的包
pcap_close(adhandle)
return 0
}
我qq230635800 还有不明 问我
忘记了芦悉胡给你介绍数据包了
前14位是mac地址位再20位是ip头位,再后来N位是tcp头位,具体tcp长度是结构题tcphdr中的doff*4就是tcp的头陆圆长度
再往下就是 数据了
具体你就看可以看tcp.h ip.h ethhdr.h 这三个头文件
是关于三个头的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)