KEYLOGGER EN VB (KEYLOGGER DE YANNN REVISITE)

cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 28 déc. 2003 à 17:48
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 25 avril 2004 à 18:41
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/19045-keylogger-en-vb-keylogger-de-yannn-revisite

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 avril 2004 à 18:41
cs_Linuss Messages postés 176 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 9 mai 2008
25 avril 2004 à 18:24
Vous sauriez où puis-je trouver MSDN ?
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
27 févr. 2004 à 19:18
Ah le voici ce code, je ne l'ai pas retrouvé celui que j'ai eu sur le MSDN mais sa a l'air d'etre le meme si mes souvenirs sont bons ;)
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
27 févr. 2004 à 19:10
pour ce qui est de l os g trouvé ca sur vbfrance
pour trouvez la version de windows:
(a placez dans un module et jme souvien pas du coder mais merci a lui car je luse tres souvent)

Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Enum Enum_OperatingPlatform
Platform_Windows_32 = 0
Platform_Windows_95_98_ME = 1
Platform_Windows_NT_2K_XP = 2
End Enum
Public Function OperatingPlatform() As Enum_OperatingPlatform
Dim lpVersionInformation As OSVERSIONINFO
lpVersionInformation.dwOSVersionInfoSize = Len(lpVersionInformation)
Call GetVersionExA(lpVersionInformation)
OperatingPlatform = lpVersionInformation.dwPlatformId
End Function

'form
'Select Case OperatingPlatform
'windows32
'Case Enum_OperatingPlatform.Platform_Windows_32
'me
'Case Enum_OperatingPlatform.Platform_Windows_95_98_ME
'Shell ("rundll32.exe user.exe,exitwindows")
'xp
'Case Enum_OperatingPlatform.Platform_Windows_NT_2K_XP:
'Shell "shutdown -r -t 0"
'End Select

Voila je croi k c tout
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
26 févr. 2004 à 17:46
scelw, pour répondre à ta tes conneries, c'est utile de savoir quel est le system client car par exemple moi qui est fait un shell, j'ai eu besoin de le déclarer dans windows comme shell par défaut. Ds XP, c'est dans la base de registre alors que sous 9x et NT, c'est dans le fichier system.ini. Par cette explication, tu comprendra aussi que ton histoire de repérage de fichier et totalement nulle puisque déja imprécise quand à l'OS détecté (et oui, t'auri essayé avec le fichier system.ini t'aurai pus déduire que c'était un NT ou un 98 alors que sa aurai plus etre un Me)

Les patchs ne veulent strictement rien dire aussi, certai sont a la fois pour windows 98 et 2000 (exemple ceux pour internet explorer)

Quand a ta commande winver, c'est bien beau mais chez moi il n'est pas indiqué clairement quel OS c'est mais le numero de version, donc c'est déja foutu pour ta bidouille de récupération de label qui est en plus indigne d'un bon programmeur.

Et ce numero de version, est récupérable par API, ce que j'ai dit plus haut, et c'est beaucoup plus simple, précis et efficace que lire des fichiers ou récuperer des labels (je vous la met quand je retrouve ;))
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
26 févr. 2004 à 16:55
scelw, le prob de l'OS n'est peut-être pas important, quoique... de toute, pour ma part je suis sur un hook en C qui résout apparemment les problèmes que tu soulevais toi même dans ton message du 07/01.
Mais, bon, ici c du VB. Donc, l'histoire des timers, c vrai, g testé, qu'ils ne se comportent pas de la même manière suivant les machines. Donc, au moins, il faudrait les régler en fonction de la vitesse du proc. Pour ça, il y a des sources (à base de dll sur le site). (Il y a un autre moyen de tester la vitesse CPU sans DLL mais c en lisant dans la base de registre mais ce n'est pas valable pour tout les systèmes.)
Quant à tester la présence ou non d'un répertoire soi-disant propre à un OS, c hyper fragile. G même réussi sans le vouloir, juste en faisant une mise à jour, à me retrouver avec des dossiers soi-disant typiques XP sur une machine en Win 98 SE. Donc ...

Bon, de toute, les meilleurs keyloggers ne sont pas écrits en VB mais ça n'empêche pas d'étudier la question.

Cordialement

Canis Lupus
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
26 févr. 2004 à 16:02
excusez moi, g posté 3 fois de suite parce que vbfrance buggait et donc g pas vu...
si les admins pouvaient suprimmer deux de mes posts ça serait assez cool pour la lisibilité de cette board...
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
26 févr. 2004 à 15:57
Je ne comprends pas à quoi peut servir le fait de connaître l'OS pour un keylogger mais bon...

Plutôt que de vous embêter avec une fonction pas bien définie et apparemment peu efficace, vous pouvez tout simplement tester l'existence de certains dossiers et certains fichiers dans l'arborescence. Chaque version de Windows (win9x, 200, NT, XP) a des particularités, des fichiers et des dossiers qui lui sont propres. A partir de là, vous pouvez facilement et rapidement déduire la version de l'OS.

Sinon, il doit y avoir des clefs dans la base de registre qui donnent ce genre d'information (nom de l'OS, version, Patchs installés, etc).

Enfin, avec la commande "winver" dans le shell (ou par Exécuter), on peut avoir la version de windows. Suffit plus qu'à trouver une méthode pour lire le label qui retourne la réponse (je sais pas faire mais ça doit être possible)...
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
26 févr. 2004 à 09:18
Il y a quelque chose sur la msdn mais en C voir :
http://search.microsoft.com/search/results.aspx?View=msdn&st=a&qu=GetVersionEx&c=0&s=1

ces 2 lignes n'en font qu'une bien sûr dans la barre d'adresse.
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
25 févr. 2004 à 18:05
Il y a une doc tres precise sur la msdn online a propos de sa, les différentes valeurs des la funtion et des différents OS correspondant, mais je ne sais plus éxactement l'adresse
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 févr. 2004 à 15:45
Salut

mdr surfzoid !

Je rappelle que le source situé "ou il y a marqué "télécharger le Zip" (en bleu)" n'est que celui de yannn auquel g rajouté des trucs.

Maintenant, pour le reste, j'arrive, patience.

Quoique, pour détecter l'OS c simple :

Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
wSPMajor As Integer
End Type

Declare Function GetVersionEx _
Lib "kernel32" Alias "GetVersionExA" _
( _
lpVersionInformation As OSVERSIONINFO _
) As Long


Function Win_Ver() As String
Dim myOS As OSVERSIONINFO

myOS.dwOSVersionInfoSize = 148

GetVersionEx myOS

Win_Ver = myOS.dwPlatformId

End Function

Ca te renvoie "1" pour Win 98 ou "2" pour Win XP.
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
25 févr. 2004 à 13:27
CanisLupus si tu cherche tjrs ta source utilise le lien en haut de cette page ou il y a marqué "télécharger le Zip" (en bleu)
LOL
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
27 janv. 2004 à 13:05
Non pas de probléme avec le mien au niveau de la capture des touches :
http://www.vbfrance.com/code.aspx?ID=19816

J'utilise l'api :GetAsyncKeyState et l'api: SetTimer !!!

