python 端口探测_python nmap模块 端口探测

本文介绍了一个Python端口扫描程序,通过nmap模块扫描1到65535端口,针对已知在线PC进行快速扫描。代码包括错误处理,将扫描结果保存到CSV文件中。
摘要由CSDN通过智能技术生成

今天添加端口探测功能,主要实现方式是通过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了,不知道以后的实验中会不会发生误报,到时候会进行修改调整。

扫描用时比较长,我就展示一下运行中的截图了:

454c7d950fca7767b52a760cfbf94933.png

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

fd0930d40de400bf879cfde35b7ce234.png

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 各模块

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 ...

python之模块ftplib(FTP协议的客户端)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块ftplib(FTP协议的客户端) #需求:快速进行ftp上传 ,下载,查询文件 from ...

随机推荐

ElasticSearch(站内搜索)

简介 Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合.Elasticse ...

VHDL MOD和REM(转)

mod(取模)and rem(取余) VHDL has mod and rem. They return the same value if both arguments are positive. ...

DTCMS视频模版更改,

1.去掉style.css中视频的高度 .video-box{ position:relative; width:100%; height:473px; _clear:both; _display:i ...

idl生成.h .c文件

1.从命令行执行 设置INCLUDE.LIB等,可先运行vsvars32.bat(C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\ ...

obj-c编程15[Cocoa实例03]:MVC以及归档化演示样例

前面的博文里介绍了归档和解档,这里我们把它实际应用到一个简单的代码中去,将它作为一个多文档应用程序的打开和保存的背后支持.另外这里介绍一下MVC思想,这个在不论什么语言里都会有,它是一种设计思想,主要 ...

MyBastis初次环境配置讲解

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...

北航OO第一单元总结

我本着公平公开公正的态度作出以下评价: 1.面向对象真的很修身养性 2.有一个好的身体非常重要 3.互相hack可以暴露人的阴暗面 好了,步入正题. 一.作业分析 1.第一次作业分析 1.1类图 1. ...

linux server 产生大量 Too many open files CLOSE_WAIT激增

情景描述:系统产生大量“Too many open files” 原因分析:在服务器与客户端通信过程中,因服务器发生了socket未关导致的closed_wait发生,致使监听port打开的句柄数到了 ...

Silver 操作Cookie

public class CookiesUtils { public static void SetCookie(String key, String value) { SetCookie(key, ...

常用gcc选项

Makefile有三个非常有用的变量.分别是$@,$^,$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值