当前位置:首页 » 编程语言 » c语言编程实现扫描ip
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编程实现扫描ip

发布时间: 2022-06-12 23:03:09

1. 找一个ip扫描器的c语言代码

的IP冲突好使工具,曾经搞死过几十个网吧.

当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和交换机,让所有上网的流量必须经过病毒主机。其他用户原来直接通过交换机上网现在转由通过病毒主机上网,切换的时候用户会断一次线。由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从交换机上网(此时交换机MAC地址表正常),切换过程中用户会再断一次线。该病毒发作时,仅影响同网段内机器的正常上网.

换个路由器吧,ARP病毒是利用网关做跳板的,从而对内网的IP进行干扰。况且ARP病毒使用的IP一般都是假IP,不会给你这么容易找到的。要防止服务器给ARP病毒干扰,装个ANTI ARP SNIFFER,GOOGLE一下就有了。

如果内网的用户比较少用互联网,那么应该在路由器上面封端口或者封IP,禁止那些没有必要办公的时候上网的用户,这也是为了降低内网爆发病毒的风险所采取的手段之一.
2.还是病毒

对于VIKING这个病毒,以及他带来的一大堆变种,其实要对付也不是难处。这东西利用扫描administrator和guest帐号口令为空的计算机,并通过共享迅速到处传播,但现在内网的用户多用windows,那个人机器上没有默认共享的?

买个交换机,带ACL功能的,把135.139.445这几个端口都在交换机上面封掉。由于带ACL功能的核心交换机上面一般带有背板缓冲,对于病毒所进行的大线程扫描来讲,可以在网络资源上保证内网的一定畅通。

你用的Symantec AntiVirus 10是网络版么?如果是的话,把每个客户端的策略都分发一遍,网络版杀毒软件的统一内网客户端策略可以保证内网的一定程度无毒性。
3.ping这个问题

这实在没什么好说的,病毒造成的扫描(包括VIKING一些变种)在寻找可传染主机的时候,为了加速扫描线程,都会寻求受传染主机的ICMP ECHO(也就是PING的回传值),给服务器启用个人版防火墙吧。什么?你没装防火墙?那就由得人家PING死服务器算了。

2. 编程:C语言编程取得本机ip地址

#include "stdio.h"
#include "conio.h"
main()
{
int i,j;
char ip[20];
char temp[100];
char ch='\0';
FILE *fp;
system("ipconfig >d:\\myip.txt");
if ((fp=fopen("d:\\myip.txt","r"))==NULL)
{
printf("the file can not open:\nPress any key to exit:");
getch();
exit(1);
}
for (i=0;i<7;i++)
{fgets(temp,80,fp); /*跳过一些行*/
/*printf("%s\n",temp); */}
fgets(temp,80,fp);
i=0;j=0;
while (temp[i++]!=':')
;
while (temp[i]!='\n')
ip[j++]=temp[i++];
ip[j]=0;
printf("IP=%s\n",ip);
fclose(fp);
system("del d:\\myip.txt");

getch();
}

3. 扫描本网段ip c语言实现

ping 使用的是ICMP报文
获取远端机器的MAC地址使用的是UDP报文
方法是不一样的

UDP报文套接字 socket
RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
端口一般 取 137(10进制)
如果扫描成功可以获取远端机器的工作组名称,机器名称,MAC地址

4. 用C语言编程显示主机IP地址!

最简单的方法是用 ipconfig
为了把数取出来,放到程序里好使用,可以把 ipconfig内容 存入C:\\TEMP\\tmp.ip, 再取出来用。
下面程序运行完,IP 的 4 段 整数 存在 d1,d2,d3,d4 里。

#include <stdio.h>
void main()
{
FILE *fin;
char namein[]="C:\\TEMP\\tmp.ip";
char str1[64],str2[64];
char one_line[80];
char cmd[120];
int i,j,k;
int d1,d2,d3,d4;

sprintf(cmd,"ipconfig > %s",namein);
system(cmd);
fin = fopen(namein,"r");
while ( fgets(&one_line[0],80,fin) !=NULL ){
j = sscanf(one_line,"%s %s",&str1[0],&str2[0]);
if (j == 2 && strncmp(str2,"Address",7) ==0 ) {
for (i=1;i<50;i++) if (one_line[i] ==':') k = i;
break;
};
};
fclose(fin);
sscanf(&one_line[0]+k+1,"%d.%d.%d.%d", &d1,&d2,&d3,&d4);
printf("%d %d %d %d\n",d1,d2,d3,d4);
exit(0);
}

5. 如何用C语言编程得到本地主机得IP和主机名

  1. c语言本身是不提供的。

  2. 在windows下使用系统命令或windows.h

  3. //列子

  4. #include"stdio.h"
    #include"conio.h"
    main()
    {
    inti,j;
    charip[20];
    chartemp[100];
    charch='';
    FILE*fp;
    system("ipconfig>d:\myip.txt");
    if((fp=fopen("d:\myip.txt","r"))==NULL)
    {
    printf("thefilecannotopen: Pressanykeytoexit:");
    getch();
    exit(1);
    }
    for(i=0;i<7;i++)
    {fgets(temp,80,fp);/*跳过一些行*/
    /*printf("%s ",temp);*/}
    fgets(temp,80,fp);
    i=0;j=0;
    while(temp[i++]!=':')
    ;
    while(temp[i]!=' ')
    ip[j++]=temp[i++];
    ip[j]=0;
    printf("IP=%s ",ip);
    fclose(fp);
    system("deld:\myip.txt");

    getch();
    }
  5. 在Linux下
  6. #include<stdio.h>;
    #include<sys/types.h>;
    #include<sys/socket.h>;
    #include<sys/ioctl.h>;
    #include<netinet/in.h>;
    #include<net/if.h>;
    #include<net/if_arp.h>;
    #include<arpa/inet.h>;
    #include<errno.h>;

    #defineETH_NAME"eth0"

    intmain()
    {
    intsock;
    structsockaddr_insin;
    structifreqifr;

    sock=socket(AF_INET,SOCK_DGRAM,0);
    if(sock==-1)
    {
    perror("socket");
    return-1;
    }

    strncpy(ifr.ifr_name,ETH_NAME,IFNAMSIZ);
    ifr.ifr_name[IFNAMSIZ-1]=0;

    if(ioctl(sock,SIOCGIFADDR,&ifr)<0)
    {
    perror("ioctl");
    return-1;
    }

    memcpy(&sin,&ifr.ifr_addr,sizeof(sin));
    fprintf(stdout,"eth0:%s ",inet_ntoa(sin.sin_addr));

    return0;
    }

