利用 python-nmap模块进行端口扫描,简单的实现方式

实现了三种输入方式

1)单个端口扫描,例如 python scanport.py -H host -P port

2)多个端口扫描,例如 python scanport.py -H host -P port1,port2,.....

3)连续端口扫描,例如 python scanport.py -H host -P start_port-end_port

#coding:utf-8

import nmap

import optparse

import sys

class INFO:

HEADER = '\033[95m'

OKBLUE = '\033[94m'

OKGREEN = '\033[92m'

WARNING = '\033[93m'

ARNING = '\033[93m'

FAIL = '\033[91m'

ENDC = '\033[0m'

BOLD = '\033[1m'

UNDERLINE = '\033[4m'

def scanport(host, port):

nm =nmap.PortScanner()

try:

result = nm.scan(host,port)

state = result['scan'][host]['tcp'][int(port)]['state']# 多层字典嵌套取值

if state =='open':

print INFO.OKBLUE+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDC

else:

print INFO.WARNING+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDC

except Exception,e:

raise e

if __name__ == '__main__':

parser = optparse.OptionParser("usage %prog -H -p or -p -")

parser.add_option('-H', dest='Host', type='string', help='specify target host')

parser.add_option('-P', dest='Port', type='string', help='specify target port[s] separated by "-"'or ",")

(options, args) = parser.parse_args()

if options.Host ==None or options.Port==None:

print parser.usage

sys.exit()

host = options.Host

ports = options.Port

print host,ports

#如果是连续的端口

if '-' in ports:

ports_list = ports.split('-')

for p in range(int(ports_list[0]),int(ports_list[1])+1):

scanport(host, str(p))

#其他的情况

else:

ports_list = ports.split(',')

for p in ports_list:

scanport(host, p)

上面的代码有点复杂,改良之后的代码如下:

优化结构

import nmap,argparse, sys

class INFO:

HEADER = '\033[95m'

OKBLUE = '\033[94m'

OKGREEN = '\033[92m'

WARNING = '\033[93m'

ARNING = '\033[93m'

FAIL = '\033[91m'

ENDC = '\033[0m'

BOLD = '\033[1m'

UNDERLINE = '\033[4m'

def scan_port(host, port):

nm = nmap.PortScanner()

try:

result= nm.scan(host,port)

print result

state = result['scan'][host]['tcp'][int(port)]['state']

if state == 'open':

print INFO.OKBLUE+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDC

else:

print INFO.WARNING + '[*] ' + host + ' tcp/' + port + " " + state + INFO.ENDC

except Exception,e:

raise e

def get_args():

parger = argparse.ArgumentParser(description='port scan script')

parger.add_argument('-H', '--host', help='specify target host')

parger.add_argument('-P', '--port', help='specify target port')

args = parger.parse_args()

print args

if args.host == None:

parger.error('host is required')

sys.exit()

if args.port == None:

parger.error('host is required')

sys.exit()

else:

return args

def main():

args = get_args()

if '-' in args.port:

ports_list = args.port.split('-')

for p in range(int(ports_list[0]),int(ports_list[1])+1):

scan_port(args.host, str(p))

else:

ports_list = args.port.split(',')

for p in ports_list:

scan_port(args.host, p)

if __name__ == '__main__':

main()

python 端口扫描_使用 python-nmap 进行端口扫描相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. 需要额外端口信息_使用Python进行TCP端口扫描

    使用Python进行TCP端口扫描 首先我们供给一台主机,要进行的步骤就是对其主机端口的扫描,查看其中开放的端口. 我们创建一个TCP的全连接的扫描器,使用socket来创建连接器. 扫描端口开放 # ...

  4. python病毒扫描器_基于Python的病毒扫描机制

    构建集中式病毒扫描机制(ClamAV) Clam AntiVirus(ClamAV)是一款免费而且开源的防毒软件,软件与病毒库的更新皆有社区免费发布,官网地址:http://www.clamav.ne ...

  5. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  6. python queue 调试_学Python不是盲目的,是有做过功课认真去了解的

    有多少伙伴是因为一句'人生苦短,我用Python'萌生想法学Python的!我跟大家更新过很多Python学习教程普及过多次的Python相关知识,不过大家还是还得计划一下Python学习路线!Pyt ...

  7. python网页版_经典python学习教程:20行代码打造一个微信群聊助手,解放双手

    今天的Python学习教程教大家如何用20行Python代码实现微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的 ...

  8. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  9. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  10. 采用python解决实际问题_应用 Python 解决一些实际问题

    应用 Python 解决一些实际问题 韦建明 2004 年 1 月 10 日发布 关于Python Python 是一种简洁优美的编程语言,它具有面向对象的特征,较好的粘合其他语言的能力及跨平台性.然 ...

最新文章

  1. java 中策略模式_JAVA中的策略模式
  2. WinExec、ShellExecute用法详解
  3. radio按扭设置只读_disabled属性样式问题
  4. 谈EXPORT_SYMBOL使用
  5. QT的QSignalBlocker类的使用
  6. Enterprise Library 4.1 快速上手(图)
  7. 编辑php程序推荐的软件,PHP程序员都爱用的开发工具推荐
  8. Shell中字符串、数值的比较
  9. Vue中的scoped和scoped穿透
  10. Android给scrollView截图超过屏幕大小形成长图
  11. 为什么像王者荣耀这样的游戏Server不愿意使用微服务??
  12. 多智能体强化学习MAPPO源代码解读
  13. BAT批处理文件 一键开启卓越性能电源计划方案
  14. 火狐Android 附加组件,Firefox Nightly 隐藏新功能,让 Android 机用上任意桌面端附加组件...
  15. 前端实现模糊查询不区分大小写
  16. 一个微信小程序的案例
  17. python pcm 静音_使用静音检测分割音频文件
  18. word排版技巧:论文图表目录制作步骤
  19. 总结了一下小半辈子发现三点:
  20. SQL SERVER实验-- 数据检索

热门文章

  1. linux下kegg注释软件,网页工具KOBAS进行KEGG富集分析
  2. 5254. 卖木头块 动态规划
  3. 周鸿祎:做到这五点,才算是好用户体验
  4. WIN10系统“计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系“的解决办法
  5. 彻底清除计算机磁盘上的病毒,电脑硬盘病毒无法彻底删除怎么办
  6. excel 某个单元格不是等于空值,Excel返回第一个与所有非空单元格及统计数量,把空单元格替换为0...
  7. Jenkins配置邮件, Extended E-mail Notification, 破解管理员密码
  8. Python处理Excel数据分组
  9. 8卡gpu服务器是8个芯片,GPU服务器 4GPU 8GPU 运算卡
  10. ES6新特性-前端面试问题