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 <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <unistd.h> 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 }; int display(); int main(int argc, char *argv[]) { ]; unsigned ]; unsigned char *ptr; struct sockaddr_in server; struct hostent *hp; int s; int total; unsigned int nb_num; unsigned int nb_type; ; ) { fprintf(stderr, ]); ; } ])) == NULL) { fprintf(stderr,]); ; } )) < ) { /* 17 = UDP */ perror("socket"); ; } 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(); /* netbios-ns */ , () { perror("sendto"); ; } else { fprintf(stdout, "Request sent, waiting for reply... [ctrl-c to abort]\n"); read(s, recv, ); fprintf(stdout,"Name Type\n" "----------------------------------\n"); ptr=recv+; total=*(ptr - ); /* max names */ while(ptr < recv + sizeof(recv)) { memset(temp,0x0, sizeof(temp)); strncpy(temp, ptr, ); /* copies the name into temp */ ptr+=; nb_num = *ptr; nb_type = *(ptr + ); ptr+=; if (i==total) { /* max names reached */ ptr-=; /* sets the pointer to the mac_addres field */ fprintf(stdout,"\nMAC-addres = %02x-%02x-%02x-%02x-%02x-%02x\n\n", *(ptr + ), *(ptr + ), *(ptr + ), *(ptr + ), *(ptr + ), *(ptr + )); break; } display(temp,nb_num,nb_type); i++; } } close(s); ; } int display(char *name, unsigned int number, unsigned int type) { ]; int i; memset(description, 0x0, sizeof(description)); /* list taken from http://support.microsoft.com/default.aspx?scid=KB;EN-US;q163409& */ /* 0x04 - UNIQUE */ /* 0x80 - GROUP */ switch(number) { case 0x00: if (type <= 0x80) { strncpy(description, ); } else { strncpy(description, ); } break; case 0x01: if (type <= 0x80) { strncpy(description, ); } else { strncpy(description, ); } break; case 0x03: strncpy(description, ); break; case 0x06: strncpy(description, ); break; case 0x1b: strncpy(description, ); break; case 0x1c: strncpy(description, ); break; case 0x1d: strncpy(description, ); break; case 0x1e: ); break; case 0x1F: strncpy(description, ); break; case 0x20: strncpy(description, ); break; case 0x21: strncpy(description, ); break; case 0x22: strncpy(description, ); break; case 0x23: strncpy(description, ); break; case 0x24: strncpy(description, ); break; case 0x30: strncpy(description, ); break; case 0x31: strncpy(description, ); break; case 0x42: strncpy(description, ); break; case 0x43: strncpy(description, ); break; case 0x44: strncpy(description, ); break; case 0x45: strncpy(description, ); break; case 0x46: strncpy(description, ); break; case 0x4C: strncpy(description, ); break; case 0x52: strncpy(description, ); break; case 0x6a: strncpy(description, ); break; case 0x87: strncpy(description, ); break; case 0xbe: strncpy(description, ); break; case 0xbf: strncpy(description, ); break; default: strncpy(description, ); break; } ; i < strlen(name); i++) /* replaces weird chars with dots */ || name[i] > ) name[i] = '.'; if (name) fprintf(stdout, "%s <%02x> %s\n", name, number, description); ; }
nbtstat Linux版源码, 通过IP获取主机名的更多相关文章
- Linux 从源码编译安装 OpenSSH
https://blog.csdn.net/bytxl/article/details/46639073 Linux 从源码编译安装 OpenSSH以及各问题解决 2015年06月25日 17:37: ...
- linux内核源码注解
轻松学习Linux操作系统内核源码的方法 针对好多Linux 爱好者对内核很有兴趣却无从下口,本文旨在介绍一种解读linux内核源码的入门方法,而不是解说linux复杂的内核机制:一.核心源程序的文件 ...
- Linux内核源码分析 day01——内存寻址
前言 Linux内核源码分析 Antz系统编写已经开始了内核部分了,在编写时同时也参考学习一点Linux内核知识. 自制Antz操作系统 一个自制的操作系统,Antz .半图形化半命令式系统,同时嵌入 ...
- linux内存源码分析 - SLUB分配器概述
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ SLUB和SLAB的区别 首先为什么要说slub分配器,内核里小内存分配一共有三种,SLAB/SLUB/SLOB ...
- linux中断源码分析 - 中断发生(三)
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 回顾 上篇文章linux中断源码分析 - 初始化(二)已经描述了中断描述符表和中断描述符数组的初始化,由于在初始 ...
- atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结
atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结 1. 为什么虚拟机语言容易被反编译 1 2. 源码泄露的问题问题 1 3. Excelsior JET 1 4. gcj.的流 ...
- linux 手动源码安装lnmp(亲测)
linux 手动源码安装lnmp笔记(亲测)<pre>先安装这2个yum install gccyum install g++</pre><pre>先在linux ...
- Tomcat 调优之从 Linux 内核源码层面看 Tcp backlog
前两天看到一群里在讨论 Tomcat 参数调优,看到不止一个人说通过 accept-count 来配置线程池大小,我笑了笑,看来其实很多人并不太了解我们用的最多的 WebServer Tomcat,这 ...
- Atitit. 查找linux 项目源码位置
Atitit. 查找linux 项目源码位置 1. netstat -anp |grep 801 1.1. 1.3 启动关闭nginx3 1.2. 找到nginx配置文件4 1.3. ./etc/ ...
随机推荐
- CentOS 6.7安装Java JDK
1.下载Java JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...
- springmvc使用@ResponseBody返回json乱码解决方法
1.springmvc 3.2以上的版本解决乱码的方法: 第一步:在配置中加入: <mvc:annotation-driven> <mvc:message-converters re ...
- PLSQL Developer操作
1.设置 1)下载32位Oracle InstantClient 2)将Oracle InstantClient解压到某目录 3)设置环境变量(修改NLS_LANG和TNS_ADMIN环境变量)对 ...
- xml--小结④DTD的验证问题,不要用IE检验,IE不靠谱
可以自己写代码 <script type="text/javascript"> var xmldoc = new ActiveXObject("Microso ...
- TCP服务器端和客服端(一)
就是一个客服端(Socket)和服务器(ServerSocket)端的链接间.我的理解是一个服务端可以链接多个客服端. 在客服端有输入流outPutStream. 用于发送数据 在服务器端有输出流.i ...
- oracle插入数据报错ORA-26026
今天进行数据清理时发现报错ORA-26026,主要是把从交易库提取数据并插入到归档库中. 检查一下发现是归档库的索引问题. 当时为了提高插入速度,所以删除了归档库的索引,可能对主键索引产生了影响. 解 ...
- object-C 手动内存管理(MRC)
object-C的内存管理和javascript的垃圾回收不一样,今天总结下手动内存管理,ARC的后边补上. 1:基本铺垫 oc采用引用计数来表示对象的状态,比如通过init创建出来的一个对象引用计数 ...
- iOS截屏代码
转载自:http://m.open-open.com/m/code/view/1420469506375 1.普通界面 /** *截图功能 */ -(void)screenShot{ UIGraphi ...
- codevs 4511 信息传递(NOIP2015 day1 T2)
4511 信息传递 NOIP2015 day1 T2 时间限制: 1 s 空间限制: 128000 KB 传送门 题目描述 Description 有个同学(编号为 1 到)正在玩一个信息传递的游戏. ...
- ENC28J60 + M430G2553,用uip搭建http服务器,解决“在XP系统下可以访问,在Win7下不能访问”的问题
近日,用ENC28J60,在M430G2553上搭建一个简单的HTTP服务器,结果发现在XP系统下可以访问,在Win7下不能访问,非常奇葩的问题. 通过抓包,如下图,计算机(IP地址为192.168. ...