Avatar billede 3ddd Nybegynder
24. december 2005 - 17:04 Der er 20 kommentarer og
1 løsning

Simpel Key logger i VS 2005 .NET

Hej der ude...

Jeg har lavet en meget simpel key-logger.
Men jeg kan ikke rigtig finde ud af hovrdan jeg så får den til at virke, når den rent faktisk ikke er fremme, men i baggrunden som den burde virke?

Også når jeg trykker på space, skriver den space, i stedet for at lave et mellemrum.
Avatar billede bitsch Nybegynder
25. december 2005 - 15:14 #1
Jeg vil gætte på at en stump kode vil hjælpe på et muligt svar.
Avatar billede 3ddd Nybegynder
25. december 2005 - 22:09 #2
Der er som ikke så meget at vise, meget meget simpelt. Men vil gerne lave den liiidt smartere

        private void Form1_KeyUp(object sender, KeyEventArgs e)
        {

            StreamWriter sw = new StreamWriter(@"C:\test.txt", true);

            sw.Write(e.KeyCode);

            sw.Close();
        }
Avatar billede bitsch Nybegynder
26. december 2005 - 10:49 #3
Er det for den aktuelle form du ønsker at logge keys, eller globalt?
For den løsning du har startet på vil kun modtage key for den aktuelle form og kun når denne har focus.
Avatar billede bitsch Nybegynder
26. december 2005 - 11:01 #4
Hvis det er en global løsning så kan denne artikel måske hjælpe dig på vej
http://www.codeproject.com/csharp/simple_key_log.asp
Avatar billede 3ddd Nybegynder
26. december 2005 - 16:48 #5
Jeg ville gerne lave den globalt, så kan egentlig godt se problemet i den nuværende...

Jeg forstår godt ideen i det link du skrev. Men synes at have lidt problemer med at gennemskue hvordan de enkelte dele virker.
Det kunne være en stor hjælpe, med en bedre beskrivelse af koden i linket, og hvordan det virker som helhed.
Avatar billede 3ddd Nybegynder
26. december 2005 - 17:53 #6
OKayy fik source coden ned, og det hjalp en del på forståelsen =).

Et lille problem er dog, at den smider hvad der er trykket på, ud i en mesbox, og ikke i en txt fil. Det har nok noget med delen:

        private void timerBufferFlush_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            // Preprocessor Directives
            #if (DEBUG)
                MessageBox.Show(keyBuffer); // debugging help
            #else
                    Flush2File(@"c:\keydump.txt", true);
            #endif
        }

At gøre, men hvordan sætter jeg dan så til at skrive teksten ud i txt filen ?
Avatar billede bitsch Nybegynder
26. december 2005 - 20:39 #7
Jeg har ikke selv set det aktuelle eksempel efter i sømmene, men du kan vel nøjes med Flush2File(@"c:\keydump.txt", true);
Eller på anden vis appende til en eksisterende tekstfil.
Avatar billede 3ddd Nybegynder
26. december 2005 - 20:57 #8
Selvfølgelig rigitg nok =)

Hvad er forskelten på #if og bare if ?
Avatar billede bitsch Nybegynder
26. december 2005 - 21:21 #9
#if er et compiler direktiv som tolkes ved kompilering i tilfælde at at udtrykket er true (#if true then...)

http://msdn2.microsoft.com/en-us/library/4y6tbswk.aspx
Avatar billede 3ddd Nybegynder
26. december 2005 - 21:26 #10
Arrrh okaaay, så når jeg DEBUG'er, smider den det ud i en mesbox.. Takker =)

Har fået det til at virke perfekt nu... Takker, smid et svar...

Jeg har faktisk i et lille problem ved siden af:

Jeg roder lidt rundt med en text editor, men når jeg vil åbne en txt fil, skriver den det hele ud i en linje, i min textbox. koden er:

        private void openFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "Open text file";
            dlg.InitialDirectory = @"c:\";
            dlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                StreamReader sRead = File.OpenText(dlg.FileName);

                string s = "";
                string tmp = "";

                StringBuilder sBuilder = new StringBuilder();
               
                while ((s = sRead.ReadLine()) != null)
                {
                    tmp += s;
                }
                sRead.Close();
                textBox1.Text = tmp;
            }
        }

