5,nmap,2.Lua语言,nmap NSE中的API,host table(表)
书名诸神之眼NMAP 学习笔记
Lua文件I/O操作
打开文件,读一行和关闭文件
代码
函数io.open("文件名","打开方式")
打开文件
函数read()
读取文件第一行
函数close()关闭文件还可以格式io.close(a)
咧
1 | #!/usr/bin/lua |
a.txt文件内容
执行结果
Lua协同程序
- 协同程序和线程类似拥有独立的堆栈、独立的局部变量、独立的指令指针,同时又与其他协同程序共享全局变量和其他大部分东西
- 线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作运行。在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确要求挂起的时候才会被挂起。协同程序有点类似同步的多线程,在等待同一个线程锁的几个线程有点类似协同。
Lua协同程序语法
- coroutine.create()
这个方法用来创建一个coroutine,将要进行多线程的函数作为参数,返回值是一个coroutine。 - coroutine.resume()
这个方法用来完成coroutine重启操作,与create配合使用。 - coroutine.yield()
这个方法用来实现coroutine的挂起操作,将coroutine设置为挂起状态。 - coroutine.status()
这个方法用来查看coroutine的状态。这里coroutine的状态一共有dead、suspend、running三种。 - coroutine.wrap()
这个方法创建一个coroutine,用于返回一个函数,一旦调用这个函数,就进入协同程序,与create功能相同。 - coroutine.running()这个方法返回正在运行的coroutine。一个coroutine就是一个线程,当使用running时,返回的是当前正在运行的协同程序的线程号。
nmap NSE中的API
Nmap中的引擎会向脚本传递两个类型的参数host和port
host 的table(表)存放这目标主机信息
port 的table(表)存放这目标端口信息
他和port和host详细程度取决,扫描过程中选项选项的设定,例如,如果在扫描时没有指定要对主机的操作系统进行扫描的话,那么host.os的内容就是空的
1host table
- host.os字段
里面存放这目标主机的类型
这个字段中包括了一个我们常见的操作系统信息的数组,涉及操作系统的供应商、所属系列、具体型号、设备类型、CPE等。如果某个字段没有被定义的话,这个字段可以为nil
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
上面的代码的意思是return true(真)执行return host.os返回host.os
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
用上面的脚本
命令
1 | sudo nmap --script wode 192.168.43.244 -O -p 3389 |
2. host.ip字段
里面包含了的IP地址
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
用上面的脚本命令
1 | sudo nmap --script wode www.baidu.com -p 80 |
3. host.name字段
里面包含了目标的反向DNS域名
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
不知道怎么回事好像不能检查到
4. host.targetname字段
里面包含了主机的在命令中的命令
5. host.directly_connected字段‘
字段是一个布尔值true和false,表示目标计算机是否与我们同在一个子网
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果1是true,这个我扫描的是我内网
命令
1 | sudo nmap --script wode 192.168.43.221 -p 80 |
结果2是false我扫描的是百度,不是在我内网的
命令
1 | sudo nmap --script wode www.baidu.com -p 80 |
6. host.mac_addr字段
这个字段是目标的MAC地址,注意:要是扫描的不是同一个网段的话可能就没有效果,应为扫描外网是通用IP寻址的
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
命令
1 | sudo nmap --script wode 192.168.43.221 -p 80 |
- host.mac_addr_src
段中是使用的计算机的MAC地址
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
命令
1 | sudo nmap --script wode 192.168.43.1 |
8. host.interface_mtu
字段中是网络中的MTU值
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
命令
1 | sudo nmap --script wode 192.168.43.1 |
9. host.bin_ip字段
字段中的内容是使用4字节字符串表示的IPv4目标地址以及使用16字节字符串来表示IPv6目标地址
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
命令
1 | sudo nmap --script wode 192.168.31.22 -p 3389 |
10. host.bin_ip_src
里面字段中包含两个地址,一个是使用IPv4格式表示所使用的计算机地址,另一个是用IPv6格式表示所使用的计算机地址
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
11. host.times
里面字段中的内容是目标的时序数据
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果
- host.traceroute
字段中的数据只有指定–traceroute才会出现,--traceroute
参数是跟踪路由用于检测您的计算机数据包从路由器到ISP的路由到互联网直至其特定目的地
咧
代码
我保存到了名为wode.nse
1 | local shortport = require "shortport" |
叫wode.nse
移动到/usr/share/nmap/scripts/
文件下面
复制进去要更新一下nmap脚本的数据库
命令
1 | nmap --script-updatedb |
结果