通过python-nmap实现portscan

通过python使用python-nmap库来实现端口扫描功能,昨天的py代码如果有防火墙的话就无法检测出来了。然后了解到python-nmap库,可以调用nmap来进行扫描。能够绕过防火墙过滤检测端口是否开放。比如昨天的图 znmap检测到路由器1900端口开放,而portscan并没有检测到。

使用nmap-py的话

注:使用之前请sudo pip install python-nmap

默认安装版本是0.6.1

源码如下:

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('usage -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
        print '[-] You must specify a target host and port[s].'
        exit(0)
    for tgtPort in tgtPorts:
        nmapScan(tgtHost,tgtPort)
if __name__ == '__main__':
    main()

 

0

Related Posts

Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据