Hvad skal jeg lave om, så den skriver ud i flere linjer?
Avatar billede bitsch Nybegynder
26. december 2005 - 22:14 #11
Her et lille hurtigt eksempel:

            System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();

            openFileDialog.Title = "Open text file";
            openFileDialog.InitialDirectory = @"c:\";
            openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                // OpenFileDialog: http://msdn2.microsoft.com/en-us/library/system.windows.forms.openfiledialog.aspx
                // Stream: http://msdn2.microsoft.com/en-us/library/system.io.stream.aspx

                try
                {
                    using (StreamReader streamReader = new StreamReader(openFileDialog.FileName))
                    {
                        String line;

                        StringBuilder stringBuilder = new StringBuilder();

                        while ((line = streamReader.ReadLine()) != null)
                        {
                            stringBuilder.AppendLine(line);
                        }

                        this.textBox1.Text = stringBuilder.ToString();
                    }
                }
                catch (Exception ex)
                {
                    // Let the user know what went wrong.
                    Console.WriteLine("The file could not be read:");
                    Console.WriteLine(ex.Message);
                }
            }
Avatar billede bitsch Nybegynder
26. december 2005 - 22:17 #12
I dit eksempel erklærer du din StringBulder men du bruger den ikke! Du skal blot appende linien til din builder, og når du er færdig med at læse, så skal bu blot overføre indholdet til din tekstboks.
Avatar billede bitsch Nybegynder
27. december 2005 - 08:25 #13
Når du som i din kode adderer til en streng, så er det også nødvendigt at addere tegnet for new lone "\n" da dette ikke er en del af den læste streng.

Hv du er ligeglad med at læse én linie af gangen kan du undgå dit While loop blot ved at skrive                       

text = streamReader.ReadToEnd();
Avatar billede bitsch Nybegynder
27. december 2005 - 08:27 #14
Sikke en masse stavefejl ;-) Jeg prøver igen met et bedre keyboard

Når du som i din kode adderer til en streng, så er det også nødvendigt at addere tegnet for new line "\n" da dette ikke er en del af den læste streng.

Hvis du er ligeglad med at læse én linie af gangen kan du undgå dit While loop blot ved at skrive                       

text = streamReader.ReadToEnd();
Avatar billede bitsch Nybegynder
27. december 2005 - 08:28 #15
Ok det var ikke meget bedre, men jeg tror at jeg holder her :-)
Avatar billede 3ddd Nybegynder
27. december 2005 - 12:49 #16
Jeg tænkte på, er det mulig at lave den som e rigtig key logger, altså hvor dan køre i baggrunden, og ellers er usynlig ?

Hehe sådan kan det gå =)
Avatar billede bitsch Nybegynder
27. december 2005 - 15:29 #17
Hvad er dine kriterier for usynlig? Du vil altid kunne se proessen i task manageren. eksemplet fra Codeproject er jo netop en app som kører i baggrunden, så hvad er det du mangler?
Avatar billede 3ddd Nybegynder
27. december 2005 - 15:33 #18
Fx den ikke kan ses fra task manager, og den ikke ligger på processlinjen.

Det kan det eksempel jeg fik ned nemlig...
Avatar billede bitsch Nybegynder
27. december 2005 - 15:50 #19
Ja det kan jeg se. Men jeg har ikke svaret og hvis jeg havde ville jeg alligevel ikke distribuere det da det er sådanne ting der kun kan føre til misbrug, og det vil jeg ikke medvirke til.
Avatar billede 3ddd Nybegynder
27. december 2005 - 15:59 #20
Helt fair, der ville sikkert være nogen der ville misbruge det, selv om en simpel, men kraftfuld keylogger, ikke er svær at finde på nettet..

Om ikke andet, tak for din tid =)
Avatar billede bitsch Nybegynder
27. december 2005 - 16:24 #21
Nej jeg ved at informationen er let at finde, men i det mindste har jeg ren samvittighed.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester