Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Persian
  4. Man In the Middle Proxy Server
Qt 6.11 is out! See what's new in the release blog

Man In the Middle Proxy Server

Scheduled Pinned Locked Moved Persian
7 Posts 2 Posters 10.8k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    CuteKQ
    wrote on last edited by
    #1

    کسی با کیو اس اس ال ساکت کار کرده اینجا؟

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mohsen
      wrote on last edited by
      #2

      p{direction:rtl; text-align: right}. مشکلت چیه؟

      1 Reply Last reply
      0
      • C Offline
        C Offline
        CuteKQ
        wrote on last edited by
        #3

        ye prxy server benvisam, to brosweram proxy ro set mikonam, ama darkhasti ke browser mide ro nemitoonam az tarighe serveram begiram ... codeesh ham injast

        Server.h

        @ #ifndef SERVER_H
        #define SERVER_H

        #include <QTcpServer>
        #include <QSslSocket>
        #include <QSslKey>
        #include <QDebug>
        #include <QAbstractSocket>
         
        class Server : public QTcpServer
        {
        Q_OBJECT
        public:
        explicit Server(QObject *parent = 0);
         
        signals:
         
        public slots:
         
        private slots:
        void sltEncrypted();
        void sltReadFromClient();
        void sltSslErrors(QList<QSslError> errList);
        void sltSslModeChanged(QSslSocket::SslMode);
        void sltStateChanged(QAbstractSocket::SocketState);
        void sltSocketError(QAbstractSocket::SocketError);
         
        protected:
        void incomingConnection(int socketDescriptor);
        };
        #endif // SERVER_H
        

        @

        Server.cpp

        @ #include "server.h"

        Server::Server(QObject *parent) :
        QTcpServer(parent)
        {
        this->listen(QHostAddress::Any,3555);
        if(this->isListening())
        {
        qDebug()<<"Is listening to port 3555";
        }else{
        qDebug()<<"Listen nemikone";
        }
        qDebug()<<"___________________________________________________";
        qDebug()<<"___________________________________________________";
        }
         
        //************************************************************************************************
         
        void Server::incomingConnection(int socketDescriptor)
        {
        QSslSocket *mySslSocket = new QSslSocket(this);
         
        if(mySslSocket->setSocketDescriptor(socketDescriptor))
        {
        connect(mySslSocket,SIGNAL(encrypted()),this,SLOT(sltEncrypted()));
        connect(mySslSocket,SIGNAL(readyRead()),this,SLOT(sltReadFromClient()));
        connect(mySslSocket, SIGNAL(sslErrors(QList<QSslError>)),
        this, SLOT(sltSslErrors(QList<QSslError>)));
        connect( mySslSocket, SIGNAL(modeChanged(QSslSocket::SslMode)),
        this,SLOT(sltSslModeChanged(QSslSocket::SslMode)));
        connect( mySslSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
        this, SLOT(sltStateChanged(QAbstractSocket::SocketState)));
        connect(mySslSocket,SIGNAL(error(QAbstractSocket::SocketError)),
        this,SLOT(sltSocketError(QAbstractSocket::SocketError)));
        }else{
        delete mySslSocket;
        }
         
        mySslSocket->setLocalCertificate("D://server.pem",QSsl::Pem);
        mySslSocket->setPrivateKey("D://server.pem",QSsl::Rsa,QSsl::Pem);
         
        if(mySslSocket->localCertificate().isNull())
        {
        qDebug()<<"localCertificate is null";
        }else{
        qDebug()<<"localCertificate is Ok";
        }
         
        if(mySslSocket->privateKey().isNull())
        {
        qDebug()<<"PrivateKey is null";
        }
        else{
        qDebug()<<"PrivateKey is Ok";
        }
        mySslSocket->startServerEncryption();
        }
         
        //***************************************************************************************************
         
        void Server::sltEncrypted()
        {
        qDebug()<<"........................encrypted.........................";
        //some code
        }
         
        //***************************************************************************************************
         
        void Server::sltReadFromClient()
        {
        qDebug()<<"read from client";
        // some code
        }
         
        //***************************************************************************************************
         
        void Server::sltSslErrors(QList<QSslError> errList)
        {
        qDebug() << "MySslServer::sslErrors(";
        foreach( QSslError err, errList )
        qDebug() << " " << err.errorString();
        qDebug() << ")";
        }
         
        //***************************************************************************************************
         
        void Server::sltSslModeChanged(QSslSocket::SslMode mode)
        {
        qDebug() << "MySslServer::sslModeChanged(" << (int)mode << ")";
        }
         
        //****************************************************************************************************
         
        void Server::sltSocketError(QAbstractSocket::SocketError socketErr)
        {
        qDebug() << "MySslServer::SocketErrors(" <<(int)socketErr << ")";
        }
         
        //****************************************************************************************************
         
        void Server::sltStateChanged(QAbstractSocket::SocketState state)
        {
        qDebug() << "MySslServer::stateChanged(" << (int)state << ")";
        }@
        

        main.cpp

        @ #include <QtCore/QCoreApplication>
        #include "server.h"

        int main(int argc, char *argv[])
        {
        QCoreApplication a(argc, argv);
         
        Server myServer;
         
        return a.exec&#40;&#41;;
        }@
        

        vaghty az browseram darkhast mifrestam ba in SocketError movajeh mishamo socket close mishe.

        output :
        QAbstractSocket::SslHandshakeFailedError 13
        The SSL/TLS handshake failed, so the connection was closed

        1 Reply Last reply
        0
        • C Offline
          C Offline
          CuteKQ
          wrote on last edited by
          #4

          moshkel too hanshake beine browser va ssl sockete proxy servere.... ama nemidoonam chejoori bayad rafesh konam

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mohsen
            wrote on last edited by
            #5

            p{direction: rtl; text-align: right}. کدت طولانیه نمی خونم ولی برای اینکه مطمئن بشی مشکل در handshake یا نه چک کن ببین همین کد با QTcpSocket کار میکنه؟
            دوم اینکه QSslSocket مثل QTcpSocket عمل میکنه ولی برای راه اندازی اون فانکشن های زیر کلیدی هستند.

            @
            ssl.setLocalCertificate(".crt file");
            ssl.setPrivateKey(".key file");

            ssl.startServerEncryption();
            ssl.waitForEncrypted();
            @

            p{direction: rtl; text-align: right}. مطمئن شو که از فانکشن های بالا به ترتیب استفاده کرده باشی.

            p{direction: rtl; text-align: right}. یک خواهش از دوستان: لطفا وقتی از شما درخواست کد میشه، فقط همون قطعه کدی که باید بررسی بشه رو بگذارید تا قابل فهم باشه.

            1 Reply Last reply
            0
            • C Offline
              C Offline
              CuteKQ
              wrote on last edited by
              #6

              Inaro ke dooste aziz too helpe QSslSocket ham neveshte.

              moshkele Cipher List bood. Bayad Cipher List set beshe.

              Moshkel ham daghighan hamin jast ke shoma code man ro nakhoonde nazar dadi. Man hamoon ghesmat haye ro gozashtam ke niaze. ta kasi ke mikhoone motavajeh she ke che chizi miss shode.
              shoma ham age code ro mikhoondi mtevajeh mishodi ke
              bq. ssl.setLocalCertificate(".crt file");
              ssl.setPrivateKey(".key file");

              in karo too codam kardam..

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mohsen
                wrote on last edited by
                #7

                p{direction:rtl; text-align: right}. Cypherlist رو در صورتی نیاز دارین که بخواین امنیت ارتباط SSL تضمین شده باشه. یعنی اینکه لایسنس شما هیچ خطایی نداشته باشه. در حالت عادی از سمت client با صدا کردن
                @
                tcp->ignoreSslErrors();
                tcp->connectToHostEncrypted("IP", PORT);
                @

                p{direction:rtl; text-align: right}. میتونین از خطاها چشم پوشی کنین و ارتباط به هر شکلی که باشه برقرار میشه

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved