Annonce

Réduire
Aucune annonce.

[C] Keylogger (+ Remote)

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • [C] Keylogger (+ Remote)

    Le but de cet exercice est simple :

    - créer un keylogger (qui interprète et enregistre chaque touche du clavier) ;
    - renvoyer le tout sur un fichier texte situé sur le desktop dénommé "logs.txt".

    Une fois le script lancé, toute touche sur lesquelles vous appuierez sera enregistrée dans le fichier "logs.txt". Touches et aussi clics (reconnaître clic droit et gauche). La touche espace doit aussi être interprétée, ainsi que la touche 'Retour'.

    Note : Les logs doivent apparaître "à la ligne" avec un timer de 2s (ex: si keystroking (frappe clavier) = on rec dans le .txt, si aucune activité = on retourne à la ligne en attendant de nouvelles keystrokes).

    Ceci remportera un +5.

    Pour aller plus loin, faire en sorte que le fichier logs.txt soit relié à un serveur (qu'importe lequel, commenter son code pour que chacun puisse l'adapter à son propre serveur) et que l'on puisse "envoyer le keylogger à une victime". Les keystrokes doivent être interprétées sur l'ordinateur "cible" dès le boot jusqu'au shutdown (et ainsi de suite) et renvoyer les données au fichier logz.txt situé sur le serveur.

    Ceci remportera un +10.

    Aide: http://www.table-ascii.com/

    Le but étant donc, dans la partie 1, de récupérer les keystrokes de son propre ordinateur, et dans la partie 2, celles de la-dite "victime" (à distance - remote).

    Note: il en existe bon nombre sur le net, une simple partie de votre code copié/collé dans Google démasquera les éventuels petits malins

    Cet exercice est à but purement éducatif, afin de vous familiariser avec le langage C (dans tous les cas, cela nécessiterait l'intervention de la "pseudo-victime", afin d "exécuter" le script. Cet exercice n'a pas pour but de "hacker" une personne. Sinon, vous aurait été demandé de faire d'autres manipulations afin que ce code s'auto-exécute sur l'ordinateur cible.
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|

  • #2
    Bonjour, plutôt bonsoir,
    Je code un peut en c, et j'ai quelque question suite a la realisation de ce projet,
    pour commencer, j'ai lu de nombreuse chose sur le sujet des keyloggers, et je vous assure que je desire en réaliser un tres simple,
    uniquement pour moi meme.
    Voici ce que j'ai lu :
    il faudrait faire un .exe pour le lancer en tache de fond..
    // deja je suis sur un mac.. et je veux juste faire un binaire.
    Utiliser la fonction GetKeyState()
    // mon man ne trouve rien la dessus, je suppose une fonction windows.h ou qqch d'autre..

    je vous balance ce que j'ai code :

    Code:
    int	ft_keylogg(void)
    {
    	int fd;
    	char lettre_entree;
    
    	fd = open("/Users/Red_wine/Desktop/keylog", O_RDWR | O_CREAT, S_IRUSR /*| S_UWUSR*/);
    	if (fd == -1)
    	{
    		ft_putstr("open() echec ---> fd == -1");
    		return(1);
    	}
    
    	while(1)
    	{
    		lettre_entree = getchar();
    		ft_putchar_fd(fd, lettre_entree);
    		if (lettre_entree == 'Q')
    			return(0);
    	}
    
    }
    J'ai du faire de nombreuse fautes d'orthographe, je m'en excuse, Dyslexie sévère ...
    Merci d'avance !

    Commentaire


    • #3
      il faudrait faire un .exe pour le lancer en tache de fond..
      // deja je suis sur un mac.. et je veux juste faire un binaire.
      Utiliser la fonction GetKeyState()
      // mon man ne trouve rien la dessus, je suppose une fonction windows.h ou qqch d'autre..
      GetKeyState fait parti de l'API Windows, donc si tu es sous mac, tu peux l'oublier.

      Ensuite créer un exe, veut dire que tu crées du code portable, qui puis est avec l'option cross compiling, loin d'être du niveau d'un débutant, ou alors d'avoir les deux plateformes mac et windows et de compiler sur chacune des plateformes.

      Ton code quand à lui désolé, ne m'avance à rien pour t'aider plus...

      Par contre, pour Mac OS X, j'avais fais un début de code simple avec X11, qui doit être compatible car il me semble que Mac est un système Unix comme Linux.
      Dernière modification par fred, 08 octobre 2014, 20h50.

      Commentaire


      • #4
        Merci pour la réponse,
        Premierement, ton code est en python je crois bien.. enfin bref..
        je n'ai absolument pas besoin d'un keylogger, c'est juste pour m'entrainer !

        J'ai regarder sur github les headers des gens, et j'ai vu que le framework ApplicationServices.h etais utilisé..
        je me renseigne dessus actuellement.. mais comme je l'ai expliqué plus tot, je suis debutant en c, et je n'ai encore jamais coder avec l'utilisation de framework.

        Pour mon code je vois pas ce que tu ne comprend pas. mais je veux bien t'expliquer, meme si je ne pense pas avoir grand chose a t'apprendre ;/

        Commentaire


        • #5
          Premierement, ton code est en python je crois bien.. enfin bref..
          Non il est en C !

          Pour mon code je vois pas ce que tu ne comprend pas. mais je veux bien t'expliquer, meme si je ne pense pas avoir grand chose a t'apprendre ;/
          Je ne comprend pas pourquoi tu présentes ce code, en fait je ne vois pas où tu veux en venir avec ton code et ta demande.

          J'ai regarder sur github les headers des gens, et j'ai vu que le framework ApplicationServices.h etais utilisé..
          Attention, tu dois chercher avec le mot clé Unix ou Mac OS X, sinon tu vas trouvé beaucoup de keylogger sous Windows, donc incompatibilité avec ton système.

          Commentaire


          • #6
            Encore merci..
            Ah exact.. c'est du c..

            Bon alors voila comment moi je voyais la chose..
            je pensais en mettant le while(1) que mon code allais rester en "fond" ce ne fonctionne pas très bien,

            Mon projet est que chaque touche écrite sur le clavier s'enregistre dans mon fichier.

            J'utilise la fonction getchar() pour prendre chaque caractère et l'enregistrer dans un fichier tout cela dans un while(1) pour ne jamais s'arreter, j'ai mis le 'Q' en exit, uniquement pour eviter la boucle infini, je coderais qqch de plus "propre" une fois le programme plus complet.
            mais mon problème est que des que mon binaire est lancé.. le programme fonctionne uniquement sur les touche taper dans le terminal, et non pas en "fond" mais uniquement avec les touches demander d'ecrire (comme avec un scanf() ) et non pas avec les touches exécutées sur le bureau dans le vide, ou en recherche google..

            Commentaire


            • #7
              Ton problème est je pense dans ce thread, et la réponse se trouve dans ce même thread au post de Lucas.

              Commentaire


              • #8
                Envoyé par fred Voir le message
                Ton problème est je pense dans ce thread, et la réponse se trouve dans ce même thread au post de Lucas.
                Bonjour, le post réecris ce qui est entré dans le shell, mais pas ce qui est ecrit en dehors..
                Peut etre qu'il y as un moyen de compiler/executer différemment afin de mettre le programme en fond et que cela enregistre le tout ?
                // j'utilise gcc xxx.c puis ./a.out

                cordialement

                Commentaire


                • #9
                  Bonjour,

                  Honnêtement je ne sais pas, je n'ai jamais testé, peut-être voir du côté de nohup sous Unix, mais tu n'en seras certains qu'après avoir testé...

                  Commentaire


                  • #10
                    Bonjour, Red Whine,

                    Il te manque l'assimilation de concepts majeurs en programmation et en architecture des systèmes d'exploitation.

                    Pour faire simple, le fait de presser une touche sur un clavier revient, d'un point de vue OS, à lever un événement. La façon la plus simple pour intercepter cet événement consiste à utiliser l'API de l'OS (Ou, plus compliqué, en injectant du code dans le noyau ou dans une application tierce qui a déjà cette fonctionnalité implémentée).

                    Pour window$ (je suppose que tu veux faire ça en utilisant l'OS de ms), il faut crocheter la fonction qui va bien et ajouter un handler vers ton bout de code.

                    Code:
                            keyLook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC) maJolieFonction, hINSTANCE, 0);
                    Attention, cette manip est grosse comme une maison et sera très certainement grillée par le premier antivirus du coin.

                    Au passage, tu n'as probablement pas à mettre de while comme ça, logiquement le flux d’exécution sera redirigé vers le corps de ta fonction.

                    PS: Zut, je viens de voir que le sujet porte sur MAC.

                    PPS: Même principe pour MAC OS, voici comment on ajouterait un handler d'événement:
                    Code:
                     // Register global key handler, passing a block as a callback function
                        [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask
                                                               handler:^(NSEvent *event){
                    
                            // Activate app when pressing cmd+ctrl+alt+T
                            if([event modifierFlags] == 1835305 && [[event charactersIgnoringModifiers] compare:@"t"] == 0) {
                    
                                  [NSApp activateIgnoringOtherApps:YES];
                            }
                        }];
                    REF: https://stackoverflow.com/questions/...th-sample-code
                    Dernière modification par TorTukiTu, 09 octobre 2014, 18h25.
                    OxyGen Software
                    Sécurité, développement, formations, informatique biomédicale
                    [email protected]

                    Commentaire


                    • #11
                      Salut Tortu,

                      En fait la question porte plus sur l'exécution du code, qu'il veut faire fonctionner en tâche de fond et pouvoir détecter malgré l'utilisation d'autres logiciels, internet ou autres, les touches pressées.

                      Ensuite pour le problème que tu lèves c'est exact, librairie Xlib pour Linux par exemple et on détecte les touches pressées, c'est un autre problème que je lève, mais son réel problème est celui présenté ci-dessus.

                      Commentaire


                      • #12
                        Il peut forker son processus père et attendre que le fils (qui écoute le clavier) le joigne (ou lui envoie un signal cf. signal() et pause() ) sous certaines conditions, une fois une combinaison de touches détectée par exemple.

                        Exemple: https://stackoverflow.com/questions/...-of-its-parent
                        Dernière modification par TorTukiTu, 09 octobre 2014, 19h18.
                        OxyGen Software
                        Sécurité, développement, formations, informatique biomédicale
                        [email protected]

                        Commentaire

                        Chargement...
                        X