首先展示一下效果:
介面通過qt設計師做出來的。
主要有兩個類。
首先主函式:
#include "實現ui迴圈。mainwindow.h
"#include
第乙個類,主窗體類:
#ifndef mainwindow_h因為是用的qt設計師,所以函式名有點挫。#define mainwindow_h#include
#include
#include
#include
#include
"scanner.h
"namespace
ui class mainwindow : public
qmainwindow
;#endif
//mainwindow_h
然後是掃瞄線程類,用來掃瞄埠:
#ifndef scanner_h類實現:#define scanner_h#include
class scanner:public
qthread
;#endif
//scanner_h
#include "view codemainwindow.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()
解釋一下:
有三個互斥訪問變數:當前任務埠nowport, 掃瞄結果 textedit,進度條 progressbar。
在訪問這三個變數的時候要用訊號量實現互斥訪問。
by nianhao@ouc,萬一被查重了不負責。。
更新一波,增加網段掃瞄
首先是ip遍歷函式:
intview codeip2num(qstring ip)
qstring num2ip(
int num)//
:# int num to ip
bool
iprange(qstring ip1,qstring ip2)
通過位運算遍歷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中,我...