begin process at 2012 05 27 21:47:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Périphériques

 > HOOK CLAVIER EN C#

HOOK CLAVIER EN C#


 Description

Cliquez pour voir la capture en taille normale
Ce programme montre (de facon simple) comment réaliser un systême de Hook clavier de manière complètement Asynchrone, et ceci en utilisant les API de Windows. Même si ce programme peut-être utilisé de manière illégal, il est néanmoins un bon exemple afin de montrer comment capter les saisies utilisateurs (par exemple pour faire un robot, ou encore comme dans mon cas pour faire un algorithme d'"IA" se basant sur la probabilité de tapper tel ou tel texte en fonction de l'application, et de proposer différents choix pré-enregistré.

Cette version de la classe de hook est encore bien sommaire et sera améliorée prochainement, néanmoins elle reste fonctionnelle.

Mise a jour a venir:
- Log dans un fichier texte du hook
- Amélioration du formulaire et accès aux données (avec un peu de Linq) afin de pouvoir voir les hook par applications, et les séquences les plus tappées
- Prise en charge de l'ensemble des controles claviers et souris (alphabets russe et arabe, symboles mathématiques)

Source

  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Linq;
  • using System.Text;
  • using System.Windows.Forms;
  • using System.Timers;
  • namespace NetKeylogger
  • {
  • public partial class mainForm : Form
  • {
  • private Boolean isCaptureEnabled = false;
  • private System.Timers.Timer timerUI = new System.Timers.Timer();
  • private Keylogger keylog = new Keylogger();
  • public mainForm()
  • {
  • InitializeComponent();
  • this.timerUI.Enabled = false;
  • this.timerUI.Elapsed += new System.Timers.ElapsedEventHandler(this.timerUI_Elapsed);
  • this.timerUI.Interval = 10;
  • }
  • private void btnCapture_Click(object sender, EventArgs e)
  • {
  • if (!isCaptureEnabled)
  • {
  • btnCapture.Text = "Mettre fin a la capture";
  • txtLog.Text = "=========================\r\nDébut de la capture\r\n=========================\r\n\r\n";
  • keylog.startCapture();
  • timerUI.Enabled = true;
  • isCaptureEnabled = true;
  • }
  • else
  • {
  • btnCapture.Text = "Capturer les saisies utilisateur";
  • txtLog.Text += "\r\n\r\n=========================\r\nFin de la capture\r\n=========================\r\n";
  • keylog.stopCapture();
  • timerUI.Enabled = false;
  • isCaptureEnabled = false;
  • }
  • }
  • private void timerUI_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  • {
  • // on récupère le contenu du buffer
  • string temp = this.keylog.getBuffer();
  • // s'il est différent de ce qui est déja existant on ajoute a la textbox
  • txtLog.Text += temp;
  • }
  • private void mainForm_Load(object sender, EventArgs e)
  • {
  • }
  • }
  • }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;

namespace NetKeylogger
{
    public partial class mainForm : Form
    {

        private Boolean isCaptureEnabled = false;
        private System.Timers.Timer timerUI = new System.Timers.Timer();
        private Keylogger keylog = new Keylogger();

        public mainForm()
        {
            InitializeComponent();

            this.timerUI.Enabled = false;
            this.timerUI.Elapsed += new System.Timers.ElapsedEventHandler(this.timerUI_Elapsed);
            this.timerUI.Interval = 10;
        }

        private void btnCapture_Click(object sender, EventArgs e)
        {
            if (!isCaptureEnabled)
            {
                btnCapture.Text = "Mettre fin a la capture";
                txtLog.Text = "=========================\r\nDébut de la capture\r\n=========================\r\n\r\n";
                keylog.startCapture();
                timerUI.Enabled = true;
                isCaptureEnabled = true;
            }
            else
            {
                btnCapture.Text = "Capturer les saisies utilisateur";
                txtLog.Text += "\r\n\r\n=========================\r\nFin de la capture\r\n=========================\r\n";
                keylog.stopCapture();
                timerUI.Enabled = false;
                isCaptureEnabled = false;
            }

        }

        private void timerUI_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            // on récupère le contenu du buffer
            string temp = this.keylog.getBuffer();

            // s'il est différent de ce qui est déja existant on ajoute a la textbox
            txtLog.Text += temp;
        }

        private void mainForm_Load(object sender, EventArgs e)
        {

        }

    }
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source .NET (Dotnet) GETPORTCOM AMELIORÉ par BarthOlivier
Source avec Zip Source .NET (Dotnet) OBTENIR LA LISTE DES PÉPRIPHÉRIQUES ÉJECTABLES (LES CLÉS USB... par ShareVB
Source avec Zip Source avec une capture USB DETECTOR 3.0 par ZackSword
Source avec Zip Source avec une capture USB DETECTOR VERSION 2.0 par wolf145
Source avec Zip Source .NET (Dotnet) LIRE ET CHANGER LA LUMINOSITÉ DES ÉCRANS LCD (DE PORTABLE) C... par ShareVB

 Sources en rapport avec celle ci

Source .NET (Dotnet) ENTITY FRAMEWORK - AVOIR UN INCLUDE TYPÉ par jesusonline
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET3.5] SYSTEM.IO.PIPES - UTILISATION D'UN CANAL NOMMÉ par Willi
Source avec Zip Source .NET (Dotnet) ARBRE (TREE) - STRUCTURES D'ARBRES GÉNÉRIQUES par ricklekebekoi
Source .NET (Dotnet) LINQ TO XML & LA MANIPULATION DE DONNÉES EN XML AVEC UNE APP... par driver
Source avec Zip Source avec une capture Source .NET (Dotnet) REDIMENSIONNEMENT DE DOCUMENTS SCANNÉS POUR MAILS par jmenfous

Commentaires et avis

Commentaire de Lutinore le 21/08/2009 02:37:05 administrateur CS

Tu souhaites peut être apporter des fonctions évoluées à ton hook par la suite, mais appeler GetAsyncKeyState toutes les 10ms dans un timer ce n'est pas une bonne solution, un vrai hook se met en place grâce à la fonction SetWindowsHookEx .

Commentaire de shadow1779 le 21/08/2009 06:40:50

j'avais commencé comme ca au tout début, mais mon programme était signalé comme un virus, du coup j'ai testé d'autres trucs pour que ca passe un peu plus

Commentaire de mathmax le 21/08/2009 14:23:12

J'obtiens l'erreur suivante:

Opération inter-threads non valide : le contrôle 'txtLog' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.

A la ligne :
            // s'il est différent de ce qui est déja existant on ajoute a la textbox
            txtLog.Text += temp;

Commentaire de shadow1779 le 21/08/2009 16:26:07

etrange, la class ne comporte qu'un seul thread, et le winforms se contente de récupérer le buffer de la class via la methode getBuffer(), de plus même après vérification je n'ai aucune erreur ni avertissement sur le projet.

(Je tourne sous XP, avec Visual Studio 2008, Version de .Net Framework: 3.5), tiens moi au courant de la résolution du problème pour toi, mais bon il ne devrai pas arriver

Commentaire de ryoryo le 22/08/2009 10:41:05

j'ai le même message d'erreur que MATHMAX

Commentaire de coq le 22/08/2009 18:14:48 administrateur CS

Bonjour,

L'utilisation de System.Timers.Timer implique la levée de l'event Elapsed dans un thread du pool de thread (dans lequel s'exécutera donc le code du gestionnaire d'évènement timerUI_Elapsed), donc dans un autre thread que celui du GUI. D'où l'avertissement.

Commentaire de The Meteorologist le 03/09/2009 21:27:42

Ce n'est absolument pas un hook =/ Je te conseille de renommer ta source ...

Commentaire de habiballah11 le 11/01/2011 13:34:59

j'ai essayé le programme mais j'ai remarquer que le programme ne detecte pas la frappe de la touche entrer

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

API Hook OpenProcess [ par vitoto ] Hi guys.I try get some help in this problem.API Openprocess which within its parameters uses a PID, the this delivery the use of some of these APIs :p Récuperer evenement click Souris - Hook [ par boutnell ] Bonjour,Je voudrais pouvoir connaitre, a chaque instant et sur chaque programme qui tourne, si l'utilisateur click sur sa souris.Par exemple,&nbsp;aff hook et C# ???? [ par anthonycosson ] bonjourcomment peut-on utiliser des hooks en C#? merci...et au pire si quelqu'un aurait une autre solution que les hooks pour simuler j'appui d'une to Récupérer la touche frappé au clavier - erreur pinvoke, DMAs [ par Siteauludo ] Bonjour,j'ai besoin d'enregistrer les touches tap&#233;es au clavier, en l'occurence la s&#233;rie "lock". J'ai trouv&#233; un bon code, mais Visual S [C# 2.0] Erreur GetAsyncKeyState [ par iow4 ] Bonjour, Je developpe avec le framework 2.0 et Visual C# Express.J'aimerais pouvoir intercepter toutes les touches pressées par l'utilisateur j'ai don [.NET2] Hook sur CreateWindowEx [ par iow4 ] Bonjour,J'ai posté une source pour bloquer une application par son nom ( ici : http://www.csharpfr.com/codes/BLOQUER-APPLICATION-SON-NOM-AVEC-APIS-WIN c# 3.0 et linq [ par mathmax ] Bonjour,J'aimerais pouvoir utiliser c# 3.0 et linq. Pour celà, j'ai téléchargé et installé :.NET <span style="back [LINQ] - créer une requete dynamique (pas en dur) [ par romagny13 ] Bonjour,une question a propos de Linqvoilaj'ai essayé de me faire une pet FlashWindow ? [ par Elxior ] Bonsoir à tous, je suis présentement en train de programmer une nouvelle barre de tâche pour Windows XP / Vista, et j'ai un seul problème que je ne su Hook clavier [ par Mr.X ] Bonjours.J'ai essayer de réaliser un programme pour faire un hook du clavier plus particulièrement de la combinaison "Control+C". J'ai essayer ce code


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales