Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。其基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。它 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作,因此也常被黑客所青睐。本文以Centos7为例,用python实现NMAP进行端口扫描。

一、安装NMAP

1.下载NMAP源码

cd /usr/src
git clone https://github.com/nmap/nmap.git

2.进行编译安装

cd nmap
./configure

(若安装过程中报错,如make[1]:g++:conmand not found等,则需要安装一下依赖库)

 yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++

接下来进行编译

make
make install

出现以上界面表示安装成功

3.清除安装时生成的临时文件

make clean

4.查看nmap的版本

nmap version

成功安装nmap

二、安装python-nmap

直接通过pip安装(若linux环境下无pip可自行安装)

python -m pip install python-nmap

三、功能实现

安装好以上工具之后,将Nmap import到脚本中,就可以使用Nmap扫描功能了。PortScanner类对象能完成扫描功能,PortScanner类有一个scan()函数,它可将目标和端口的列表作为参数输入,并对他们进行基本的Nmap扫描功能。另外,还可以把目标主机的地址/端口放入数组中备查,并打印出端口的状态。在接下来的部分中,依靠该功能来定位和识别目标。

#!/usr/bin/env Python
import nmap
import optparse def nmapScan(tgtHost,tgtPort):
nmScan=nmap.PortScanner()
nmScan.scan(tgtHost,tgtPort)
state=nmScan[tgtHost]['tcp'][int (tgtPort)]['state']
print("[*]"+tgtHost+" tcp/"+tgtPort+""+state)
def main():
parser=optparse.OptionParser('using%prog'+'-H <target host> -p <target port>')
parser.add_option('-H',dest='tgtHost',type='string',help='specify target host')
parser.add_option('-p',dest='tgtPort',type='string',help='specify target port[s] separated by comma')
(options,args)=parser.parse_args()
tgtHost=options.tgtHost
tgtPorts=str(options.tgtPort).split(',')
if (tgtHost==None)|(tgtPorts[0]==None):
print(parser.usage)
exit(0)
for tgtPort in tgtPorts:
nmapScan(tgtHost,tgtPort)
if __name__ =='__main__':
main()

实例如下:

python scan-nmap.py -H 172.22.32.12 -p 21,1720,88,22,25,49,69,80,107,115,161,163,443,514

最新文章

  1. Session的属性
  2. OpenCV2:Mat属性type,depth,step
  3. 【源码笔记】Nop定时任务
  4. 数据库SQL server规则的创建、查看、修改和规则的绑定与松绑、删除
  5. OpenCV安装配置的简单记录
  6. C# 反射/映射学习
  7. BZOJ 1257 余数之和sum
  8. 网页Gzip
  9. php错误日志级别
  10. Linux的环境变量总结
  11. hdu1397(素数组和成偶数的个数 用 标记法)
  12. Java和C++的对比
  13. JavaWeb开发之Servlet
  14. webrtc视频数据解码处理流程
  15. 第五周课后作业——热门软件创新分析+附加题1&amp;附加题3
  16. 利用ApplicationContextAware装配Bean
  17. vs code配置git
  18. [maven] dependency标签理解
  19. Linux/Centos下使用mtr做路由图进行网络分析
  20. Python 类方法

热门文章

  1. Django【第25篇】:后端CORS解决跨域问题
  2. vuex使用方法
  3. 6362. 【NOIP2019模拟2019.9.18】数星星
  4. CSS3制作太极图以及用JS实现旋转太极图
  5. RabbitMQ消息如何100%投递成功(六)
  6. js方法返回多值如何取值demo
  7. flask的请求上下文request对象
  8. JS判断Android、iOS或浏览器的多种方法(四种方法)
  9. postgresql源码编译安装(centos)
  10. ffmpeg 文件推流 rtsp和rtmp