论坛: 原创软件 标题: 本人写的一个简单的探测 <嗅探器>的测试程序 复制本贴地址    
作者: 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号