nbtstat命令linux_nbtstat Linux版源码, 通过IP获取主机名

nbtstat Linux版, 通过IP获取主机名/*NETBIOS name lookup tool - by eSDee of Netric (www.netric.org)

* yeh.. i was really bored :-)

*

* [esdee@pant0ffel] gcc -o nbtstat nbtstat.c && ./nbtstat 10.0.0.4

* Request sent, waiting for reply... [ctrl-c to abort]

* Name Type

* ----------------------------------

* HOEPELKO-ESPU0B <00> UNIQUE Workstation Service

* HOEPELKO-ESPU0B <20> UNIQUE File Server Service

* WORKGROUP <00> GROUP Domain Name

* WORKGROUP <1e> GROUP Browser Service Elections

* HOEPELKO-ESPU0B <03> UNIQUE Messenger Service

* ADMINISTRATOR <03> UNIQUE Messenger Service

* WORKGROUP <1d> UNIQUE Master Browser

* ..__MSBROWSE__. <01> GROUP Master Browser

* MAC-addres = 00-02-a5-e1-fd-b7

* [/home/esdee/nbtstat]*/#include#include#include#include#include#include#include

char nbtname[]= /*netbios name packet*/{0x80,0xf0,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x00,0x00,0x21,0x00,0x01};intdisplay();int main(int argc, char *argv[])

{char temp[16];

unsignedchar recv[256];

unsignedchar *ptr;structsockaddr_in server;struct hostent *hp;ints;inttotal;

unsignedintnb_num;

unsignedintnb_type;int i = 0;if (argc < 2) {

fprintf(stderr,"Usage: %s \n", argv[0]);return 1;

}if ((hp = gethostbyname(argv[1])) ==NULL) {

fprintf(stderr,"Error: Unable to resolve %s\n", argv[1]);return 1;

}if ((s = socket(PF_INET, SOCK_DGRAM, 17)) < 0) { /*17 = UDP*/perror("socket");return 1;

}

memset(recv,0x0, sizeof(recv));

bzero((char *) &server, sizeof(server));

bcopy(hp->h_addr, (char *) &server.sin_addr, hp->h_length);

server.sin_family= hp->h_addrtype;

server.sin_port= htons(137); /*netbios-ns*/

if (sendto(s, nbtname, sizeof(nbtname), 0, (struct sockaddr *) &server, sizeof(server)) < 0) {

perror("sendto");return 1;

}else{

fprintf(stdout,"Request sent, waiting for reply... [ctrl-c to abort]\n");

read(s, recv,sizeof(recv) - 1);

fprintf(stdout,"Name Type\n"

"----------------------------------\n");

ptr=recv+57;

total=*(ptr - 1); /*max names*/

while(ptr < recv + sizeof(recv)) {

memset(temp,0x0, sizeof(temp));

strncpy(temp, ptr,15); /*copies the name into temp*/ptr+=15;

nb_num= *ptr;

nb_type= *(ptr + 1);

ptr+=3;if (i==total) { /*max names reached*/ptr-=19; /*sets the pointer to the mac_addres field*/fprintf(stdout,"\nMAC-addres = %02x-%02x-%02x-%02x-%02x-%02x\n\n",*(ptr + 1), *(ptr + 2), *(ptr + 3),*(ptr + 4), *(ptr + 5), *(ptr + 6));break;

}

display(temp,nb_num,nb_type);

i++;

}

}

close(s);return 0;

}int display(char *name, unsigned int number, unsigned inttype)

{char description[256];inti;

memset(description,0x0, sizeof(description));/*list taken fromhttp://support.microsoft.com/default.aspx?scid=KB;EN-US;q163409&*/

/*0x04 - UNIQUE*/

/*0x80 - GROUP*/

switch(number) {case 0x00:if (type <= 0x80) {

strncpy(description,"UNIQUE Workstation Service", sizeof(description) - 1);

}else{

strncpy(description,"GROUP Domain Name", sizeof(description) - 1);

}break;case 0x01:if (type <= 0x80) {

strncpy(description,"UNIQUE Messenger Service", sizeof(description) - 1);

}else{

strncpy(description,"GROUP Master Browser", sizeof(description) - 1);

}break;case 0x03:

strncpy(description,"UNIQUE Messenger Service", sizeof(description) - 1);break;case 0x06:

strncpy(description,"UNIQUE RAS Server Service", sizeof(description) - 1);break;case 0x1b:

strncpy(description,"UNIQUE Domain Master Browser", sizeof(description) - 1);break;case 0x1c:

strncpy(description,"GROUP Domain Controllers", sizeof(description) - 1);break;case 0x1d:

strncpy(description,"UNIQUE Master Browser", sizeof(description) - 1);break;case 0x1e:if (type >= 0x80) strncpy(description, "GROUP Browser Service Elections", sizeof(description) - 1);break;case 0x1F:

strncpy(description,"UNIQUE NetDDE Service", sizeof(description) - 1);break;case 0x20:

strncpy(description,"UNIQUE File Server Service", sizeof(description) - 1);break;case 0x21:

strncpy(description,"UNIQUE RAS Client Service", sizeof(description) - 1);break;case 0x22:

strncpy(description,"UNIQUE Microsoft Exchange Interchange(MSMail Connector)", sizeof(description) - 1);break;case 0x23:

strncpy(description,"UNIQUE Microsoft Exchange Store", sizeof(description) - 1);break;case 0x24:

strncpy(description,"UNIQUE Microsoft Exchange Directory", sizeof(description) - 1);break;case 0x30:

strncpy(description,"UNIQUE Modem Sharing Server Service", sizeof(description) - 1);break;case 0x31:

strncpy(description,"UNIQUE Modem Sharing Client Service", sizeof(description) - 1);break;case 0x42:

strncpy(description,"UNIQUE Mcaffee Anti-Virus", sizeof(description) - 1);break;case 0x43:

strncpy(description,"UNIQUE SMS Clients Remote Control", sizeof(description) - 1);break;case 0x44:

strncpy(description,"UNIQUE SMS Administrators Remote Control Tool", sizeof(description) - 1);break;case 0x45:

strncpy(description,"UNIQUE SMS Clients Remote Chat", sizeof(description) - 1);break;case 0x46:

strncpy(description,"UNIQUE SMS Clients Remote Transfer", sizeof(description) - 1);break;case 0x4C:

strncpy(description,"UNIQUE DEC Pathworks TCPIP service on Windows NT", sizeof(description) - 1);break;case 0x52:

strncpy(description,"UNIQUE DEC Pathworks TCPIP service on Windows NT", sizeof(description) - 1);break;case 0x6a:

strncpy(description,"UNIQUE Microsoft Exchange IMC", sizeof(description) - 1);break;case 0x87:

strncpy(description,"UNIQUE Microsoft Exchange MTA", sizeof(description) - 1);break;case 0xbe:

strncpy(description,"UNIQUE Network Monitor Agent", sizeof(description) - 1);break;case 0xbf:

strncpy(description,"UNIQUE Network Monitor Application", sizeof(description) - 1);break;default:

strncpy(description,"UNIQUE Unknown", sizeof(description) - 1);break;

}for (i=0; i < strlen(name); i++) /*replaces weird chars with dots*/

if (name[i] < 31 || name[i] > 126) name[i] = ‘.‘;if (name) fprintf(stdout, "%s %s\n", name, number, description);return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值