执着成就未来 技术成就梦想
文字横幅以及760*60黄金广告位置招租,欢迎恰谈! 广告业务联系QQ:8019399 声明:在本站所投放广告内容均与本站立场无关!

您现在的位置: 中国安全在线 >> 攻防技术 >> 菜鸟学习 >> 文章正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
手把手教你捕获数据包
手把手教你玩转ARP包
作者:佚名 来源:安全在线 更新时间:2005-12-26 【字体:
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论

;      // 名字               char szIPAddrStr[16];             // IP               char szHWAddrStr[18];             // MAC               DWORD dwIndex;                    // 编号          }INFO_ADAPTER, *PINFO_ADAPTER;   /********************************************************************* *    Name & Params:: *             AddAdapInfoToList *             ( *                  CListCtrl& list :  CARPPlayerDlg传入的list句柄 *             ) *    Purpose: *             获得系统的网卡信息,并将其添加到list控件中 *    Remarks: *             获得网卡IP及MAC用到了IpHelper api GetAdaptersInfo ******************************************************************/ void AddAdapInfoToList(CListCtrl& list) {      char tempChar;      ULONG uListSize=1;      PIP_ADAPTER_INFO pAdapter;           // 定义PIP_ADAPTER_INFO结构存储网卡信息      int nAdapterIndex = 0;        DWORD dwRet = GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar, &uListSize);//关键函数        if (dwRet == ERROR_BUFFER_OVERFLOW)      {   PIP_ADAPTER_INFO pAdapterListBuffer = (PIP_ADAPTER_INFO)new(char[uListSize]);   dwRet = GetAdaptersInfo(pAdapterListBuffer, &uListSize);   if (dwRet == ERROR_SUCCESS)   {      pAdapter = pAdapterListBuffer;      while (pAdapter)                                              // 枚举网卡然后将相关条目添加到List中      {         // 网卡名字           CString strTemp = pAdapter->AdapterName;                               strTemp = "\\Device\\NPF_" + strTemp;                        // 加上前缀           list.InsertItem(nAdapterIndex,strTemp);                            strcpy(AdapterList[nAdapterIndex].szDeviceName,strTemp);           // IP           strcpy(AdapterList[nAdapterIndex].szIPAddrStr,                                                  pAdapter->IpAddressList.IpAddress.String );           list.SetItemText(nAdapterIndex,1,AdapterList[nAdapterIndex].szIPAddrStr);           // MAC           formatMACToStr( AdapterList[nAdapterIndex].szHWAddrStr, pAdapter->Address );           list.SetItemText(nAdapterIndex,2,AdapterLis[nAdapterIndex].szHWAddrStr);           // 网卡编号           AdapterList[nAdapterIndex].dwIndex = pAdapter->Index;                      pAdapter = pAdapter->Next;           nAdapterIndex ++;           }      delete pAdapterListBuffer;      } } }   2)获取ARP条目列表 // ARP条目信息 typedef struct tagARPInfo             {      char szIPAddrStr[16];              // IP      char szHWAddrStr[18];             // MAC      DWORD dwType;                     // 类型 }INFO_ARP, *PINFO_ARP;     /********************************************************************** *    Name & Params:: *             AddARPInfoToList *             ( *                  CListCtrl& list :             CARPPlayerDlg传入的list句柄 *                  const short nAdapterIndex :   用户选中的网卡编号 *             ) *    Purpose: *             读入系统的ARP缓存列表,.并添加到对话框中 *    Remarks: *             用到了IpHelper api GetIpNetTable *             而且用到了WinSock的api,所以要包含 *****************************************************************/ void AddARPInfoToList(CListCtrl& list,const short nAdapterIndex) {      char tempChar;      DWORD dwListSize = 1;      DWORD dwRet;      in_addr inaddr;      list.DeleteAllItems();        dwRet = GetIpNetTable((PMIB_IPNETTABLE)&tempChar, &dwListSize, TRUE);  // 关键函数      if (dwRet == ERROR_INSUFFICIENT_BUFFER)      {          PMIB_IPNETTABLE pIpNetTable = (PMIB_IPNETTABLE)new(char[dwListSize]);          dwRet = GetIpNetTable(pIpNetTable, &dwListSize, TRUE);          if (dwRet == ERROR_SUCCESS)          {               for (int i=0; i<(int)pIpNetTable->dwNumEntries; i++)               {                   // IP                    inaddr.S_un.S_addr = pIpNetTable->table[i].dwAddr;                    strcpy( ARPList[i].szIPAddrStr, inet_ntoa(inaddr) );                      // MAC                    formatMACToStr( ARPList[i].szHWAddrStr, pIpNetTable->table[i].bPhysAddr );                    // Type                    ARPList[i].dwType = pIpNetTable->table[i].dwType;                              if (AdapterList[nAdapterIndex].dwIndex != pIpNetTable->table[i].dwIndex)                                                       continue;                      list.InsertItem(i,ARPList[i].szIPAddrStr);                  

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

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力

文章录入:ls1238    责任编辑:ls1238 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系方式 | 友 情链接 | 关于我们 | 网站留言 |
    Copyright ?2003-2008 www.cnsafer.com All Rights Reserved.
    如有意见请与我们联系 Email:admin#mail.cnsafer.com 联系QQ:8589101
    中国安全在线友情提示:建议使用IE6.0或以上版本, 分辩率1024*768进行浏览
    敢想 敢做 挑战自我 努力做最好 打造最优秀的新手成长 第一起跑线
    中网科技有限公司 技术支持 鄂ICP备05006475号