终于审核通过了......第一次用博客,想记录自己的学习情况,分享知识。

废话不多说,第一篇blog,大牛请轻喷。

资产清点首先需要进行主机探测,将存活主机统计下来再进行进一步的指纹识别及端口探测。若直接进行全网段IP扫描是很浪费时间的,不如先使用ICMP进行主机存活状态的探测后,再针对的进行扫描。(基于ping的方式有可能有误差,但是这里主要考虑的是效率)

python的第三方nmap模块的安装,网上有相关教程,不多赘述。

由于需要跟踪累计PC存活总数,使用了类方法。但同时遇到的问题就是:使用多进程后会出现以下报错信息:

cPickle.PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed

查了一下解决方法大概有三种:

  1. 用线程替换进程
  2. 可以使用copy_reg来规避上面的异常.
  3. dill 或pathos.multiprocesssing :use pathos.multiprocesssing, instead of multiprocessing. pathos.multiprocessing is a fork of multiprocessing that uses dill. dill can serialize almost anything in python, so you are able to send a lot more around in parallel.

这里使用第一种方法进行修改,直接上代码:

 import nmap
from multiprocessing.pool import ThreadPool as Pool
import time
import csv class Scan(object):
def __init__(self):
self.count = 0 def scan(self, ip):
csv_write =[]
nm = nmap.PortScanner()
nm.scan(hosts=ip, arguments='-n -sn -PE')
hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()]
for host, status in hosts_list:
# print '{0}:{1}'.format(host, status)
csv_write.append([host, status])
name = ip.split('/')[0] + '.csv'
# print name
with open(name, 'wb') as csvfile:
fieldnames = ['ip', 'status']
w = csv.writer(csvfile, dialect='excel')
w.writerow(fieldnames)
w.writerows(csv_write)
print '[+]\"%s\" have saved, %d PC is up' % (name, len(hosts_list))
self.count += len(hosts_list) def get_ips(self, file):
ipList = []
with open(file) as f:
for line in f.readlines():
ipList.append(line.strip())
return ipList def run(self):
startTime = time.time()
print '[+]Scanning...'
ip_txt = 'C:\zichan.txt'
ipList = self.get_ips(ip_txt)
# print ipList
pool = Pool(5)
resultList = pool.map(self.scan, ipList)
pool.close()
pool.join()
endTime = time.time()
print '------------------------------------------------------'
print '[+]Scanning cost %ss, %d PC is up.' % (endTime - startTime, self.count)
print '[+]Done.' if __name__ == '__main__':
myScan = Scan()
myScan.run()

比较简单的方法实现,实际情况下扫描7个内网B段大概不到一个半小时,讲道理比直接使用nmap快很多(对比的nmap现在还没有跑完,嗯)

保存格式为CSV文件,控制台输出如下:

后面会尝试优化,并添加新的功能如端口扫描、系统指纹、漏洞探测等,这次就这样!水平有限,嘻嘻。

python nmap模块使用进行主机探测(ICMP)的更多相关文章

  1. python nmap模块 端口探测

    今天添加端口探测功能,主要实现方式是通过nmap模块调用,扫描1-65535端口.上一篇中已经将UP的PC机全部获取到,这里直接从已知在线的PC中进行端口扫描就可以了,会节省很多时间. 代码如下,还是 ...

  2. python(nmap模块、多线程模块)

    http://xael.org/pages/python-nmap-en.html       nmap模块 http://www.tutorialspoint.com/python/python_m ...

  3. Nmap的活跃主机探测常见方法

    最近由于工作需求,开始对Nmap进行一点研究,主要是Nmap对于主机活跃性的探测,也就是存活主机检测的领域. Nmap主机探测方法一:同网段优先使用arp探测: 当启动Namp主机活跃扫描时候,Nma ...

  4. 7.python实现高效端口扫描器之nmap模块

    对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块. 本片文章主要介绍nmap模块的两个常用类: PortScanner()类,实现一个nma ...

  5. 端口扫描器--利用python的nmap模块

    安装nmap模块挺麻烦的,搞了半天 不仅要安装pip install nmap 还要sudo apt install nmap 给出代码,没有设多线程,有点慢,注意端口的类型转换,搞了很久 #!/us ...

  6. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

  7. Python::OS 模块 -- 进程管理

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的文件相关操作参看 Python::OS 模块 -- 文件和目录操作 os模块的进程参数 Python::OS 模块 -- 进程参数 ...

  8. python 各模块

    01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...

  9. 一步一步学Python(2) 连接多台主机执行脚本

    最近在客户现场,每日都需要巡检大量主机系统的备库信息.如果一台台执行,时间浪费的就太冤枉了. 参考同事之前写的一个python脚本,配合各主机上写好的shell检查脚本,实现一次操作得到所有巡检结果. ...

随机推荐

  1. windows 系统 python3.5安装 lxml 库

    有个提示uable find vc***,的错误,如果按照修改python脚本的方法会发现还需要安装VS,安装好了还不一定可以解决问题. 费了半天劲,结合网络上部分信息终于找到了解决方案: 1.打开文 ...

  2. Mixamo Fuse10分钟创建角色

    http://edu.manew.com/course/132 太6了

  3. OpenLayers3之ol.control.ZoomToExtent

    controls: ol.control.defaults().extend([new ol.control.ZoomToExtent({ extent:[Number(box[]), Number( ...

  4. Linux VFS机制简析(一)

    Linux VFS机制简析(一) 本文主要基于Linux内核文档,简单分析Linux VFS机制,以期对编写新的内核文件系统(通常是给分布式文件系统编写内核客户端)的场景有所帮助. 个人渊源 切入正文 ...

  5. 【Linux】快速清空当前文件

    $ : > filename $ > filename $ echo "" > filename $ echo > filename $ cat /dev/ ...

  6. JavaScript资源分享

    一. 资源教程: 综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v2.2 En类资源汇总 免费的编程中文书籍索引 ...

  7. vue路由配置

    1.安装 npm install vue-router --save / cnpm install vue-router --save 2.引入并 Vue.use(VueRouter) (main.j ...

  8. C#基础知识-数组_ArrayList_List(九)

    之前两篇文档讲述了C#中的面向对象的概念,其实这个概念对于很多种语言都是通用的,只不过每种语言具体实现的过程方法不一样,比如Java.C++.python等,这些都是很流行的面向对象的语言在编程语言排 ...

  9. C#中TransactionScope的使用方法和原理(摘)

    出自51CTO博客:http://cnn237111.blog.51cto.com/2359144/1271600 在.net 1.1的时代,还没有TransactionScope类,因此很多关于事务 ...

  10. main方法击破

    什么是main方法? 是类中的一段代码,可以让程序独立运行. public class HelloWord{ public static void main(String[] args) { for ...