资源简介

一个端口扫描器,可以设定IP范围和端口范围,具体描述见本人博客~~~

资源截图

代码片段和文件信息

#include “csanner.h“
#include “ui_csanner.h“

Csanner::Csanner(QWidget *parent) :
    QDialog(parent)
    ui(new Ui::Csanner)
{
    ui->setupUi(this);
    //一些初始化
    ui->endPortSpinBox->setMaximum(10000);//spinbox可以设置到500,不然只能到99
    startIp = “127.0.0.1“;
    endIp = “127.0.0.2“;
    endPort=1000;
    ui->starIPLineEdit->setText(startIp);
    ui->endIPLineEdit->setText(endIp);
    ui->endPortSpinBox->setValue(endPort);


}

Csanner::~Csanner()
{
    delete ui;
}

int Csanner::Ip2Num(QString ip)
{
    bool ok;
    int lp[4];
    QStringList iplist=ip.split(‘.‘);
    for (int i=0;i        lp[i]=iplist[i].toInt(&ok10);
    return lp[0] << 24 | lp[1] << 16 | lp[2] << 8 | lp[3];
}

QString Csanner::Num2Ip(int num)
{
    int ip[4];
    ip[3] = (num & 0xff);
    ip[2] = (num & 0xff00) >> 8;
    ip[1] = (num & 0xff0000) >> 16;
    ip[0] = (num & 0xff000000) >> 24;
    QString tempIp=QString(“%1“).arg(ip[0])+QString(“.“)+QString(“%1“).arg(ip[1])+QString(“.“)+QString(“%1“).arg(ip[2])+QString(“.“)+QString(“%1“).arg(ip[3]);
    return tempIp;
}




void Csanner::on_beginBtn_clicked()
{
    startIp = ui->starIPLineEdit->text();//从控件中获取值
    endIp = ui->endIPLineEdit->text();
    startPort = ui->startPorSpinBox->value();
    endPort = ui->endPortSpinBox->value();

    ui->portResultTextBrowser->clear();//清除文本

    QTcpSocket socket;
    int sipIntendipInt;
    sipInt = Ip2Num(startIp);
    endipInt = Ip2Num(endIp);

    //进度条设置
    int progressCountIp=1;
    ui->scannerProgressBar->setRange(0(endipInt-sipInt+1)*(endPort-startPort));//最大范围为ip的个数乘以端口数
    for(int tempipInt = sipInt ; tempipInt <= endipInt ; tempipInt++progressCountIp++)
    {

        QString IpString = “Now ip is :“ +Num2Ip(tempipInt);
        ui->portResultTextBrowser->append(IpString);//输出当前遍历的Ip地址。

        for(int i=startPort;i<=endPort;i++)
        {
            socket.abort();
            socket.connectToHost(startIpi);
             ui->scannerProgressBar->setValue(progressCountIp*i);//进度条设置
            if(socket.waitForConnected(10))
            {
              //text.lock(); //这里好像要用到线程管理才行

              QString msg = QString::number(i) +“connected“;//输出那个端口开着
              ui->portResultTextBrowser->append(msg);
              // text.unlock();
              //ui->portResultTextBrowser->setText(msg);

               //  qDebug()<            }

        }
    }
}



void Csanner::on_endBtn_clicked()
{
    close();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2727  2018-05-04 20:38  portsacnner\csanner.cpp

     文件        649  2018-05-04 20:02  portsacnner\csanner.h

     文件        647  2018-05-04 21:02  portsacnner\csanner.h.autosave

     文件       5519  2018-05-04 20:38  portsacnner\csanner.ui

     文件        606  2018-05-04 16:44  portsacnner\main.cpp

     文件       1029  2018-05-04 15:18  portsacnner\portsacnner.pro

     文件      23929  2018-05-04 17:07  portsacnner\portsacnner.pro.user

     目录          0  2018-05-04 21:02  portsacnner

----------- ---------  ---------- -----  ----

                35106                    8


评论

共有 条评论