當前位置:首頁 » 編程語言 » 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();
}