python 端口扫描_使用 python-nmap 进行端口扫描
利用 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 进行端口扫描相关推荐
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- 需要额外端口信息_使用Python进行TCP端口扫描
使用Python进行TCP端口扫描 首先我们供给一台主机,要进行的步骤就是对其主机端口的扫描,查看其中开放的端口. 我们创建一个TCP的全连接的扫描器,使用socket来创建连接器. 扫描端口开放 # ...
- python病毒扫描器_基于Python的病毒扫描机制
构建集中式病毒扫描机制(ClamAV) Clam AntiVirus(ClamAV)是一款免费而且开源的防毒软件,软件与病毒库的更新皆有社区免费发布,官网地址:http://www.clamav.ne ...
- python 网页编程_通过Python编程检索网页
python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...
- python queue 调试_学Python不是盲目的,是有做过功课认真去了解的
有多少伙伴是因为一句'人生苦短,我用Python'萌生想法学Python的!我跟大家更新过很多Python学习教程普及过多次的Python相关知识,不过大家还是还得计划一下Python学习路线!Pyt ...
- python网页版_经典python学习教程:20行代码打造一个微信群聊助手,解放双手
今天的Python学习教程教大家如何用20行Python代码实现微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的 ...
- python集群_使用Python集群文档
python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...
- python机器学习预测_使用Python和机器学习预测未来的股市趋势
python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...
- 采用python解决实际问题_应用 Python 解决一些实际问题
应用 Python 解决一些实际问题 韦建明 2004 年 1 月 10 日发布 关于Python Python 是一种简洁优美的编程语言,它具有面向对象的特征,较好的粘合其他语言的能力及跨平台性.然 ...
最新文章
- java 中策略模式_JAVA中的策略模式
- WinExec、ShellExecute用法详解
- radio按扭设置只读_disabled属性样式问题
- 谈EXPORT_SYMBOL使用
- QT的QSignalBlocker类的使用
- Enterprise Library 4.1 快速上手(图)
- 编辑php程序推荐的软件,PHP程序员都爱用的开发工具推荐
- Shell中字符串、数值的比较
- Vue中的scoped和scoped穿透
- Android给scrollView截图超过屏幕大小形成长图
- 为什么像王者荣耀这样的游戏Server不愿意使用微服务??
- 多智能体强化学习MAPPO源代码解读
- BAT批处理文件 一键开启卓越性能电源计划方案
- 火狐Android 附加组件,Firefox Nightly 隐藏新功能,让 Android 机用上任意桌面端附加组件...
- 前端实现模糊查询不区分大小写
- 一个微信小程序的案例
- python pcm 静音_使用静音检测分割音频文件
- word排版技巧:论文图表目录制作步骤
- 总结了一下小半辈子发现三点:
- SQL SERVER实验-- 数据检索
热门文章
- linux下kegg注释软件,网页工具KOBAS进行KEGG富集分析
- 5254. 卖木头块 动态规划
- 周鸿祎:做到这五点,才算是好用户体验
- WIN10系统“计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系“的解决办法
- 彻底清除计算机磁盘上的病毒,电脑硬盘病毒无法彻底删除怎么办
- excel 某个单元格不是等于空值,Excel返回第一个与所有非空单元格及统计数量,把空单元格替换为0...
- Jenkins配置邮件, Extended E-mail Notification, 破解管理员密码
- Python处理Excel数据分组
- 8卡gpu服务器是8个芯片,GPU服务器 4GPU 8GPU 运算卡
- ES6新特性-前端面试问题