网站公告列表
加入收藏
设为首页
联系站长
您现在的位置: 福州电脑之家 >> 文章中心 >> 网络安全 >> 正文
  [推荐]嗅探原理与反嗅探技术           ★★★ 【字体:
嗅探原理与反嗅探技术
作者:福州电脑…    文章来源:本站原创    点击数:    更新时间: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;

上一页  [1] [2] [3] 


文章录入:福州电脑之家    责任编辑:福州电脑之家 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)


    福州电脑之家版权所有 © 2006-2008 闽ICP备07014770号