用C语言获取IP地址列表

最近给客户的SEP系统定义了一个简单的策略,策略是检测主机是否存在双网卡。SEP系统只能完成简单的运行可执行程序、检测文件是否存在、注册表是否存在等功能,因此需要写一个简单的判断双网卡的程序。因此写了一个简单的程序,代码如下:

#include <WinSock2.h>
#include <windows.h>
#include <stdio.h>

#pragma comment (lib, "ws2_32")

int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsa = { 0 };
    struct in_addr addr;
    int i = 0;
    char bHostName[MAXBYTE] = { 0 };

    WSAStartup(MAKEWORD(2, 2), &wsa);
    gethostname(bHostName, MAXBYTE);
    hostent *ht = gethostbyname(bHostName);
    
    while ( ht->h_addr_list[i] != 0 )
    {
        addr.s_addr = *(u_long *) ht->h_addr_list[i++];
        // printf("IP Address #%d: %s\n", i, inet_ntoa(addr));
    }
    
    if ( i > 1 )
    {
        // printf("存在多个IP地址\r\n");
    } 
    else if ( i == 1 )
    {
        char cIp[MAXBYTE] = { 0 };
        strncpy_s(cIp, MAXBYTE, inet_ntoa(addr), strlen(inet_ntoa(addr)));
        if ( cIp[0] == ‘1‘ && cIp[1] == ‘0‘ && cIp[2] == ‘.‘ )
        {
            // printf("一个IP地址,且IP地址为10.开头");
            FILE *fp = NULL;
            fp = fopen("d:\\kernelsx86.dll", "w");
            fclose(fp);
        }
        else
        {
            // printf("一个IP地址,但IP地址不为10.开头");
        }        
    }
    else
    {
        // printf("没有得到IP地址");
    }

    WSACleanup();

    return 0;
}

代码写的不够好,不过反正不长。如果主机只有一个IP地址,且该IP地址是以10.开头的,那么在D盘下生成一个文件。

将该代码生成一个可执行文件,放到客户的Web服务器上,当安装在主机上的SEP客户端进行双网卡检测时,会从Web服务器上下载并运行该程序,该程序运行结束后,SEP客户端判断D盘下是否有生成的指定的文件,如果有该文件则SEP的检测双网卡的策略通过,否则不通过。

时间: 2024-12-26 18:24:58

用C语言获取IP地址列表的相关文章

发起SSH攻击主机IP地址列表

发起SSH攻击主机IP地址列表 东北大学 http://antivirus.neu.edu.cn/scan/ssh.php 以下IP地址对SSH服务进行攻击,严重增加主机成为肉鸡的可能性.强烈建议网管对以下地址进行封锁. #==========开始复制========== ldd `which sshd` | grep libwrap # 确认sshd是否支持TCP Wrapper,输出类似:libwrap.so.0 => /lib/libwrap.so.0 (0x00bd1000) cd /u

全球免费公共 DNS 解析服务器 IP 地址列表推荐 (解决无法上网/加速/防劫持)

除了宽带提供商的 DNS 以外,像阿里云.腾讯云.Google.百度.IBM.CNNIC 等一些有足够实力的大型互联网公司也非常慷慨地为公众提供了免费的 DNS 解析服务器.异次元这就搜集了全球范围内这些可靠.免费高速的公共 DNS 服务器地址列表,供大家选择使用.(推荐使用 DNS Jumper 快速修改 DNS) 国内免费公共 DNS 域名解析服务收集 以下收集的都是目前全球范围内 (更多数是国内的) 比较靠谱的免费公共 DNS 服务的 IP 地址.由于地区差异,同一组 DNS 服务器在不同

vc++获取系统网卡列表及IP地址信息

1 #include "stdafx.h" 2 #include <Windows.h> 3 #include <IPHlpApi.h> 4 #include <iostream> 5 #pragma comment(lib,"IPHlpApi.lib") 6 using namespace std; 7 8 BOOL GetLocalAdaptersInfo() 9 { 10 //IP_ADAPTER_INFO结构体 11 PI

vc获取系统网卡列表及IP地址信息

1 #include "stdafx.h" 2 #include <Windows.h> 3 #include <IPHlpApi.h> 4 #include <iostream> 5 #pragma comment(lib,"IPHlpApi.lib") 6 using namespace std; 7 8 BOOL GetLocalAdaptersInfo() 9 { 10 //IP_ADAPTER_INFO结构体 11 PI

python之IP地址或IP段处理模块-ipaddr

python处理IP和IP段的模块基本有两个:IPy与ipaddr IPy基本处理8位.16位.24位掩码的网段,其他的网段处理起来就会出现问题. ipaddr是google出的一个模块,很好的可以处理模块IPy不能解决这个问题,所以建议使用模块ipaddr! 模块地址:http://pythonhosted.org/ipaddr/ 使用介绍: Class总共分为:BaseIP.IPv4.IPv6 ipaddr.IPv4Network()    ipv4网段对象建立 ipaddr.IPv6Net

获取微信服务器IP地址

关键字:微信公众平台 微信服务器 IP地址 如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表. 接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN 参数说明 参数 是否必须 说明 access_token 是 公众号的access_token 返回说明 正常情况下,微信会返回下述JSON

域名转化到IP地址的实现

在linux中,有一些函数可以实现主机名和地址的转化,最常见的有gethostbyname().gethostbyaddr()等,它们都可以实现IPv4和IPv6的地址和主机名之间的转化.其中gethostbyname()是将主机名转化为IP地址,gethostbyaddr()则是逆操作,是将IP地址转化为主机名. 函数原型: 1 #include <netdb.h> 2 3 struct hostent* gethostbyname(const char* hostname); 4 5 st

python实战系列之ip地址排序问题(02)

1. 背景说明 从openstack的nova list中获取了虚拟机的ip地址,但这些ip都没有排序和分组,为了进一步增强可读性,对ip地址执行排序操作,在shell下,可以通过sort命令,执行排序操作,具体操作如下: [[email protected] ~]# cat ip.txt | sort -t "." -k1,1n -k2,2n -k3,3n -k4,4n 10.1.104.75 10.1.104.87 10.1.104.149 10.1.104.151 10.1.10

#获取本机IP地址时排除IPv6类型,只返回IPv4地址的方法

public static string GetLocalIP(){try{string HostName = Dns.GetHostName(); //得到主机名IPHostEntry IpEntry = Dns.GetHostEntry(HostName); for (int i=0; i < IpEntry.AddressList.Length; i++){//从IP地址列表中筛选出IPv4类型的IP地址//AddressFamily.InterNetwork表示此IP为IPv4,//Ad