python nmap模块 端口探测
今天添加端口探测功能,主要实现方式是通过nmap模块调用,扫描1-65535端口。上一篇中已经将UP的PC机全部获取到,这里直接从已知在线的PC中进行端口扫描就可以了,会节省很多时间。
代码如下,还是非常简单的:
import nmap
import time
import csv
import os class Port_Scan(object):
def __init__(self):
self.rootpath = 'C:/cunhuo/'
self.dirpath = 'C:/portScan/'
self.savepath = 'C:/portScan/result.csv'
self.csv_write = [] def get_ip(self, file):
ipList = []
with open(file, 'r') as f:
for ip in f.readlines()[1:]:
ipList.append(ip.strip()[:-3])
return ipList def scan(self, ip):
if not os.path.exists(self.dirpath):
os.mkdir(self.dirpath)
nm = nmap.PortScanner()
try:
nm.scan(ip, arguments='1-65535')
print '[*]Host:%s' % ip
for proto in nm[ip].all_protocols():
lport = nm[ip][proto].keys()
lport.sort()
for port in lport:
self.csv_write.append([ip, port, nm[ip][proto][port]['state']])
print 'port : %s\tstate : %s' % (port, nm[ip][proto][port]['state'])
except:
self.csv_write.append([ip, 'unknown', 'unknown'])
print 'port : unknown\tstate : unknown' def run(self):
print '[+]Scanning...'
startTime = time.time()
files = os.listdir(self.rootpath)
for file in files:
ips = self.get_ip(self.rootpath + file) for ip in ips:
self.scan(ip)
with open(self.savepath,'w') as f:
fieldnames = ['ip', 'port', 'state']
w = csv.writer(f, dialect='excel')
w.writerow(fieldnames)
w.writerows(self.csv_write)
endTime = time.time()
print '------------------------------------------------------'
print '[+]Scanning cost %ss, result have saved %s' % (endTime - startTime, self.savepath)
print '[+]Done.' if __name__ == '__main__':
myScan = Port_Scan()
myScan.run()
这里对于错误捕获的实现有点偷懒了,我们之前扫描出的存活主机可能在端口探测这个脚本执行时离线了,所以如果不加try...except判断的话会跑出keyerror的错误,说结果中的port、state不在字典中。但是这样加判断也有失偏颇...除了离线主机无法探测到,其他情况导致的也一并将port和state设置为unknown了,不知道以后的实验中会不会发生误报,到时候会进行修改调整。
扫描用时比较长,我就展示一下运行中的截图了:

result.csv,为什么中间会有空格呢,奇怪,慢慢改吧

python nmap模块 端口探测的更多相关文章
- python nmap模块使用进行主机探测(ICMP)
终于审核通过了......第一次用博客,想记录自己的学习情况,分享知识. 废话不多说,第一篇blog,大牛请轻喷. 资产清点首先需要进行主机探测,将存活主机统计下来再进行进一步的指纹识别及端口探测.若 ...
- python(nmap模块、多线程模块)
http://xael.org/pages/python-nmap-en.html nmap模块 http://www.tutorialspoint.com/python/python_m ...
- 7.python实现高效端口扫描器之nmap模块
对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块. 本片文章主要介绍nmap模块的两个常用类: PortScanner()类,实现一个nma ...
- 端口扫描器--利用python的nmap模块
安装nmap模块挺麻烦的,搞了半天 不仅要安装pip install nmap 还要sudo apt install nmap 给出代码,没有设多线程,有点慢,注意端口的类型转换,搞了很久 #!/us ...
- 7.安装pycharm----导入Nmap模块----netcat反向shell----metasploitable靶机环境
安装pycharm www.jetbrains.com/pycharm/ tar -zxvf p补全 ls cd p补全 ls cd bin ls ./pycharm.sh 新建项目 pythonRo ...
- Python脚本写端口扫描器(socket,python-nmap)
目录 Socket模块编写 扫描给定主机是否开放了指定的端口 python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放 一个用python写的简单的端口扫描器,python环境为 3. ...
- python 各模块
01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...
- Python ftplib模块
Python ftplib模块 官方文档:https://docs.python.org/3/library/ftplib.html?highlight=ftplib#module-ftplib 实例 ...
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
随机推荐
- Spring Cloud Zuul实现动态路由
1.添加依赖 2.启动类上添加注解 3.配置文件 zuul.ignored-services配置需要忽略的服务,多个用逗号分隔 注释zuul.ignored-services 前: 注释zuul.ig ...
- Angular4+NodeJs+MySQL 入门-03 后台接口定义
这篇里是如何定义接口,我们一般访问接口如:post请求调用http://127.0.0.1:11000/webapi/userinfo/user 这个接口,成功返回用户信息,如果失败要返回失败原因等. ...
- 请求网络图片缓存到本地 ,还有一些现成的图片加载框架的使用 Ace网络篇(一)
现在去买年货~~~~~~ 占坑, 现在来填坑 填完睡觉,感谢这俩月的把自己往死里逼得奋斗从JAVA什么都不懂到现在,做这些也是给在自学路上的新人(我也是菜鸟)一点点我力所能及的帮助,等我水平更高了还会 ...
- groovy与javah互相调用
暂时只找到这几种方法.groovy代码方便灵活.常用来写一些工具.一般都是java加入groovy代码 第一种 java中加入 groovy代码就是 Toy.groovy class Toy{ def ...
- 记一次MongoDB性能问题
下面文章转载自火丁笔记,原作者描述了一次MongoDB数据迁移过程中遇到的性能问题及其解决方案,中间追查问题的方法和工具值得我们学习.下面是其原文: 最近忙着把一个项目从MySQL迁移到MongoDB ...
- Java入门系列-11-类和对象
这篇文章为你搞懂类和对象的使用 对象:用来描述客观事物的实体,由一组属性和方法组成,万物皆对象. 属性:就是对象的特征,像身高.体重.颜色 方法:对象的行为,如跑.跳 类:类是模子,定义对象将会拥有的 ...
- ssm(spring、springmvc、mybatis)框架整合
第一次接触这3大框架,打算一个一个慢慢学,参照网上资料搭建了一个ssm项目,作为新手吃亏在jar包的导入上,比如jdbc DataSource配置的时候由于导入的jar包不兼容或者缺包导致项目无法正常 ...
- javascript方法重载惹的祸
先贴出代码,看看执行结果会是什么? function ShowMsg() { //函数1 this.sure = function () { alert("ok"); }; //函 ...
- 服务器word权限添加
我们的程序部署到IIS上会出现上图所示的错误. 这个是由于IIS没有权限访问word所致. 解决的方法: 在运行对话框中输入: mmc -32 出来如下图的界面: 然后点击"文件&q ...
- WinSock2 API
title: WinSock2 API tags: [WinSock, 网络编程, WinSock2.0 API, 动态加载, WinSock 异步函数] date: 2018-07-21 10:36 ...