序
接着学习。其实,在端口扫描工具里面有一个特别出名,那就是nmap,其官方网站是 https://nmap.org/,而Python里面也有一个nmap模块,此次就是使用 python-nmap 模块,借用nmap模块来进行端口扫描。
nmap安装
我的电脑系统是 Windows 10 ,Python版本是 2.7.13 64bit。最简单的安装方式是:pip install python-nmap
,不过,这样安装的时候,如果网络“不好”,这个不好指的是外网,下载速度会很慢。
于是,可以采用这种方法:pip install -i https://pypi.douban.com/simple/ python-nmap
,这样下载速度会快一些,采用的是豆瓣的源。你也可以在命令行下进入Python,输入help("modules")
,回车看看列表是否包含nmap模块。
端口扫描器代码
# -*- coding: utf-8 -*-
# @Time : 2017/11/19 13:47
# @Author : Liangz
# @Site : www.liangz.org
# @File : NmapScan.py
# @Software: PyCharm
import nmap
# import socket #此处我想借用socket,把域名转换成IP
import optparse
def nmapScan(targetHost, targetPort):
nmScan = nmap.PortScanner()
results = nmScan.scan(targetHost, targetPort)
state = results['scan'][targetHost]['tcp'][int(targetPort)]['state']
print(u"[+] " + targetHost + u" tcp/ " + targetPort + " " + state)
def main():
parser = optparse.OptionParser(u'使用方法:python NmapScan.py -H <目标主机> -p <目标端口>')
parser.add_option('-H', dest='targetHost', type='string', help=u'指定目标主机')
parser.add_option('-p', dest='targetPort', type='string', help=u'指定目标端口')
(options, args) = parser.parse_args()
targetHost = options.targetHost
targetPort = options.targetPort
args.append(targetPort)
if (targetHost == None)|(targetPort == None):
print(u'[-] 你必须指定目标主机和端口!')
exit(0)
for targetPort in args:
nmapScan(targetHost, targetPort)
if __name__ == '__main__':
main()
在我的实验中,这个代码不支持域名,扫描目标只能是IP,是一个缺陷,我会尝试修改修改。另外就是扫描速度很慢,我以百度的IP为目标,扫描 21 22 23 80 443 445 这几个端口。结果几分钟才扫描完成。结果如下:
E:\Projects\Python\20171114>python NmapScan.py -H 115.239.211.112 -p 21 22 23 80 443 445
[*] 115.239.211.112 tcp/ 22 filtered
[*] 115.239.211.112 tcp/ 23 filtered
[*] 115.239.211.112 tcp/ 80 open
[*] 115.239.211.112 tcp/ 443 open
[*] 115.239.211.112 tcp/ 445 filtered
[*] 115.239.211.112 tcp/ 21 filtered
注意
在测试本代码的时候,需要注意,Windows主机上需要安装 nmap ,现在地址为 https://nmap.org/dist/nmap-7.60-setup.exe。我已经经历过这样的教训。我之前没有安装,结果:nmap.nmap.PortScannerError: 'nmap program was not found in path. PATH is : ......
,查到知乎才知道需要在本地计算机上面安装nmap 。
如有错误,敬请指出,谢谢阅读。 –2017-11-19 17:25:07
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了