一开始试了命令

$ nmap -A 192.168.1.88

等了大半天,终于出来结果(手工局部加码):

Starting Nmap 5.21 ( http://nmap.org ) at 2011-12-03 14:49 CST
Nmap scan report for 192.168.1.88
Host is up (0.019s latency).
Not shown: 991 closed ports
PORT     STATE SERVICE       VERSION
80/tcp   open  http          Microsoft IIS webserver 5.1
|_html-title:
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn
443/tcp  open  https?
445/tcp  open  microsoft-ds  Microsoft Windows XP microsoft-ds
873/tcp  open  rsync?
1025/tcp open  msrpc         Microsoft Windows RPC
2869/tcp open  http          Microsoft HTTPAPI httpd 1.0 (SSDP/UPnP)
|_html-title: Site doesn't have a title (text/html).
3389/tcp open  microsoft-rdp Microsoft Terminal Service
Service Info: OS: WindowsHost script results:
|_nbstat: NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
|_smbv2-enabled: Server doesn't support SMBv2 protocol
| smb-os-discovery:
|   OS: Windows XP (Windows 2000 LAN Manager)
|   Name: USER\L
|_  System time: 2011-12-03 14:54:05 UTC+8Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 133.46 seconds

可以看到,前面列出了这台电脑的可用端口,后面有一行

|_nbstat: NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**

NetBIOS name: L说明这台电脑的主机名是L,我的要求实现了,但是存在一个缺点,速度太慢,可以看到,时间花了133秒才扫描出来,找一个主机名根本不需要这么久,大部分的时间都浪费在前面扫描端口上了

为了提高速度,我开始RTFM,发现man实在太长,没心情看完,又开始Google,找到了不少资料,我觉得有用的有: 这里 & 这篇man的中文翻译

看了这些资料,我对nmap的功能倒是了解的不少,但是可惜的是,我需要的功能(解析IP对应的主机)还是找不到答案,还是只有-A参数能满足要求。

回头看看前面的提示,我注意到了这么一段

Host script results:
|_nbstat: NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
|_smbv2-enabled: Server doesn't support SMBv2 protocol
| smb-os-discovery:
|   OS: Windows XP (Windows 2000 LAN Manager)
|   Name: USER\L
|_  System time: 2011-12-03 14:54:05 UTC+8

第一句:Host script results,这说明了下面的内容,不是nmap本身输出的,而是一个script输出的,所以理所当然的,nmap肯定没有对应的参数

但是,nmap有一个--script的参数,可以指定执行某个script,这下看到了曙光,执行:

$ nmap --script nbstat 192.168.1.88

结果如下(手工局部加码):

Starting Nmap 5.21 ( http://nmap.org ) at 2011-12-03 15:08 CST
NSE: Script Scanning completed.
Nmap scan report for 192.168.1.88
Host is up (0.0074s latency).
Not shown: 991 closed ports
PORT     STATE SERVICE
80/tcp   open  http
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
443/tcp  open  https
445/tcp  open  microsoft-ds
873/tcp  open  rsync
1025/tcp open  NFS-or-IIS
2869/tcp open  unknown
3389/tcp open  ms-term-servHost script results:
| nbstat:
|   NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
|   Names
|     L<00>                Flags: <unique><active>
|     USER<00>             Flags: <group><active>
|     L<20>                Flags: <unique><active>
|     USER<1e>             Flags: <group><active>
|     USER<1d>             Flags: <unique><active>
|_    \x01\x02__MSBROWSE__\x02<01>  Flags: <group><active>Nmap done: 1 IP address (1 host up) scanned in 2.63 seconds

看时间,2.63秒,这速度很可以了,一般都可以接受,但是,前面在测试nmap命令的时候,已经发现了几个可以提高速度的办法,于是再试(为了节省篇幅,突出重点,下面只列出执行的命令,是否满足要求已经执行时间):

(这个命令指定扫描80端口,是可以扫,但是无法列出主机名,失败)

$ nmap -p80 --script nbstat 192.168.1.88
80/tcp open  http
Nmap done: 1 IP address (1 host up) scanned in 1.17 seconds

(然后注意到了上面139端口的服务是netbios-ssn,所以扫一下139端口试试,这下可以满足要求了,时间也非常快)

$ nmap -p139 --script nbstat 192.168.1.88
139/tcp open  netbios-ssn
|   NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

(又试扫了一下135,也同样成功)

$ nmap -p135 --script nbstat 192.168.1.88
135/tcp open  msrpc
|   NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

(netBIOS也支持UDP的,所以使用-sU参数进行UDP扫描,同样可以扫到,但是因为没有指定端口,所以耗时较长,另外,-sU参数需要root权限才能执行,可以注意到,137端口的服务是netbios-ns,那么下面就只扫137)

$ sudo nmap -sU --script nbstat 192.168.1.88
137/udp  open          netbios-ns
|   NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 4.07 seconds

(只扫137的UDP,同样可以,速度也快)

$ sudo nmap -sU -p137 --script nbstat 192.168.1.88
137/udp open  netbios-ns
|   NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds

(比较下来,还是用TCP扫139合适,速度快,还不需要root,现在再加上其他参数提速,-P0使得nmap不测试指定IP是否存在,直接开始扫,-sT指定只用TCP协议,从结果来看,反而比刚才慢,但是实际上是不慢的,因为不连续执行,差个几十毫秒也是正常,而且nmap可能有一定的缓存时间,第一次用nmap确认一个ip存在后,一段时间内不会再去确认,就和加上-P0参数的效果是一样的,这里手动加上-P0,可以确保在任何时候都一样快)

$ nmap -P0 -sT -p139 --script nbstat 192.168.1.88
139/tcp open  netbios-ssn
|   NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds

(再加一个参数-T4,我也没太搞明白这个参数是干嘛用的,但是在所有nmap命令上加上这个参数后,速度都有一定的提高,所以就加上吧)

$ nmap -P0 -sT -p139 -T4 --script nbstat 192.168.1.88
139/tcp open  netbios-ssn
|   NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

好了,到目前为止,已经完全满足要求了,下面再补充一些在解决问题的过程中,学习到的知识

139,135端口

这两个端口都是netbios协议占用的,只要windows主机,安装了NetBIOS协议,或者说只要可以访问共享文件,那这两个端口一般是打开的,

139是TCP,135的UDP,具体的作用我懒的去复制,反正就是和共享文件有关,通过这两个端口,可以查询共享文件,登录用户名,操作系统等信息,

网上也有好多貌似专业的135,139漏洞攻击方法,实际上大部分都是在危言耸听,这两个端口如果设置的不好,确实会有安全漏洞,但是,XP的默认配置应该安全性还是可以的,不可能说只要开放这个端口,计算机就有危险,

那些所谓教程,都是需要很高的权限才能实现,但是如果有这么高的权限,那随便怎么弄,都是可以轻松入侵的。就跟你把家里的钥匙贴在大门上(还贴个字条说这是我的钥匙),然后忘记关窗户一样,正常的小偷肯定是开门进来而不会去翻窗户的

nmap的其他参数

-sS 使用半开TCP进行测试,关于半开连接,可以参考有关资料(我大概了解,但是写起来太浪费时间),半开连接的好处是可以避免大部分系统把这个连接记录到系统日至,这对入侵者当然很重要了,总不能去别人家里偷东西,还留个手机号码吧。如果使用这个参数,需要root权限,我估计应该是用raw socket实现的,所以需要root权限 -v 这个参数可以出现多次,表示需要nmap现实更详细的报告,还是更更详细的报告,还是更更更详细的报告 另外,IP的表示方法有很多种,比如 192.168.1.88这种是单个IP, 192.168.1,2.88表示192.168.1.88和192.168.2.88 192.168.1-254.88表示254个IP 192.168.1-2,4-100.2,3,12-15表示很多个IP(-.-!) 192.168.1.0/24是另一种表示方法,和192.168.1.0-255等效,后面的24表示这个IP的前24bit保持不变,后面的8bit遍历所有可能 192.168.1.0/0 这个将扫描整个网络,相信没谁有时间等到扫描完

nmap部分示例

扫描192.168.1和192.168.18这两个网段哪些IP开着

$ nmap -sP -T4 192.168.1,18.1-254

这里-sP表示仅进行ping测试,即使主机存在,也不进行端口扫描,这样可以节省时间

nmap 获取主机名相关推荐

  1. python 通过ip获取城市_python shell根据ip获取主机名代码示例

    这篇文章里我们主要分享了python中shell 根据 ip 获取 hostname 或根据 hostname 获取 ip的代码,具体介绍如下. 笔者有时候需要根据hostname获取ip 比如根据m ...

  2. Java使用InetAddress类获取主机名和IP地址

    1.在Java中,地址可以由一个字符串来定义,这个字符串可以是数字型的地址(其中IPv4的地址型式为:192.168.72.1,其中IPv6的地址型式为:fe20:12a0::0abc:1234),也 ...

  3. 局域网内通过ip获取主机名

    局域网内通过ip获取主机名 nbtstat -A IP 只适用于Windows系统,同时只能查找Windows主机

  4. linux qt获取网卡mac地址,QT实战获取主机名QT获取IP地址 获取MAC地址 获取广播地址...

    QT的网络东西也蛮多的,我们今天先学一部分,然后后面在学一部分吧 一个能使用网络的应用,我们需要在项目工程中的pro文件里进行标记QT += core gui #标记 网络 QT += network ...

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

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

  6. java 获取主机名_建议在Java中获取主机名的方法

    问题 以下哪项是获取Java当前计算机主机名的最佳和最便携的方法? Runtime.getRuntime().exec("hostname") VS InetAddress.get ...

  7. python 获取主机名 根据端口杀死进程

    2019独角兽企业重金招聘Python工程师标准>>> ip=os.popen("ifconfig eth0|grep 'inet addr'|awk -F ':' '{p ...

  8. vbs 获取计算机主机名,vbs 获取主机名

    云硬盘备份 VBS 云硬盘备份(Volume Backup Service)为云硬盘创建在线备份,无需关机/重启.针对病毒入侵.人为误删除.软硬件故障等场景,可将数据恢复到任意备份点 ¥0.120¥0 ...

  9. 如何获取主机名和当前登录用户名

    在日常的测试开发工作中,有时会用到保存本机名和当前登录人的erp的功能,同时,不同人使用的操作系统又大同小异,之前用Windows系统时写的代码,到mac就不可用,于是乎,整理了一些常用的python ...

最新文章

  1. 大工19春《计算机原理》在线作业2,大工19春《计算机原理》在线作业2.pdf
  2. build.gradle里dependencies标签页的实现原理
  3. SP1811-Longest Common Substring【SAM】
  4. MongoDB数据库操作
  5. python中的series的结构_pandas 数据结构之Series的使用方法
  6. 怎么看电脑系统是win几_做设计,用win系统 还是苹果MAC电脑更好 (PS举例)
  7. MS SQL Server带有时间的记录怎样查询
  8. BiCubic Interpolation
  9. 关于IPV6审核被拒的完整分析
  10. JAVA之MySQL数据库增删改查【Java入门练手】
  11. 计算机网络之域名系统DNS
  12. md5验证文件完整性
  13. pg_hint_plan 使用hint固定SQL执行计划
  14. php gb18030 utf-8,Unicode UTF-8与GB18030编码解析(golang)
  15. 什么是思维导图?有哪些好用的思维导图工具
  16. Android 短信验证码输入框
  17. Ethyl 2-azidoacetate,637-81-0,叠氮乙酸乙酯MDL: MFCD00190177的分子量是129.117
  18. 如何优雅地追回被骗款项(上篇)
  19. POJ 3255(迪杰斯特拉算法求次短路)
  20. 【3D人脸】Mediapipe Vs Persona

热门文章

  1. mysql 连接串 utf8_mysql 连接url中useUnicode=truecharacterEncoding=UTF-8 的作用
  2. XDP/eBPF — Overview
  3. 计算机组成原理 — IPMI/BMC
  4. Python基本语法_控制流语句_if/while/for
  5. linux终端出现bash: setup.bash: No such file or directory,和.bashrc文件的问题
  6. 关于面试题的一些题型解析
  7. mongodb安装和配置
  8. 测试openssl_encrypt
  9. linux学习笔记十(Raid基本知识)
  10. ORACLE nvarchar2和varchar2的区别