|
作者: z_verygood [z_verygood] 论坛用户 | 登录 |
#include "Winsock.h" #define MAX_RECV_LEN 65535 #define MAX_HOSTNAME_LEN 255 #pragma comment (lib , "ws2_32.lib") int main() { SOCKET RawSock,Sck; WSADATA wsaData; int ret=0; struct sockaddr_in sAddr,addr; char RecvBuf[MAX_RECV_LEN]; char FAR name[MAX_HOSTNAME_LEN]; struct hostent FAR * pHostent; char *Buf=(char *)malloc(128); //设置等待一秒钟超时 int settimeout=1000; printf("正在查找,请稍等...\n"); WSAStartup(MAKEWORD(2,2),&wsaData); //生成一个RawSocket RawSock=socket(AF_INET,SOCK_RAW,IPPROTO_IP); if(RawSock == INVALID_SOCKET) { printf("生成RawSocket错误!\n"); free(Buf); WSACleanup(); return 0; } //生成一个UDP Sck=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); if(Sck == INVALID_SOCKET) { printf("生成UDP错误!\n"); closesocket(RawSock); free(Buf); WSACleanup(); return 0; } memset(&sAddr,0,sizeof(sAddr)); memset(&addr,0,sizeof(addr)); sAddr.sin_family=AF_INET; sAddr.sin_port=htons(4000); addr.sin_family=AF_INET; addr.sin_port=htons(4001); //把IP地址指向本机 addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); memset(RecvBuf,0, sizeof(RecvBuf)); //得到本地IP pHostent=(struct hostent *)malloc(sizeof(struct hostent)); gethostname(name, MAX_HOSTNAME_LEN); pHostent=gethostbyname(name); memcpy(&sAddr.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length); //绑定一个本机的接收端口 bind(RawSock, (struct sockaddr *)&sAddr, sizeof(sAddr)); //虚连接到本机的一个未打开的端口 connect(Sck,(struct sockaddr *)&addr,sizeof(addr)); strcpy(Buf,"!@###########!!!"); //设置超时等待 setsockopt(RawSock,SOL_SOCKET,SO_RCVTIMEO,(char *)&settimeout,sizeof(int)); //向虚连接端口发送一个数据包 send(Sck,Buf,strlen(Buf),0); //使用RawSock尝试接收这个数据包 ret=recv(RawSock,RecvBuf,sizeof(RecvBuf),0); if(ret==SOCKET_ERROR || ret==0) printf("没有发现嗅探器!\n"); else { //检查 if(strcmp(Buf,"!@###########!!!")==0) printf("发现嗅探器!!!!!!!!!!!! \n"); } closesocket(Sck); closesocket(RawSock); free(Buf); WSACleanup(); return 0; } |
地主 发表时间: 11/13 13:45 |
回复: syshunter [syshunter] 版主 | 登录 |
利用检测回收包的完整性来检测是否有SNIFFER,恩,思路不错,来试试 |
B1层 发表时间: 11/13 15:15 |
回复: ricky [ricky] 版主 | 登录 |
程序我大致上看明白了,不过没有试过,不明白你所说的嗅探器是不是指x-ray一类 |
B2层 发表时间: 11/13 15:31 |
回复: syshunter [syshunter] 版主 | 登录 |
只是我不大明白的是,你发送和接收的包只是数据部分,而SNIFFER正常情况下不改变数据部分,所以~`` [此贴被 §溶(syshunter) 在 11月13日15时16分 编辑过] |
B3层 发表时间: 11/13 15:45 |
回复: gdz960839 [gdz960839] 论坛用户 | 登录 |
你写的程序是在那里写的啊,我不知道怎么用啊,可以教我吗? |
B4层 发表时间: 11/16 10:47 |
回复: jyq_2002 [jyq_2002] 论坛用户 | 登录 |
可以TELL ME 是用什么语言编的吗。 我看好像和C有关(我是菜鸟) |
B5层 发表时间: 11/17 09:36 |
回复: xiaoxingchi [xiaoxingchi] 论坛用户 | 登录 |
C++ |
B6层 发表时间: 11/18 04:26 |
回复: ranchuan [ranchuan] 版主 | 登录 |
我觉得溶说得不错, 数据没变,好像测不出来 |
B7层 发表时间: 12/14 18:54 |
回复: softlib [softlib] 论坛用户 | 登录 |
这段代码应该是从很老的一篇文章里复制过来的。我估计你根本没有 详细测试过,这方法根本行不通。 |
B8层 发表时间: 12/22 19:10 |
回复: kyj018 [kyj018] 论坛用户 | 登录 |
思路不错,到底能不能行的通呢? |
B9层 发表时间: 02/13 21:05 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号