请大家给我个思路 本人刚学MFC,想做一个抓包的程序,希望能看到包的内容,但感觉无从下手,在这里向各位大侠请教,谢谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 baojian88888(机器人),你能说得再详细些吗?谢谢了 http://dev.csdn.net/develop/article/21/21352.shtm http://www.xfocus.net/articles/200209/447.html 首先这与MFC没什么关系,只要会C/C++就行,方法有多种:1、用Wincap,它是一个SDK开发包,功能比较强大,可抓到MAC以上层的包,网上例子也很多;2、用原始套接字(RAW_SOCKET),使用起来比较容易,但只能catch到IP以上层的包,例子也很多;3、用NDIS,比较难,但功能最强大。 学什么MFC,不要学那个东西了,还是把win32给熟悉了要紧,建议你还是学习win32 程序设计. 代码如下:int decode(int len,unsigned char *pst){ int fullline,remainline,i,j; if(len<0)return -1; fullline=len/16; remainline=len%16; TRACE("\n"); for(i=0;i<fullline;i++) { for(j=0;j<16;j++) TRACE("%02X ",pst[i*16+j]); TRACE("\t"); for(j=0;j<16;j++) { if(pst[i*16+j]<32||pst[i*16+j]>128) TRACE("%c",'.'); else TRACE("%c",pst[i*16+j]); } TRACE("\n"); } for(j=0;j<remainline;j++) TRACE("%02X ",pst[i*16+j]); for(j=remainline;j<16;j++) TRACE(" "); TRACE("\t"); for(j=0;j<remainline;j++) { if(pst[i*16+j]<32||pst[i*16+j]>128) TRACE("%c",'.'); else TRACE("%c",pst[i*16+j]); } TRACE("\n"); return 0; }这个可以满足你第二个需求,看包里的内容,传一个长度,一个buf进去,就可以在debug栏看到了。都是以十六进制显示,希望对你有所帮助 C++如何实现表格单元格内容的复制粘帖 为什么好多函数返回值是BOOL类型,怎么起做用的? 新手赋值问题? wtl 学习中 DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME) 的疑问 为何我的单文档窗体隐藏不了? 如何跟踪调试Hook的dll代码?? 请问如何将一个EXE文件的ICON修改一下? 怎样改变标题栏? 数组中的问题 发现有个错误 遇到变态问题--CTreeCtrl的InsertItem(200分) 不知道为什么一用strcpy就出错``郁闷啊!!!!!!!!!!!!!!!!!
1、用Wincap,它是一个SDK开发包,功能比较强大,可抓到MAC以上层的包,网上例子也很多;
2、用原始套接字(RAW_SOCKET),使用起来比较容易,但只能catch到IP以上层的包,例子也很多;
3、用NDIS,比较难,但功能最强大。
int decode(int len,unsigned char *pst)
{
int fullline,remainline,i,j;
if(len<0)return -1;
fullline=len/16;
remainline=len%16;
TRACE("\n");
for(i=0;i<fullline;i++)
{
for(j=0;j<16;j++)
TRACE("%02X ",pst[i*16+j]);
TRACE("\t");
for(j=0;j<16;j++)
{
if(pst[i*16+j]<32||pst[i*16+j]>128)
TRACE("%c",'.');
else
TRACE("%c",pst[i*16+j]);
}
TRACE("\n");
}
for(j=0;j<remainline;j++)
TRACE("%02X ",pst[i*16+j]);
for(j=remainline;j<16;j++)
TRACE(" ");
TRACE("\t");
for(j=0;j<remainline;j++)
{
if(pst[i*16+j]<32||pst[i*16+j]>128)
TRACE("%c",'.');
else
TRACE("%c",pst[i*16+j]);
}
TRACE("\n");
return 0;
}这个可以满足你第二个需求,看包里的内容,传一个长度,一个buf进去,就可以在debug栏看到了。都是以十六进制显示,希望对你有所帮助