nmap主机发现格式化输出

作为一个运维人员,内部有大量的主机,如何发现哪些主机是存活的,最好的工具还是nmap,但是nmap输出的数据太多,如何过滤自己需要的数据。本来主要介绍利用Python脚本 过滤nmap 输出结果,存入csv文件中。

0x00 nmap 扫描命令

  1. 参考资料

(1)nmap中文手册

https://nmap.org/man/zh/

(2)NMAP 输出XML文件详解

http://www.insecure.org/nmap/data/nmap.dtd

  1. nmap ping探测扫描,以xml格式输出结果
    nmap -sP -ox nping.xml 192.168.2.0/24

ping 模式扫描192.168.2.0/24 网段,并以xml格式输出结果,输出结果文件为nping.xml

nmap -sP -iL test.txt -oX ceshi.xml XML输出

ping 模式扫描test.txt 文件中的地址,并以xml格式输出结果,输出结果文件为nping.xml

0x01 Python代码解析xml文件,存入csv文件

此脚本未写异常处理,如需要处理请自行编写

#coding:utf-8
import csv
from xml.etree import ElementTree as et
# version Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32
def Get_ip(f_xml): #清洗xml数据
    file_xml=f_xml  #XML文件名
    sum=[]          #返回结果列表变量
    data=open(file_xml).read()
    root=et.fromstring(data)
    t1= root.findall("host") 

    for t2 in t1:
        #s2=[]  # s2[0] save hosts ip address, s2[1] save hosts status
        s2={"ip":"null","status":"null"} #存放主机IP地址和状态

        for t3 in t2:
            if(t3.tag=="status"):
               #s2.append(t3.attrib["state"]) # Get hosts status
               s2["status"]=t3.attrib["state"] #存放主机状态
            
            elif(t3.tag=="address"):
                if(t3.attrib["addrtype"]=="ipv4"):
                    #s2.append(t3.attrib["addr"])
                    s2["ip"]=t3.attrib["addr"] #存放主机IP地址
                    #sum.append(s2[::-1])    # Get hosts IP address,s2[::-1]:Reverse s2
                    sum.append(s2)  #将字典s2存入列表sum变量中

                                    
    return sum

def Write_csv(f_csv,datas): #写入csv文件中
    file_csv=f_csv     #csv文件名
    datas=datas        #需要写入文件的数据
    headers=["ip","status"]

    f=open(file_csv,"wb")
    writer = csv.DictWriter(f,fieldnames=headers)
    writer.writerows(datas)
    f.close()

if __name__ == '__main__':
    file_xml="nping.xml" #需要清洗的xml文件
    file_csv="test.csv"  #需要保存到的csv文件

    s1=Get_ip(file_xml)
    Write_csv(file_csv,s1)

0x02 格式化数据

  • Get_ip方法,清洗后格式
[{'status': 'up', 'ip': '192.168.2.1'}, {'status': 'up', 'ip': '192.168.2.2'}]
  • Write_csv方法,存入csv格式为


    图片.png

0x03 其他方法实现

其实Python 有一个python-nmap包可以直接调用nmap,可以参考
https://thief.one/2017/05/02/1/
https://pypi.org/project/python-nmap/
https://xael.org/pages/python-nmap-en.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,151评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,465评论 3 405
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,429评论 0 368
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,147评论 1 301
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,149评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,614评论 1 315
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,965评论 3 429
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,950评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,486评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,524评论 3 347
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,640评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,228评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,976评论 3 340
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,407评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,552评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,215评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,714评论 2 366