Qt實現埠掃瞄器

2022-02-27 16:36:30 字數 3306 閱讀 5220

首先展示一下效果:

介面通過qt設計師做出來的。

主要有兩個類。

首先主函式:

#include "

mainwindow.h

"#include

實現ui迴圈。

第乙個類,主窗體類:

#ifndef mainwindow_h

#define mainwindow_h#include

#include

#include

#include

#include

"scanner.h

"namespace

ui class mainwindow : public

qmainwindow

;#endif

//mainwindow_h

因為是用的qt設計師,所以函式名有點挫。

然後是掃瞄線程類,用來掃瞄埠:

#ifndef scanner_h

#define scanner_h#include

class scanner:public

qthread

;#endif

//scanner_h

類實現:

#include "

mainwindow.h

"#include

"ui_mainwindow.h

"#include

#include

#include

#include

qmutex percent;

qmutex mutex;

qmutex text;

intnowport;

intstaport;

intendport;

qstring ip;

qtextedit *result;

scanner::scanner()

void

scanner::run()

mutex.

lock

();

int tmpport=nowport++;

mutex.unlock();

emit sentnowport(nowport);

qtcpsocket socket(0);

socket.abort();

socket.connecttohost(ip,tmpport);

if(socket.waitforconnected(1000

))

else;//

qdebug()

stopped=false;}

void

scanner::stop()

mainwindow::mainwindow(qwidget *parent) :

qmainwindow(parent),

ui(newui::mainwindow)

mainwindow::~mainwindow()

void mainwindow::setbar(int

value)

bool

mainwindow::checkip(qstring ip)

//qdebug()<

return

true;}

void

mainwindow::on_pushbutton_clicked()

else

}}void mainwindow::startscanner(qstring ip, int startport, int

endport)

qtcpsocket socket(0);

for(int i=startport;i<=endport;i++)

}void

mainwindow::on_pushbutton_2_clicked()

else

}void

mainwindow::on_pushbutton_3_clicked()

view code

解釋一下:

有三個互斥訪問變數:當前任務埠nowport, 掃瞄結果 textedit,進度條 progressbar。

在訪問這三個變數的時候要用訊號量實現互斥訪問。

by nianhao@ouc,萬一被查重了不負責。。

更新一波,增加網段掃瞄

首先是ip遍歷函式:

int

ip2num(qstring ip)

qstring num2ip(

int num)//

:# int num to ip

bool

iprange(qstring ip1,qstring ip2)

view code

通過位運算遍歷ip位址。

然後我們修改一下run函式,給執行緒分配任務時同時給定ip,這樣實現ip的遍歷void

scanner::run()

nip++;

emit sentnowip(nip);

nowip=num2ip(nip);

qstring msg=qstring("

now the scanning ip is %1

").arg(nowip);

if(nip<=eip)

nowport=staport;

}int tmpport=nowport++;

//發出更新進度條訊號

emit sentnowport(nowport);

mutex.unlock();

//嘗試tcp連線

qtcpsocket socket(0

); socket.abort();

socket.connecttohost(tmpip,tmpport);

if(socket.waitforconnected(1000

))

else;//

qdebug()

stopped=false;}

最後修改一下介面檔案,增加乙個指示全域性進度的進度條。

最終效果:

這樣就完成了網路安全的實驗了。

整個專案的源**:點選這裡

密碼:w1lh

TCP埠掃瞄器

乙個基於python3的tcp埠掃瞄器 原理 就是和不同的埠進行tcp連線,能連線成功就表示此埠是開放的,不能連線成就表示此埠是關閉的。import socket import re import threading import time lock threading.lock threads l...

埠掃瞄器(masscan)

s.exe號稱史上最快 3分鐘掃完全網 掃瞄器小巧而精緻,大小僅僅8k,但是使用上有諸多限制,例如僅支援再winserver2003 上無條件使用,放到其它系統上就要對系統做一些配置,不然無法支援syn方式掃瞄,這顯然不夠友好。nmap掃瞄器,能探知系統型別是否存活等,但是同時獲得更詳細的資訊也就意...

Go埠掃瞄器

這次呢,咱們來實現乙個簡單的tcp埠掃瞄器!也來體驗一下黑客的風采!我們在使用tcp進行連線時,需要知道對方機器的ip port 連線成功的話,流程如下。有正常,就有失敗,如果被連線方關閉的話,流程如下。還有一種可能是,埠開放,但是 防火牆攔截,流程如下。本質理解之後,就可以開始擼 了。在go中,我...