![]() |
|
||||||||||||||
| | 网站首页 | 文章中心 | 下载中心 | 图片中心 | 雁过留声 | 站长日记 | 网站论坛 | 苦菜花原创软件 | 在线游戏 | | ||
|
||
|
|||||
| 嗅探原理与反嗅探技术 | |||||
| 作者:福州电脑… 文章来源:本站原创 点击数: 更新时间:2007-8-6 | |||||
|
本机嗅探程序的检测 本机嗅探的程序检测方法比较简单,只要检查一下网卡是否处于混杂模式就可以了,在Linux下,这个比较容易实现,而在Windows平台上,并没有现成的函数可供我们实现这个功能,我们来用一点小技巧: #include #define MAX_PACK_LEN 65535 #define MAX_HOSTNAME_LAN 255 #pragma comment (lib , "ws2_32.lib") int main() { SOCKET SockRaw,Sock; WSADATA wsaData; int ret=0; struct sockaddr_in sAddr,addr; char RecvBuf[MAX_PACK_LEN]; char FAR name[MAX_HOSTNAME_LAN]; struct hostent FAR * pHostent; char *Buf=(char *)malloc(128); int settimeout=1000;//这里我们设置了一秒钟超时 printf("UNSniffer for Win2k v1.0/nPower by BigBall/nHomePage:http:////www.patching.net//liumy/nEmail:liumy@patching.net/nOicq:9388920/n/nChecking your system ,wait a moment please.../n"); WSAStartup(MAKEWORD(2,2),&wsaData); //建立一条RawSocket SockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_IP); 再建立一条UDP Sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); memset(&sAddr,0,sizeof(sAddr)); memset(&addr,0,sizeof(addr)); sAddr.sin_family=AF_INET; sAddr.sin_port=htons(5257); addr.sin_family=AF_INET; addr.sin_port=htons(5258); //把IP地址指向本机 addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); memset(RecvBuf,0, sizeof(RecvBuf)); pHostent=malloc(sizeof(struct hostent)); gethostname(name, MAX_HOSTNAME_LAN); pHostent=gethostbyname(name); //取得自己的IP地址 memcpy(&sAddr.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length); free(pHostent); //绑定一个本机的接收端口 bind(SockRaw, (struct sockaddr *)&sAddr, sizeof(sAddr)); //虚连接到本机的一个未打开的端口 connect(Sock,(struct sockaddr *)&addr,sizeof(addr)); Buf="1234567890!@#$%^&*"; //设置超时 setsockopt(SockRaw,SOL_SOCKET,SO_RCVTIMEO,(char *)settimeout,sizeof(int)); //向虚连接端口发送一个数据包 send(Sock,Buf,strlen(Buf),0); //使用SockRaw尝试接收这个数据包 ret=recv(SockRaw,RecvBuf,sizeof(RecvBuf),0); if(ret==SOCKET_ERROR ret==0) printf("No found any sniffer in your system!/n"); else { //进行ChkSum if(Buf=="1234567890!@#$%^&*") printf("Warning!!! Found sniffer!!!/n"); } closesocket(Sock); closesocket(SockRaw); free(pHostent); free(Buf); WSACleanup(); return 0; |
|||||
| 文章录入:福州电脑之家 责任编辑:福州电脑之家 | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | | |||
|