KEYLOGGER SERVEUR/CLIENT

yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008 - 5 nov. 2007 à 13:06
sscssc13 Messages postés 2 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 8 janvier 2008 - 8 janv. 2008 à 22:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44617-keylogger-serveur-client

sscssc13 Messages postés 2 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 8 janvier 2008
8 janv. 2008 à 22:12
eu non enfin je ne croix pas :s
(je suis bien sur DevC++)
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
8 janv. 2008 à 13:14
As-tu lié -lwsock32 si t'es sous Dev-C++.
sscssc13 Messages postés 2 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 8 janvier 2008
7 janv. 2008 à 23:41
salut, j'ais quelque probleme de compilation pouriez vous me donner vos lib? SVP
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
26 nov. 2007 à 14:33
En effet un hook sans DLL existe mais sous les versions antérieures à 2000 càd (Millenium, 98, 95...) le hook ne fonctionne pas.
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
6 nov. 2007 à 18:52
Voila, j'ai utiliser le "&" de vicenzo donc finallement toutes les touches sont envoyés seul quelque touches non prise en charge. Prochainement, je vais surment essayer de faire en sorte que lorsque le serveur coupe, qu'il n'y ai pas besoin de redémarrer le client pour reavoir une conection et vis versa
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 nov. 2007 à 17:50
Vicenzo> Va donc faire un tour sur la MSDN ca te fera le plus grand bien... Je ne vois pas en quoi la procedure de callback doit etre exportée... Visible de qui et pour quoi faire?!
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
6 nov. 2007 à 17:26
Effectivement il ne faut pas faire :

send(csock,((const char*)hooked.vkCode),sizeof(hooked.vkCode),0)

mais plutôt :

send(csock,((const char*) &hooked.vkCode),sizeof(hooked.vkCode),0)

il faut passer l'adresse de hooked.vkCode à send... et pas de conversions en texte superflues qui ralentissent pour rien...
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
6 nov. 2007 à 16:22
J'ai reussie à récupérer la nouvelle valeur de chaque touche, le client est presque pret, faut juste que je trouve comment comparer une char et un nombre.
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
6 nov. 2007 à 15:34
DeAtHCrAsH > Dll ou éxecutable, le callback doit forcément etre exporté (quelque soit le moyen - convention ou *.def) sinon il n'est pas visible !!
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
6 nov. 2007 à 11:35
deathcrash > Passe plutot par uen fonction genre itoa pour convertir ton entier en chaine de caractère.

Ah ok, mais il va faloir faire la fonction inverse de itoa alors, parceque itoa ne donnera pas les valeurs correctes. Dès que je revien de l'ortho je vois sa.
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 nov. 2007 à 10:12
vicenzo> La fonction de call n'est pas à exporté si le code du hook est dans une dll.

Yann2192> Il ne faut surtout pas faire ca "(const char*)hooked.vkCode" il risque d'y avoir de la casse. Passe plutot par uen fonction genre itoa pour convertir ton entier en chaine de caractère.
Ensuite coté client, tu récépetionnes simplement le resultat sur ton socket avec la fonction recv(...) comme tu le fait actuellement. Puis dans la foulé tu interprètes le code touche pour y afficher la lettre correspndante.
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
5 nov. 2007 à 23:15
Voila, le serveur vérifie les fonctions bind et listen.

Voila mon problème j'envoie comme Luhtor me la proposé, hooked.vkCode au client
donc j'écrie : send(csock,((const char*)hooked.vkCode),sizeof(hooked.vkCode),0);

C'est pour réceptionner hooked.vkCode que je ne comprend pas. J'ai essayer simplement de mettre le switch(hooked.vkCode) au client mais hooked.vkCode n'est pas déclaré donc je doit le remplacer par quoi ? Et cela surfira t'il a gérer correctement hooked.vkCode ?
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
5 nov. 2007 à 20:54
Si tu as deux connections, la deuxieme ecrase la première puisque tu utilise des variables globales...

Quant tu fais du multithreadé, oubli l'existance des variables globales et associe des variables aux contexte de ton thread en créant un object à chaque accept() et en le passant en param de createthread par exemple..

et puis comme le dis Max12 tout appel à des libraires système doit TOUJOURS être vérifié ! si tu ne le fais pas, d'une part c'est suicidaire et donne du code non sur et donc pour inexploitable et d'autre part ca fais papa qui brocole dans son garage....

Donc :
* vérifie tes appels
* soit tu améliore ton multithreading soit tu passes en "mono thread"

