通过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()
Comments