6. C语言如何实现IP地址查询系统

C语言如何实现IP地址查询系统
参考如下:

voidGetNameAndIp()
{
structhostent*host;
structin_addr*ptr;
DWORDdwScope=RESOURCE_CONTEXT;
NETRESOURCE*NetResource=NULL;
HANDLEhEnum;
WNetOpenEnum(dwScope,NULL,NULL,NULL,&hEnum);
WSADATAwsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
if(hEnum)
{
DWORDCount=0xFFFFFFFF;
DWORDBufferSize=10240;
LPVOIDBuffer=newchar[10240];
WNetEnumResource(hEnum,&Count,Buffer,&BufferSize);
NetResource=(NETRESOURCE*)Buffer;
charszHostName[200];
for(unsignedinti=0;i<BufferSize/sizeof(NETRESOURCE);i++,NetResource++)
{
if(NetResource->dwUsage==RESOURCEUSAGE_CONTAINER&&NetResource->dwType==RESOURCETYPE_ANY)
{
if(NetResource->lpRemoteName)
{
CStringstrFullName=NetResource->lpRemoteName;
if(0==strFullName.Left(2).Compare(_T("\\")))
strFullName=strFullName.Right(strFullName.GetLength()-2);
gethostname(szHostName,strlen(szHostName));
USES_CONVERSION;
char*pchar=T2A(strFullName);
host=gethostbyname(pchar);
if(host==NULL)continue;
ptr=(structin_addr*)host->h_addr_list[0];
stringstr="";
for(intn=0;n<4;n++)
{
CStringaddr;
if(n>0)
{
str+=".";
}
intvalue=(unsignedint)((unsignedchar*)host->h_addr_list[0])[n];
charp[20];
sprintf(p,"%d",value);
str.append(p);
}
std::cout<<"IP:"<<str<<"Name:"<<host->h_name<<std::endl;
}
}
}
deleteBuffer;
WNetCloseEnum(hEnum);
}
WSACleanup();
}

7. c语言怎样编写显示本机ip地址的程序

...
struct
in_addr
addr;
hostent
*pHost
=
::gethostbyname("localhost");//在此写入你自己电脑主机名字
switch
(pHost->h_addrtype)
{
case
AF_INET:
printf("internet网络地址类型(AF_INET)\n");
break;
case
AF_INET6:
printf("internet网络地址类型(AF_INET)\n");
break;
case
AF_NETBIOS:
printf("netbios网络地址类型(AF_NETBIOS)\n");
break;
default:
printf("其它地址类型
%d\n",
pHost->h_addrtype);
break;
}
printf("\t地址长度:
%d(字节)\n",
pHost->h_length);
addr.s_addr
=
*(u_long
*)
pHost->h_addr_list[0];
printf("\t第一个IP地址为:
%s\n",
inet_ntoa(addr));
...

8. C语言IP地址查询系统如何实现


C语言如何实现IP地址查询系统
参考如下:

voidGetNameAndIp()
{
structhostent*host;
structin_addr*ptr;
DWORDdwScope=RESOURCE_CONTEXT;
NETRESOURCE*NetResource=NULL;
HANDLEhEnum;
WNetOpenEnum(dwScope,NULL,NULL,NULL,&hEnum);
WSADATAwsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
if(hEnum)
{
DWORDCount=0xFFFFFFFF;
DWORDBufferSize=10240;
LPVOIDBuffer=newchar[10240];
WNetEnumResource(hEnum,&Count,Buffer,&BufferSize);
NetResource=(NETRESOURCE*)Buffer;
charszHostName[200];
for(unsignedinti=0;i<BufferSize/sizeof(NETRESOURCE);i++,NetResource++)
{
if(NetResource->dwUsage==RESOURCEUSAGE_CONTAINER&&NetResource->dwType==RESOURCETYPE_ANY)
{
if(NetResource->lpRemoteName)
{
CStringstrFullName=NetResource->lpRemoteName;
if(0==strFullName.Left(2).Compare(_T("\\")))
strFullName=strFullName.Right(strFullName.GetLength()-2);
gethostname(szHostName,strlen(szHostName));
USES_CONVERSION;
char*pchar=T2A(strFullName);
host=gethostbyname(pchar);
if(host==NULL)continue;
ptr=(structin_addr*)host->h_addr_list[0];
stringstr="";
for(intn=0;n<4;n++)
{
CStringaddr;
if(n>0)
{
str+=".";
}
intvalue=(unsignedint)((unsignedchar*)host->h_addr_list[0])[n];
charp[20];
sprintf(p,"%d",value);
str.append(p);
}
std::cout<<"IP:"<<str<<"Name:"<<host->h_name<<std::endl;
}
}
}
deleteBuffer;
WNetCloseEnum(hEnum);
}
WSACleanup();
}