Ps: g rencontré ce probléme au debut du dev de mon keylogger!!!
rj4 Messages postés 5 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 18 avril 2004
11 janv. 2004 à 11:20
Super vos commentaire. vraiment...
Merci a tous ; )
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
7 janv. 2004 à 14:32
Tout à fait OK avec toi Jojo.
Jouer avec le timer c bien mais le hic c que même si 1/1000 s c pareil partout il y a des différences suivant les machines.
A mon boulot, comme on change les machines tous les 4 ans, il y a +sieurs générations de processeurs et d'OS. G donc pu tester et le key ne se comporte pas de la même manière au niveau capture des touches.
Il y a peut être une solution consistant à détecter le type de proc et d'OS pour régler le timer et d'autres choses en fonction. Voire, détecter aussi la résolution d'écran pour régler la zone curseur.
Ces trucs-là, je sais les faire, je les posterai +tard (quand j'aurai retrouvé mon source).

@+
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
7 janv. 2004 à 13:54
Ah une remarque kan même : je viens de faire un petit test avec ce keylogger et je le sème vraiment très facilement ! c'est à dire que dès que j'écris un peu vite (même pas comme un forcené, juste un peu plus que la vitesse "je-découvre-comment-marche-un-clavier"), le keylogger log une touche sur deux. Les résultats sont même parfois pire : deux ou trois lettres sautent, etc. Donc pour avoir un aperçu de ce qu'a taper l'utilisateur que l'on met sous keylogger... c'est pas très pratique ! donc voilà : fodrait peut-être jouer avec les timers ou modifier le moteur principal de reconnaissance des touches... Ou changer de langage ! Le C est, bien sûr, bcp plus performant (il peut même l'être trop et logger dix fois la touche dès qu'on en enfonce une.)


JOjo
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
31 déc. 2003 à 15:12
Bonne année ! ouaaah ! le délire ! j'arrive à écraser une papillote contre un mur avec le front (je suis musclé du cou) !

Jojo29118
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
31 déc. 2003 à 15:07
Oupps ! Je suis vraiment camé les boyz ! Je rectifie : Bravo à Yann et CanisLupus ! (attention c bientôt la pleine lune mec)
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
31 déc. 2003 à 15:01
Je viens de lire cette source : félicitations, elle est bien commentée, bien structurée. Du beau travail donc bravo à Yann et à azerty25 !
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
30 déc. 2003 à 13:01
Oupps ! J'avais pas lu ton commentaire azerty25 ! dslé, j'avais pas vu que tu parlais déjà de passer par une appli autorisée.
et effectivement, on peut aussi utiliser le tunneling, technique qui consiste à empaqueter des données dans un protocole autorisé ou plus discret.
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
30 déc. 2003 à 12:58
Pour ce qui est de bypasser les firewalls, il existe plusieurs méthodes : passer par la base de registre (et modifier la page de démarrage d'ie par exemple, que tu peux rediriger sur un site à toi avec un script php), détourner un processus autorisé par le firewall (en général iexplorer est tjrs autorisé) mais bon, cette technique est plutôt à réaliser avec du C (le VB ne se prête pas trop à ce genre de manoeuvre). De plus cette technique nécessite de bonnes connaissances en programmation système (que je n'ai d'ailleurs pas) mais si ça t'intéresse, je peux t'envoyer une liste de docs qui expliquent tout ça (mail moi à jojo29118@hotmail.com). tu peux aussi te renseigner sur le site Admin-ReZo (dès qu'il sera de nouveau accessible). Enfin, tu peux t'intéresser à des programmes simples et destinés uniquement à bypasser les firewalls (comme leaktest ou d'autres que tu retrouveras sur Admin-ReZo). Voilà. Autre méthode : tuer le firewall momentanément (le temps d'envoyer tes données) et le relancer ensuite. Pour cela, tu peux essayer de tuer l'application directement, via d'autres applications ayant un plus haut niveau d'autorisation ou en effectuant un buffer overflow sur le firewall lui-même (méthode brutale et ardue mais tjrs efficace). Tu peux également essayer de créer un déni de service spécialisé sur le firewall mais là, ça risque d'être remarqué par la personne qui utilise le pc. Bref, les techniques ne manquent pas, si tu es intéressé, je te réinvite à me mailer.

Cordialement,

Jojo29118
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
30 déc. 2003 à 08:00
Salut
En fait, je t'ai dit sa par rapport aux alertes que donne les firewalls, certains donnent une alerte en disant le nom et montrant l'icone uniquement, si l'utilisateur ne vois rien, il clique OUI et croira que c'est bien IE qui se connecte. Mais c'est vrai que c'est un peu de la bidouille et que tout les firewalls n'aggissent pas pareil. La solution ultime pour contourner les firewalls n'éxiste pas, à par comme je l'ai déja vu dans un (connu), envoyer les packets à travers une autre application qui serait déja authorisée (par exemple IE) et comme sa, on ne voit rien du tout à par du traffic sur IE.
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009
28 déc. 2003 à 21:18
Je n'ai pas encore regarder ce que tu as fait ... mais je te remercie de l'interet que tu portes a mon petit keylogger !!!
Pour ce qui est de la communication, j'ai fait une mise a jour de mon keylogger qui utilise le moyen FTP ... si ca peut te donner des idées ...
Adresse :
http://www.vbfrance.com/code.aspx?ID=18986

Passe un bon premier de l'an ... et surtout une super fete du 31 !!!!
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
28 déc. 2003 à 18:44
AZERTY25
Je ne suis pas OK avec toi, tu peux mettre un titre d'application reconnu (si tu y arrive car VB l'interdit) ou changer le nom de l'EXE, mon firewall n'est pas dupe donc je suppose que les autres vont le stopper aussi.
Dans une entreprise (comme la mienne), winsock suffit car le firewall n'agit que pour les connexions WEB. Les serveurs MAIL ne sont protégés que de l'extérieur. De l'intérieur, on fait ce qu'on veut.
G essayé de changer le port (25) par défaut de winsock et ça ne marche pas.
Si tu peux m'éclairer la dessus, je suis preneur.

Cordialement
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
28 déc. 2003 à 17:48
Je n'ai pas compris ton histoire de firewall personel et winsock, pourrai tu expliquer ? je l'ai compris dans le sens ou le prog serai alors affiché par le firewall, mais si tu met un titre à l'application compilée style Internet Explorer ainsi que la même icone, sa passe, ou tu peut même essayer de désactiver les firewalls mais c plus chaud !! ;)
Rejoignez-nous