From df2c61b603c27f7bba71e43b46eae9333504625f Mon Sep 17 00:00:00 2001 From: fong Date: Mon, 29 Jan 2024 18:58:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=86=E5=8F=91=20Signed-o?= =?UTF-8?q?ff-by:=20fong=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ip_sacaner/ip_sacaner.pro.user | 199 +++++++++++++++++++------------ ip_sacaner/scan_run.cpp | 211 +++++---------------------------- ip_sacaner/scan_run.h | 21 ++-- ip_sacaner/widget.cpp | 97 ++++++--------- ip_sacaner/widget.h | 3 + 5 files changed, 201 insertions(+), 330 deletions(-) diff --git a/ip_sacaner/ip_sacaner.pro.user b/ip_sacaner/ip_sacaner.pro.user index 8776f24..98440b3 100644 --- a/ip_sacaner/ip_sacaner.pro.user +++ b/ip_sacaner/ip_sacaner.pro.user @@ -1,14 +1,14 @@ - + EnvironmentId - {948b996b-b06e-44d3-a8b0-300fbbde1481} + {c0551a2b-a2b8-4aaa-a5a1-aa196a894dec} ProjectExplorer.Project.ActiveTarget - 0 + 0 ProjectExplorer.Project.EditorSettings @@ -28,7 +28,7 @@ QmlJSGlobal - 2 + 2 UTF-8 false 4 @@ -37,7 +37,6 @@ true true 1 - false true false 0 @@ -46,73 +45,53 @@ 0 8 true - false 1 true true true - *.md, *.MD, Makefile false - true ProjectExplorer.Project.PluginSettings - - true - false - true - true - true - true - - - 0 - true -fno-delayed-template-parsing true - Builtin.BuildSystem - - true - true - Builtin.DefaultTidyAndClazy - 8 - - - - true - ProjectExplorer.Project.Target.0 - Desktop - Desktop Qt 6.2.2 MinGW 64-bit - Desktop Qt 6.2.2 MinGW 64-bit - qt.qt6.622.win64_mingw_kit - 0 - 0 - 0 + Desktop Qt 5.14.2 MinGW 64-bit + Desktop Qt 5.14.2 MinGW 64-bit + qt.qt5.5142.win64_mingw73_kit + 0 + 0 + 0 - 0 - C:\Users\wuwen\Desktop\tcp_ip_scan\build-ip_sacaner-Desktop_Qt_6_2_2_MinGW_64_bit-Debug - C:/Users/wuwen/Desktop/tcp_ip_scan/build-ip_sacaner-Desktop_Qt_6_2_2_MinGW_64_bit-Debug + C:/Users/wuwen/Desktop/2024project/tcp_ip_scan/build-ip_sacaner-Desktop_Qt_5_14_2_MinGW_64_bit-Debug true QtProjectManager.QMakeBuildStep + true + false - + false + false true Qt4ProjectManager.MakeStep + + false + + + false - 2 + 2 Build Build ProjectExplorer.BuildSteps.Build @@ -121,37 +100,46 @@ true Qt4ProjectManager.MakeStep + + true clean + + false - 1 + 1 Clean Clean ProjectExplorer.BuildSteps.Clean 2 false - - false Debug Qt4ProjectManager.Qt4BuildConfiguration 2 - C:\Users\wuwen\Desktop\tcp_ip_scan\build-ip_sacaner-Desktop_Qt_6_2_2_MinGW_64_bit-Release - C:/Users/wuwen/Desktop/tcp_ip_scan/build-ip_sacaner-Desktop_Qt_6_2_2_MinGW_64_bit-Release + C:/Users/wuwen/Desktop/2024project/tcp_ip_scan/build-ip_sacaner-Desktop_Qt_5_14_2_MinGW_64_bit-Release true QtProjectManager.QMakeBuildStep + false + false - + false + true true Qt4ProjectManager.MakeStep + + false + + + false - 2 + 2 Build Build ProjectExplorer.BuildSteps.Build @@ -160,39 +148,46 @@ true Qt4ProjectManager.MakeStep + + true clean + + false - 1 + 1 Clean Clean ProjectExplorer.BuildSteps.Clean 2 false - - false Release Qt4ProjectManager.Qt4BuildConfiguration 0 - 0 - 0 - C:\Users\wuwen\Desktop\tcp_ip_scan\build-ip_sacaner-Desktop_Qt_6_2_2_MinGW_64_bit-Profile - C:/Users/wuwen/Desktop/tcp_ip_scan/build-ip_sacaner-Desktop_Qt_6_2_2_MinGW_64_bit-Profile + C:/Users/wuwen/Desktop/2024project/tcp_ip_scan/build-ip_sacaner-Desktop_Qt_5_14_2_MinGW_64_bit-Profile true QtProjectManager.QMakeBuildStep + true + false - + true + true true Qt4ProjectManager.MakeStep + + false + + + false - 2 + 2 Build Build ProjectExplorer.BuildSteps.Build @@ -201,59 +196,117 @@ true Qt4ProjectManager.MakeStep + + true clean + + false - 1 + 1 Clean Clean ProjectExplorer.BuildSteps.Clean 2 false - - false Profile Qt4ProjectManager.Qt4BuildConfiguration 0 - 0 - 0 - 3 + 3 - 0 + 0 Deploy Deploy ProjectExplorer.BuildSteps.Deploy 1 - - false ProjectExplorer.DefaultDeployConfiguration - 1 + 1 + + dwarf + + cpu-cycles + + + 250 + + -e + cpu-cycles + --call-graph + dwarf,4096 + -F + 250 + + -F true + 4096 + false + false + 1000 + true + + false + false + false + false + true + 0.01 + 10 + true + kcachegrind + 1 + 25 + + 1 true - + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/wuwen/Desktop/tcp_ip_scan/ip_sacaner/ip_sacaner.pro - C:/Users/wuwen/Desktop/tcp_ip_scan/ip_sacaner/ip_sacaner.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/wuwen/Desktop/2024project/tcp_ip_scan/ip_sacaner/ip_sacaner.pro + C:/Users/wuwen/Desktop/2024project/tcp_ip_scan/ip_sacaner/ip_sacaner.pro + + false + false true true + false false true + + C:/Users/wuwen/Desktop/2024project/tcp_ip_scan/build-ip_sacaner-Desktop_Qt_5_14_2_MinGW_64_bit-Debug - 1 + 1 ProjectExplorer.Project.TargetCount - 1 + 1 ProjectExplorer.Project.Updater.FileVersion diff --git a/ip_sacaner/scan_run.cpp b/ip_sacaner/scan_run.cpp index 1867649..799e601 100644 --- a/ip_sacaner/scan_run.cpp +++ b/ip_sacaner/scan_run.cpp @@ -29,35 +29,6 @@ quint32 ipv4str_to_int(const QString& ipstr) void trytry::run() { - if (ipint != 0 && ipstr != "") - { - //qDebug()<append(temp); - //qDebug() << ipstr<<":"<< ipint; - //msleep(1); - *outputbusy-=1; - } - m_socket.disconnectFromHost(); - m_socket.disconnect(); - - - //while(*barbusy); - //*barbusy+=1; - - //str.asprintf("停止 %.3f",((0.0+*nt_bar)/(0.0+*t_bar))*100); - //bt->setText(QString("%1%").arg(((0.0+*nt_bar)/(0.0+*t_bar))*100)); - //qDebug()<<*nt_bar<<"/"<<*t_bar; - //*barbusy-=1; - - //*now_thread_num-=1; - } } dispatch::dispatch() @@ -66,180 +37,54 @@ dispatch::dispatch() } -void dispatch::tray(const QString& ipstr, quint32 ipint) -{ - - - - //qDebug()<<"thread "< set_thread_num) - { - //qDebug()<<"while "<ipstr = ipstr; - try_telnet->ipint = ipint; - try_telnet->timeout = timeout; - try_telnet->output_list = output_list; - - - try_telnet->now_thread_num = &now_thread_num; - - try_telnet->t_bar=t_bar; - try_telnet->nt_bar=nt_bar; - - try_telnet->outputbusy=&outputbusy; - try_telnet->barbusy=&barbusy; - - - - //try_telnet->moveToThread(main_thread); - - connect(try_telnet,&QThread::started,[=]() - { - now_thread_num+=1; - - thread_start_lock=0; - - }); - connect(try_telnet,&QThread::finished,[=]() - { - now_thread_num-=1; - - }); - - while(thread_start_lock); - try_telnet->start(); - thread_start_lock=1; - - *nt_bar+=1; - emit dispatch_one(); -} void dispatch::run() { - - - //qDebug()<< ui->IP_list->toPlainText(); - - //the_bar->setValue(20); - - //QTcpSocket* m_socket = new QTcpSocket; - - QStringList str_ip_list = ip_list->toPlainText().split("\n"); + QStringList str_ip_list = ip_list.split("\n"); QStringList str_ips_list; - QStringList str_port_list = port_list->toPlainText().split("\n"); + QStringList str_port_list = port_list.split("\n"); QStringList str_ports_list; - - quint32 ips_num=0; quint32 ports_num=0; + QRegExp ex_ipv4 ("^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$"); + QRegExp ex_ipv4_more("^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)-((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$"); + QRegExp ex_ipv4_more2("^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)/(0?[0-9]|1[0-9]|2[0-9]|3[0-2])$"); + QRegExp ex_ipv6 ("^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$"); + QRegExp ex_domain ("^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-zA-Z]{2,}$"); + + for (int i = 0; i < str_ip_list.size(); ++i) { - //qDebug() << str_ip_list.at(i); - str_ips_list = str_ip_list.at(i).split("-"); - if (str_ips_list.size() > 1) + if(ex_ipv4.exactMatch(str_ip_list.at(i))) + { + qDebug() << str_ip_list.at(i)<<" is ipv4"; + }else if(ex_ipv4_more.exactMatch(str_ip_list.at(i))) { - ips_num=ipv4str_to_int(str_ips_list.at(str_ips_list.size() - 1))-ipv4str_to_int(str_ips_list.at(0))+1; + qDebug() << str_ip_list.at(i)<<" is ipv4_more"; + }else if(ex_ipv4_more2.exactMatch(str_ip_list.at(i))) + { + + qDebug() << str_ip_list.at(i)<<" is ipv4_more2"; + }else if(ex_ipv6.exactMatch(str_ip_list.at(i))) + { + + qDebug() << str_ip_list.at(i)<<" is ipv6"; + }else if(ex_domain.exactMatch(str_ip_list.at(i))) + { + + qDebug() << str_ip_list.at(i)<<" is domain"; }else { - - ips_num+=1; - + qDebug() << str_ip_list.at(i)<<" don't know what is thit"; } } - - for (quint32 ii = 0; ii < str_port_list.size(); ii++) - { - str_ports_list = str_port_list.at(ii).split("-"); - if (str_ports_list.size() > 1) - { - - ports_num=str_ports_list.at(str_ports_list.size() - 1).toInt() -str_ports_list.at(0).toInt()+1; - } - else - { - - ports_num+=1; - } - } - - *t_bar=ips_num*ports_num; - *nt_bar=0; - outputbusy=0; - - \ - //qDebug()<<*t_bar; -//***************************** - for (int i = 0; i < str_ip_list.size(); ++i) - { - //qDebug() << str_ip_list.at(i); - str_ips_list = str_ip_list.at(i).split("-"); - if (str_ips_list.size() > 1) - { - - for (quint32 ips = ipv4str_to_int(str_ips_list.at(0)); ips < ipv4str_to_int(str_ips_list.at(str_ips_list.size() - 1)) + 1; ips++) - { - //qDebug() << ipv4int_to_str(ips); - for (quint32 ii = 0; ii < str_port_list.size(); ii++) - { - str_ports_list = str_port_list.at(ii).split("-"); - if (str_ports_list.size() > 1) - { - - for (quint32 prots = str_ports_list.at(0).toInt(); prots < str_ports_list.at(str_ports_list.size() - 1).toInt() + 1; prots++) - { - dispatch::tray(ipv4int_to_str(ips), prots); - } - } - else - { - - dispatch::tray(ipv4int_to_str(ips), str_ports_list.at(0).toInt()); - } - } - } - } - else - { - - for (quint32 ii = 0; ii < str_port_list.size(); ii++) - { - str_ports_list = str_port_list.at(ii).split("-"); - if (str_ports_list.size() > 1) - { - - for (quint32 prots = str_ports_list.at(0).toInt(); prots < str_ports_list.at(str_ports_list.size() - 1).toInt() + 1; prots++) - { - dispatch::tray(str_ips_list.at(0), prots); - } - } - else - { - - dispatch::tray(str_ips_list.at(0), str_ports_list.at(0).toInt()); - - } - } - - } + qDebug() << ips_num; - - //for (unsigned long a = str_ips_list.at(0).toInt();a< str_ip_list.size()>1? str_ips_list.at(1).toInt()+1: str_ips_list.at(0).toInt()+1;a++) - //{ - // qDebug() << a; - //} - - } - - //sleep(1); - while(now_thread_num); emit dispatch_finish(); } diff --git a/ip_sacaner/scan_run.h b/ip_sacaner/scan_run.h index a9e72ad..0469d1a 100644 --- a/ip_sacaner/scan_run.h +++ b/ip_sacaner/scan_run.h @@ -39,22 +39,17 @@ public: dispatch(); - int set_thread_num; - int now_thread_num; - int thread_start_lock=0; + quint16 set_thread_num; + quint16 now_thread_num; + quint16 thread_start_lock=0; quint16 timeout; - quint64 *t_bar; - quint64 *nt_bar; - quint16 outputbusy=0; - quint16 barbusy=0; - //QThread* main_thread; - QPlainTextEdit* ip_list; - QPlainTextEdit* port_list; - QTextEdit* output_list; - trytry* try_telnet; + QString ip_list; + QString port_list; + + + - void tray(const QString& ipstr, quint32 ipint); void run(); signals: diff --git a/ip_sacaner/widget.cpp b/ip_sacaner/widget.cpp index 17d2e8e..b9ff289 100644 --- a/ip_sacaner/widget.cpp +++ b/ip_sacaner/widget.cpp @@ -20,81 +20,56 @@ Widget::Widget(QWidget *parent) { ui->setupUi(this); - //qDebug("hello world"); - + ui->outputlist->setReadOnly(true); + ui->stard_scan->setText("start scan"); + connect(this,&Widget::start_scan,[=]{ + scan_flag=1; + ui->IP_list->setReadOnly(true); + ui->port_list->setReadOnly(true); + ui->timeout->setReadOnly(true); + ui->threads->setReadOnly(true); + ui->stard_scan->setText("stop scan"); + dispatch_thread = new dispatch;//线程分发 + dispatch_thread->ip_list=ui->IP_list->toPlainText(); + dispatch_thread->port_list=ui->port_list->toPlainText(); + dispatch_thread->set_thread_num = ui->threads->value(); + dispatch_thread->now_thread_num = 0; + dispatch_thread->timeout = ui->timeout->value(); + connect(dispatch_thread,&dispatch::dispatch_finish,[=]{ + emit stop_scan(); + }); + dispatch_thread->start(); + }); - //main_thread = new QThread(this); - //main_thread->start(); - connect(ui->stard_scan, &QPushButton::pressed, [=]() - { + connect(this,&Widget::stop_scan,[=]{ + scan_flag=0; + ui->IP_list->setReadOnly(false); + ui->port_list->setReadOnly(false); + ui->timeout->setReadOnly(false); + ui->threads->setReadOnly(false); + ui->stard_scan->setText("start scan"); + qDebug() << "tray_exit"; + dispatch_thread->disconnect(); + dispatch_thread->terminate(); + delete dispatch_thread; + }); + connect(ui->stard_scan, &QPushButton::pressed, [=]() + { if(scan_flag==0) { - scan_flag=1; - - ui->IP_list->setReadOnly(true); - ui->port_list->setReadOnly(true); - ui->timeout->setReadOnly(true); - ui->threads->setReadOnly(true); - ui->stard_scan->setText("停止"); - - - //dispatch* dispatch_thread; - dispatch_thread = new dispatch; - - dispatch_thread->ip_list = ui->IP_list; - dispatch_thread->port_list = ui->port_list; - dispatch_thread->output_list = ui->outputlist; - - - dispatch_thread->set_thread_num = ui->threads->value(); - dispatch_thread->now_thread_num = 0; - dispatch_thread->timeout = ui->timeout->value(); - - dispatch_thread->nt_bar=&nt_bar; - dispatch_thread->t_bar=&t_bar; - - //dispatch_thread->main_thread = main_thread; - //dispatch_thread->moveToThread(main_thread); - connect(dispatch_thread, &dispatch::dispatch_one, [=]() - { - //qDebug()<<100*nt_bar/t_bar; - //ui->t_bar->setValue(100*nt_bar/t_bar); - ui->stard_scan->setText(QString("停止 %1%").arg(100*nt_bar/t_bar)); - - }); - connect(dispatch_thread, &dispatch::finished, [=]() - { - qDebug() << "dispatch_finish"; - ui->IP_list->setReadOnly(false); - ui->port_list->setReadOnly(false); - ui->timeout->setReadOnly(false); - ui->threads->setReadOnly(false); - ui->stard_scan->setText("开始扫描"); - scan_flag=0; - - disconnect(dispatch_thread); - //delete dispatch_thread; - }); - dispatch_thread->start(); + emit start_scan(); }else { - qDebug() << "tray_exit"; - dispatch_thread->terminate(); + emit stop_scan(); } });//'scan button pass' - - - - //connect(ui->IP_list,&QTextEdit::textChanged,this, &Widget::auto_edit); - - } Widget::~Widget() diff --git a/ip_sacaner/widget.h b/ip_sacaner/widget.h index 234185b..69bd838 100644 --- a/ip_sacaner/widget.h +++ b/ip_sacaner/widget.h @@ -33,6 +33,9 @@ public: quint64 t_bar=0; quint64 nt_bar=0; +signals: + void stop_scan(); + void start_scan(); private: Ui::Widget* ui;