vicenzo.
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
5 nov. 2007 à 20:34
Max 12 > Il y a bien des endroits ou tu ne vérifie pas du tout les retours de fonction, bind et listen, si le port est déjà prit que se passera t-il ? On verra bien la suite des commentaires.

C'est vraie, dans les exemples des tutos que j'ai lu sur les sockets, ils ne controlaient pas les retours, je vais rajoutés sa dans la nouvella version.

Deathcrash > [...]il te dit tout simplement de renvoyer hooked.vkCode au client, et ensuite le client se débrouille avec, ce qui j'avoue et beaucoup plus logique[...]

Oui je n'y avait pas penser, donc si j'ai compris je vais devoirs faire :
send(csock,((const char*)hooked.vkCode),sizeof(hooked.vkCode),0);
Je vient d'essayer mais je doit avoir quelque lacune sur la réception par socket de variable. Donc je laisse comme sa jusqu'a ce que j'arrive à exploiter correctement hooked.vkCode.

Vicenzo > Comme tu le précise, pourquoi poster le code d'un enième key logger basique qui n'est en plus pas complètement opérationnel ?

J'ai ajouté ma source déjà pour avoir des propositions pour l'améliorer et ensuite je n'avais pas vue de keylogger proposant d'envoyer les touches tappées par socket au lieu de les stocker dans un fichier.

Pour mon problème de connection, j'avais désactiver mes parefeux et mon av, sa doit ptetre venir du parefeu modem ou routeur.
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
5 nov. 2007 à 19:32
DeAtHCrAsH :

1/ exporter le callback est nécessaire car comment windows peut l'appeler s'il n'est pas exporté ?
2/ un hook exportée dans un exe le fait très bien... Bien que MSDN clame que cela doit se faire dans une DLL, cela fonctionne très bien depuis un exe... Dans le cas de ce mini keylogger pourquoi placer deux fichier (exe+dll) quand on peut n'avoir q'un seul fichier (exe) ?

yann2192 :

Comme tu le précise, pourquoi poster le code d'un enième key logger basique qui n'est en plus pas complètement opérationnel ?
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
5 nov. 2007 à 17:46
Yann2192> Utiliser une dll si cela es vraiment nécéssaire? Pour ma part un hook se fait dans une dll... Mais bon chacun ses gouts.
Sinon je pense que tu as pas compris la remarque de Luthor, il te dit tout simplement de renvoyer hooked.vkCode au client, et ensuite le client se débrouille avec, ce qui j'avoue et beaucoup plus logique... Non seulement ca t'évite de mettre a jour le serveur lorsque tu souhiates gérer de nouvelles touches, mais en plus ca laisse le choix au client de ne traiter que certaines touches.
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
5 nov. 2007 à 17:35
Pour l'idée de la dll, je préfére n'utiliser de dll que si cela est vraiment nécéssaire. Pour ce qui est du switch, avant j'avais fait sa :

ToAscii(hooked.vkCode, hooked.scanCode ,KeyState,&Buf,0);
//...
*ch=((char)Buf);
send(dsock,ch,sizeof(ch),0);

mais cela n'afficher rien du coté client :/
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
5 nov. 2007 à 17:27
Il y a bien des endroits ou tu ne vérifie pas du tout les retours de fonction, bind et listen, si le port est déjà prit que se passera t-il ? On verra bien la suite des commentaires.
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
5 nov. 2007 à 17:00
Luthor> Dans les deux cas, qu'il envoie le code touche ou la chaine, il devra interpreté le résultat soi coté client, soit coté serveur.
Mais en effet il serait plus judicieux de renvoyer le code de la touche et ensuite le client se dépatouille avec.
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
5 nov. 2007 à 16:39
Actuellement, tu envois une chaine par la fonction send. Pourquoi tu envois pas simplement le code touche directement. Ca éviterait ce switch. Et du coup, tu gères toutes les touches.
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
5 nov. 2007 à 15:04
Pour ce qui est de ton problème, cela est surement du a un firewall ou un antivirus...
Sinon il est inutile d'exporter la fonction de callbaàk.
A ta place, j'aurai mis le code du hook dans une Dll et non dans l'exe. Dès lors l'exe ne servirait que de launcher
yann2192 Messages postés 15 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 13 janvier 2008
5 nov. 2007 à 13:06
J'attend votre note et si vous aviez une explication pour le fait que je n'arrive pas à obtenir une connection entre le serveur et le client placé sur deux ordinateurs différent (Ce n'est pas un problème d'ip).
Rejoignez-nous