1. 程式人生 > >存活主機發現(基於nmap和Qt)

存活主機發現(基於nmap和Qt)

1.下載nmap並安裝。下載地址:nmap

2.nmap可以將輸出結果定向為xml檔案。因此,可以先通過程序將nmap輸出儲存至xml檔案,然後再去解析xml即可得到掃描的結果。nmap主機發現命令:nmap -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -PE 1-254 -oX nmap_output.xml。一個網段大概2s,還挺快的。引數解析命令如下:

-sn 只ping主機,不掃描埠
-PE 通過ICMP echo判定主機是否存活
-n  不反向解析IP地址到域名
–min-hostgroup 1024    最小分組設定為1024個IP地址,當IP太多時,nmap需要分組,然後序列掃描
–min-parallelism 1024  探針的數目限定最小為1024,和掃描時間有關,當然依賴於系統和網路資源
-oX nmap_output.xml    將結果以檔名nmap_output.xml的XML格式輸出。

3.部分程式碼和執行結果如下:

    qDebug() << "start: " << QDateTime::currentDateTime().toString("hh:mm:ss:zzz");
    QProcess cmd;
    //-sn		只ping主機,不掃描埠 
    //-PE		通過ICMP echo判定主機是否存活 
    //-n		不反向解析IP地址到域名
    //–min-hostgroup 1024 最小分組設定為1024個IP地址,當IP太多時,nmap需要分組,然後序列掃描
    //-min-parallelism 1024 探針的數目限定最小為1024,和掃描時間有關,當然依賴於系統和網路資源 
    //-oX nmap_output.xml   將結果以檔名nmap_output.xml的XML格式輸出
    QString arg("nmap -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -PE  192.168.0.1-254 -oX nmap_output.xml");
    //process.execute(cmd);
    cmd.start(arg);
    cmd.waitForReadyRead();
    cmd.waitForFinished();
    //QString retStr = cmd.readAll();

    readNampOutputXml("nmap_output.xml");

    qDebug() << "over: " << QDateTime::currentDateTime().toString("hh:mm:ss:zzz");
QStringList readNampOutputXml(QString fileName)
{
    QStringList lstUpHostIP;
    if (fileName.isEmpty())
    {
        qDebug() << QStringLiteral("fileName is empty!");
        return lstUpHostIP;
    }
    pugi::xml_document xmlDoc;
    if (!xmlDoc.load_file(fileName.toLocal8Bit().data(), pugi::parse_default,     pugi::encoding_utf8)) 
    {
        qDebug() << QStringLiteral("read file failed!");
        return lstUpHostIP;
    }
    pugi::xml_node nodeHostInfos = xmlDoc.child("nmaprun");
    for (pugi::xml_node nodeHost = nodeHostInfos.first_child(); nodeHost; nodeHost =     nodeHost.next_sibling())
    {
        for (pugi::xml_node nodeAddr = nodeHost.first_child(); nodeAddr; nodeAddr =      nodeAddr.next_sibling())
        {
            QString nodename = nodeAddr.name();
            if (nodename == "address")
            {
                QString addrtype = nodeAddr.attribute("addrtype").as_string();
                if ("ipv4" == addrtype)
                {
                    QString ip = nodeAddr.attribute("addr").as_string();
                    lstUpHostIP << ip;
                    qDebug() << ip;
                }
            }
        }
    }	
    return lstUpHostIP;
}

destiny

4.剩下的部分是一個小例子,在具體的使用時建議移至子執行緒(xml解析用的是pugixml庫),傳送門:

相關推薦

存活主機發現(基於nmapQt)

1.下載nmap並安裝。下載地址:nmap。 2.nmap可以將輸出結果定向為xml檔案。因此,可以先通過程序將nmap輸出儲存至xml檔案,然後再去解析xml即可得到掃描的結果。nmap主機發現命令:nmap -sn -PE -n --min-hostgroup 1024

基於opencvqt的人臉檢測小系統

idt image span ttext 函數 TE 對話 nta 數量 摘要:利用opencv讀取視頻、圖片並檢測人臉,利用QT顯示窗口,功能選擇等 環境:Ubuntu18.04、OpenCV3.4.0、QT5.10.1 效果圖: 代碼如下(比較簡單沒什麽註釋): ma

基於opencvQT的攝像頭采集代碼( GoQTtemplate3持續更新)

c++開發 linux 安裝 click linu 機制 系統 cannot 代碼 在Linux操作系統上,編寫帶界面的圖像處理程序,選擇opencv+QT是一種很好的選擇。GoQTtemplate3是我為編寫Linux下圖像處理程序實現的框架,希望能夠為大家解決Linux

基於opencvQT的攝像頭採集程式碼( GoQTtemplate3持續更新)

在Linux作業系統上,編寫帶介面的影象處理程式,選擇opencv+QT是一種很好的選擇。 GoQTtemplate3是我為編寫Linux下影象處理程式實現的框架,希望能夠為大家解決Linux環境下桌面影象處理程式,提供一些幫助。 文中相關程式碼請參考:https://github.com

基於opencvQT的人臉(人眼)檢測程式

        在上一篇部落格裡,我們已經實現了對攝像頭或者本地圖片的讀取和輸出功能,並且在程式中預留了進行影象處理的函式位置,本文將建立一個影象處理類,對每一幀影象進行人臉或者人眼識別,並在輸出影象中框選出人臉或者人眼的位置。由於作者的程式開發不僅僅限於人臉識別的功能,

基於LinuxQT/E的軟鍵盤設計

  隨著對嵌入式系統體積小型化和操作人性化的要求,以及大尺寸觸控式顯示屏的廣泛應用,在嵌入式系統中採用軟鍵盤實現字元的輸入,已經成為目前的發展主流。QT是一個跨平臺的C++圖形介面庫,是由挪威TrollTech公司推出的產品。它採用的是面向物件的程式設計思想,因此,具有良好的可擴充套件性和可移植性,同時支

基於tcpqt的簡單聊天室搭建

使用Qt庫中的 <QTcpServer>  和<QTcpSocket>類實現區域網絡下的聊天室。 分為服務端和客戶端; 服務端接收來自各個客戶端的資訊,併發送到所有客戶端; 客戶端用於使用者登陸及聊天。 客戶端: 使用<QTcpSo

shell腳本案例(五)利用nmap批量掃描存活主機

shell腳本 linux shell 掃面 nmap arppinging 利用nmap批量掃描存活主機 知識儲備:grep,nmap 一、安裝nmap 1.安裝編譯環境 [root@arppinging nmap-7.01]# yum install gcc g++ gcc-c++

redhat 7實現基於chap認證的iscsi,包括發現認證,正常認證。

getc 配置方法 redhat 7 啟動 src var yum 源 -o 客戶端 實驗環境:兩臺虛擬機,系統為redhat7.0以上(本文使用redhat 7.5)第一臺虛擬ip地址為ip:192.168.0.118/24 gw:192.168.0.1 hostname

nginx搭建基於IP域名的虛擬主機

本機IP地址eth0: 192.168.4.44 1 新增兩個IP地址繫結到eth0口 [[email protected] ~]# cd /etc/sysconfig/network-scripts/ [[email protected] network-scrip

Qt:終於來了!基於QMLWebGL開發網頁端

序言 Qt早在今年2月,就釋出了WebGL相關的blog http://blog.qt.io/blog/2017/02/22/qt-quick-webgl-streaming/ 並且預計5.10加入這個feature 10個月過去了,Qt在12月7號如約

網路掃描(主機發現埠掃描)

網路掃描     網路掃描是一類重要的網路安全。網路掃描與防火牆,入侵檢測系統相互配合,能夠有效提高網路的安全性。通過對網路的掃描,網路管路員可以瞭解網路的安全配置和執行的應用服務,及時發現安全漏洞,

在windows環境下將基於FFMpegSDL的播放器整合到Qt creator中

然後,你得有在windows下的FFmpeg以及SDL的標頭檔案和庫檔案,上面給的這個連結中,博主已經把所有的標頭檔案和庫檔案都給出來了。 再然後,在QT的工程檔案.pro裡面新增標頭檔案和庫檔案的路徑。關於新增庫檔案的方法,網上有很多種格式,貌似都可以,反正條條大路

linux 下檢視區域網內所有存活主機MAC進址

用namp對區域網掃描一遍,然後檢視arp快取表就可以知道局域內ip-mac的對應了 namp比較強大也可以直接掃描mac地址和埠 進行ping掃描,打印出對掃描做出響應的主機:   nmap -sP 192.168.1.0/24   僅列出指定網路上的每臺主機,不傳送任何

nmap為什麼這麼強大之主機發現

Nmap為什麼這麼強大? made by tdcoming! 1.概述 大家都知道,使用我們的nmap真尼瑪強大,從發現主機,到埠探測,到服務發現,漏洞利用等等,無所不能。在資訊收集方面可謂是不可缺少的神器。那麼我們namp為什麼這麼強大,今天我

apache基於域名埠的虛擬主機

轉自http://blog.chinaunix.net/space.php?uid=12247636&do=blog&id=2953447 為一個同事安裝apache+php+mysql環境,安裝完成後,apache啟動後反應非常慢,折騰了好幾天的時間都不

初識Socket通信:基於TCPUDP協議學習網絡編程

auth bsp servers 客戶 name 本地 監聽 max ava 學習筆記: 1.基於TCP協議的Socket網絡編程:   (1)Socket類構造方法:在客戶端和服務器端建立連接     Socket s = new Socket(hostName,port

C#將Word轉換成PDF方法總結(基於OfficeWPS兩種方案)

path ebs htm soft off ros exc 標題 總結  有時候,我們需要在線上預覽word文檔,當然我們可以用NPOI抽出Word中的文字和表格,然後顯示到網頁上面,但是這樣會丟失掉Word中原有的格式和圖片。一個比較好的辦法就是將word轉換成pdf,然

基於 Arduino IoT 雲平臺搭建物聯網系統

來看 需要 padding .... nal maker post 分層結構 car 在這篇文章中,我們將介紹如何搭建一款監測土壤水分的物聯網系統,用於在土壤幹燥時發出警報,提醒用戶。本項目使用了IoT 雲平臺來管理警報系統,同時存儲來自傳感器的數據。眾所周知,物聯網是當今

MySQL中基於mysqldump二進制日誌log-bin二進制日誌進行邏輯備份以及基於時間點的還原

總結 mysql-bin lin .sql bin -h eat log-bin 之前 本文出處:http://www.cnblogs.com/wy123/p/6956464.html 本文僅模擬使用mysqldump和log-bin二進制日誌進行簡單