windows配置与管理_win7卡在配置windows
2023-06-13 09:12:52 时间
大家好,又见面了,我是你们的朋友全栈君。
0、前提
windows: win7 x64
WinPcap版本:4.1.3
WinPcap开发包:4.1.2
目标:在VS2010中配置使用winpcap 获取目标计算机中安装的网卡列表
1、下载
http://www.winpcap.org/
下载winpcap安装包 和 开发包
安装包安装完毕后,解压开发包到某个目录即可,开发包免安装。
3、在VS2010中配置
配置头文件 和 库文件
项目属性–VC++目录–包含目录 / 库目录
4、Demo
获取本机 / 远程机器上网卡的列表和相关数据
/*******************************
函数成功返回 0
失败返回 -1
*******************************/
int
pcap_findalldevs_ex(
char *source, //本机/远程机器/文件
struct pcap_rmtauth *auth, //目标机器用户名 密码
pcap_if_t **alldevs, //输出参数,详细信息
char *errbuf //缓冲区 大小为PCAP_BUF_SIZE,函数失败时保存错误信息
);
pcap_findalldevs_ex函数指定本机时指定参数"rpcap://" 或 预定义宏PCAP_SRC_IF_STRING
当指定远程机器时需要按照"rpcap://host:port"的格式,默认端口号为2002
远程机器有密码时需要指定用户名和密码。
struct pcap_rmtauth
{
int type; //#define RPCAP_RMTAUTH_NULL 0 或 用户名密码验证 #define RPCAP_RMTAUTH_PWD 1
char *username; //用户名
char *password; //密码
};
// demo1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <WinSock2.h> #include <Windows.h> //the macro HAVE_REMOTE must define before #ifndef HAVE_REMOTE #define HAVE_REMOTE #endif #include <pcap.h> #include <remote-ext.h> #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "packet.lib") #pragma comment(lib, "wpcap.lib") using namespace std; /************************************************************************/ /* platfor win7 x64 * version of winpcap: 4.1.3 * version of developping tool: 4.1.2 * notes: The local/remote machine must install the Winpcap and Start the server(go to the install path and double click rpcapd.exe). You must look out that the DEFAULT PORT is 2002. If you use another port, the pcap_findalldevs_ex function return -1 and the erro information in errbuf is [Is the server properly installed on XXX.XXX.XXX.XXX? connect() failed: 由于目标计算机积极拒绝,无法连接。 (code 10061) ] /************************************************************************/ int _tmain(int argc, _TCHAR* argv[]) { //char* pSource = "rpcap://"; //localhost char* pSource = "rpcap://XXX.XXX.XXX.XXX:2002"; //remote PC struct pcap_rmtauth stAuth = {0}; stAuth.type = RPCAP_RMTAUTH_PWD; stAuth.username = "xxxxx"; stAuth.password = "xxxxxxxxxxx"; pcap_if_t* pPcapIft = NULL; char chBuffer[PCAP_BUF_SIZE] = {0}; int nCount = 0; if (0 == pcap_findalldevs_ex(pSource, &stAuth, &pPcapIft, chBuffer)) { for (pcap_if_t* pcap = pPcapIft; pcap != NULL; pcap = pcap->next) { cout << endl << "----------- device " << nCount ++ << " -------------" << endl; cout << pcap->name << endl << pcap->description << endl << pcap->flags << endl; cout << "-------- Output details below -----" << endl; for (struct pcap_addr* pAddr = pcap->addresses; pAddr != NULL; pAddr = pAddr->next) { struct sockaddr_in* psockAddr = (struct sockaddr_in*)(pAddr->addr); if (NULL != psockAddr) { cout << "IP is " << inet_ntoa(psockAddr->sin_addr) << endl; cout << "Port is " << ntohs(psockAddr->sin_port) << endl; cout << "Family is " << psockAddr->sin_family << endl; cout << "-------" << endl; } psockAddr = (struct sockaddr_in*)(pAddr->dstaddr); if (NULL != psockAddr) { cout << "Mask IP is " << inet_ntoa(psockAddr->sin_addr) << endl; cout << "Mask Port is " << ntohs(psockAddr->sin_port) << endl; cout << "Mask Family is " << psockAddr->sin_family << endl; cout << "-------" << endl; } psockAddr = (struct sockaddr_in*)(pAddr->broadaddr); if (NULL != psockAddr) { cout << "Broadcast IP is " << inet_ntoa(psockAddr->sin_addr) << endl; cout << "Broadcast Port is " << ntohs(psockAddr->sin_port) << endl; cout << "Broadcast Family is " << psockAddr->sin_family << endl; } psockAddr = (struct sockaddr_in*)(pAddr->dstaddr); if (NULL != psockAddr) { cout << "P2P IP is " << inet_ntoa(psockAddr->sin_addr) << endl; cout << "P2P Port is " << ntohs(psockAddr->sin_port) << endl; cout << "P2P Family is " << psockAddr->sin_family << endl; } cout << "---------------------------------------" << endl << endl << endl; } //for } //for pcap_freealldevs(pPcapIft); } //if else { cerr << endl << "Last error is " << GetLastError() << endl << chBuffer << endl; } system("pause"); return 0; }
5、运行结果
本机测试
远程机器测试
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166601.html原文链接:https://javaforall.cn
相关文章
- Windows配置Java环境变量(下载、安装、配置环境)[通俗易懂]
- Rust腐蚀Windows RSM开服教程
- 超详细配置教程:用 Windows 电脑训练深度学习模型
- Codeql在windows上配置及使用
- nvm-windows管理nodejs版本神器——代理和镜像配置
- Windows Server配置Apache(WAMPServer)
- Windows 系统中 CMD 工具常用命令
- 用windows或linux系统 可以上传ios app到苹果应用商店吗?
- 【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
- linux 远程控制windows系统下的程序(三种方法)
- MySQL安装(windows版本)详解数据库
- 翻越Windows世界,拥抱Linux梦想(xp下装linux)
- Windows与Linux远程连接:实现跨平台无缝通讯(windows远程连接linux)
- 、windows切换就出:双系统 Linux 与 Windows(双系统linux)
- and windows切换Linux和Windows系统:实现自由转换(swaplinux)
- 安装 Windows server 2008 开启远程桌面
- 切换双系统:Linux与Windows的交互(linux和windows双系统)
- Windows和Linux双系统:把两个世界都拥有(windows和linux双系统)
- 在Windows环境下安装双系统:WindowsLinux(windows下安装linux)
- 放在windows上Windows上安装Redis的步骤(如何把redis的exe)
- Redis集群在Windows上的配置与使用(redis集群配置win)
- windows下PHPAPACHEMYSQ完整配置
- Windows下IIS+PHP5.2的安装与配置
- c#获取windows桌面背景代码示例