前提条件:能够自己写出截取网络数据的程序。并对截到的包进行处理。比如抓到以下的数据包:
0000 0E 00 EE 02 02 00 00 00 04 00 00 00 08 00 00 00
0010 00 00 00 00 02 00 00 00 18 00 00 00 01 00 00 00 然后把包中的 08 00 00 00 02 00 00 00 18 00 00 00
筛选出来。用一个字符代替。然后存到一个数据库中。具体详情请与我联系详谈有能力的高手请加我QQ:25091 或者给我email:[email protected]
0000 0E 00 EE 02 02 00 00 00 04 00 00 00 08 00 00 00
0010 00 00 00 00 02 00 00 00 18 00 00 00 01 00 00 00 然后把包中的 08 00 00 00 02 00 00 00 18 00 00 00
筛选出来。用一个字符代替。然后存到一个数据库中。具体详情请与我联系详谈有能力的高手请加我QQ:25091 或者给我email:[email protected]
解决方案 »
- CPropertyPage类对象对话框标题栏的位置问题
- 求助,下载一个酒店客房管理系统,双击.exe文件打不开,提示未发现数据源名称并且未指定默认驱动程序
- VC++工作空间的选项
- 已知一段弧线的起点和终点坐标及半径,请问如何绘制该段弧线?
- 谁有www.vckbase.com 或者 www.vccode.com 类视的网站代码啊???
- 50分帮我解决一个简单的winsock问题,谢谢了。
- 请教:怎样使console程序的黑窗口不显示。因为要抓图,每次抓到的都有console窗口。
- 关于new和malloc为什么一个行一个不行呢?
- minifilter实现文件权限控制的问题
- 请问各位朋友:在武汉,哪里能买到《Visual C++技术内幕》(第四版)?
- 对于ShowMessageA 和ShowMessageW的困惑
- 求救,activeX的发布问题(焦急等待高手)
#include "pcapinc.h"
#include "enumnetdevice.h"//这个是read_packet后的返回值。
#define READ_SUCC 1
#define READ_TIMEOUT 0
#define READ_ERROR -1
#define READ_EOF -2
class CCap
{
public:
CCap(void);
~CCap(void);
//这个方法要在那些私有数据成员赋值后调用
bool OpenLive();
void Close()
{
pcap_close(m_handle);
}
//这个方法要在上一个方法调用后调用。
bool SetFilter(char *filter); //这是两个主要的方法,提倡用第二个而不是第一个。
void Loop(pfn_cap_handle func,int readpackets=0);
int Read_Packet(t_packet_header **pkt_header,u_char **pkt_data);
public:
//这个方法是为SetFilter服务的,可以不用的。
void SetNetaddress(CEnumNetDevice &devices,int num){m_paddr=devices.GetAddress(num);} void SetSnaplen(int len){m_snaplen=len;}
void SetTimeout(int timeout){m_readtimeout=timeout;}
void SetPromiscuous(bool pro=true){m_promiscuous=(pro==true)? 1:0;}
void SetNetdevice(const char *name){m_name=name;}
void SetNetdevice(CEnumNetDevice &devices,int num)
{
SetNetaddress(devices,num);
m_name=devices.GetName(num);
}
private:
t_cap_handle m_handle;
const t_net_address* m_paddr;
private:
int m_snaplen;
int m_promiscuous;
int m_readtimeout;
const char *m_name;
};
#include "cap.h"CCap::CCap(void)
{
m_name=NULL;
m_snaplen=65536;
m_promiscuous=1;
m_readtimeout=2000; m_paddr=NULL;
m_handle=NULL;
}CCap::~CCap(void)
{
}
bool CCap::OpenLive()
{
m_handle=pcap_open_live(m_name,m_snaplen,m_promiscuous,m_readtimeout,errbuf);
if(NULL==m_handle)
return false;
return true;
}bool CCap::SetFilter(char *filter)
{
u_int netmask;
struct bpf_program fcode;
if(m_paddr != NULL)
netmask=((struct sockaddr_in *)(m_paddr->netmask))->sin_addr.S_un.S_addr;
else
netmask=0xffffff;
if(pcap_compile(m_handle, &fcode, filter, 1, netmask)<0)
return false;
if(pcap_setfilter(m_handle, &fcode)<0)
return false;
return true;
}void CCap::Loop(pfn_cap_handle func,int readpackets)
{
pcap_loop(m_handle,readpackets,func,NULL);
}int CCap::Read_Packet(t_packet_header **pkt_header,u_char **pkt_data)
{
return pcap_next_ex(m_handle,pkt_header,pkt_data);
}
不是要sniff吧
不要乱给别人钱,这个问题不难,原理和上面讲差不多,不过如果你不知对方的端口,这时你要用端口分析工具得知端口信息。
这么说来你可以写出这样的程序??不知可有空。请与我联系。或者留下你的QQ:
不要断了大家的财路,谢谢!!LanHaoTian(蓝浩天)同志:
可以对项目进行招标合作。
我做过分析端口的程序,并且是采用线程的,
至于别的我最近比较忙,
不好意思。