Keelog har beslutat att släppa en tidig version av sin hårdvaru keylogger-familj till allmänheten, inklusive full firmware- och programvarukällkod, keylogger-hårdvaruelektriska scheman och dokumentation. Denna PS/2 key logger är en 100% fungerande och testad enhet, monterad och använd av hundratals människor runt om i världen. Driften av denna hårdvaru key logger är liknande KeyGrabber PS/2. Vi tillhandahåller applikationen KeyGrab för hämtning och analys av inspelade tangenttrycksdata. Observera dock att detta DIY-hårdvaru keylogger-projekt tillhandahålls som det är, med alla fel, och utan någon som helst garanti.

Öppen källkods DIY-hårdvarukeylogger

Innan du börjar, gå igenom denna lista för att kontrollera om du har alla verktyg och färdigheter som behövs för att slutföra detta hårdvaru keylogger-projekt:

  • viss erfarenhet av elektronik hårdvara
  • en lödkolv
  • en mikrokontrollerprogrammerare (som stöder Atmel AT89CXX51-familjen)
Öppen källkods DIY-hårdvarukeylogger - komponenter

Följande komponenter krävs för hårdvaru keylogger-projektet:

  • Atmel AT89C2051 mikrokontroller (eller AT89C1051, AT89C4051)
  • Serienummer EEPROM-chip AT24C512 (eller kompatibel)
  • 12 MHz kristall
  • Kondensator 2 x 33p
  • 10 µF kondensator
  • 10 kΩ resistor
  • liten tryckknapp
Öppen källkods DIY-hårdvarukeylogger - PS/2 kabel

Slutligen krävs ett hölje för hårdvaru-nyckelloggern. En bra idé är att köpa en förlängningskabel för PS/2 och en 4-tums bit av krympbar slang, som kan värmevärmas runt den färdiga keyloggern.

Programmera först nyckelloggerns mikrokontroller-firmware. Starta din programmeringsprogramvara, välj AT89C2051 och bränn flashminnet med den binära filen eller den hex-versionen. Du kan också rekompilera källkoden med hjälp av den källkoden och en 8051-kompilator. Lödning är förmodligen den svåraste delen av projektet, eftersom keylogger-hårdvaran bör göras så liten som möjligt. Scheman för keylogger-hårdvaran nedan visar hur anslutningar ska göras mellan komponenterna.

Öppen källkods DIY-hårdvarukeylogger - viss erfarenhet av elektronik hårdvara

Löd ihop komponenterna, börja med mikrokontrollern och EEPROM:en. Oanvända IC-pinnar kan tas bort. Se till att tryckknappen är åtkomlig. När du monterar kondensatorn, se till att den är korrekt polariserad.

Öppen källkods DIY-hårdvarukeylogger - lödning

Gör hårdvaru keyloggern så kompakt som möjligt, undvik dock kortslutningar. De kommer att vara svåra att ta bort efter att enheten är klar. Keyloggerkretsen bör se något ut som prototypen som visas på bilden, efter att de huvudsakliga komponenterna är anslutna.

Öppen källkods DIY-hårdvarukeylogger - kontakter

Löd slutligen PS/2-kontakterna till keyloggern. En bra idé är att klippa PS/2-förlängningskabeln i två delar och löda varje del separat. Se till att du sätter krympslangen på en del av kabeln. Anslut alla fyra använda PS/2-stift (CLK, DATA, VCC och GND) på båda kontakterna (vid tangentbordet och vid datorn).

Öppen källkods DIY-hårdvarukeylogger

Innan du drar den termiska röret runt hårdvaru keyloggern, är det en bra idé att låta lite lim eller harts komma emellan komponenterna, för att göra enheten mer styv. Dra till sist den termiska röret på, värm den tills den omsluter de lödda komponenterna, och skär ut ett litet hål så att knappen är åtkomlig.

Hårdvaru keyloggern börjar spela in tangentdata så fort den är inkopplad mellan tangentbordet och datorn. Keyloggern är helt transparent för datorns funktion och kan inte upptäckas av programvara i inspelningsläge. All tangentdata som skickas av tangentbordet spelas in i 64 kB hårdvaru icke-flyktigt EEPROM-minne. Inspelningsläget är helt oberoende av det operativsystem som är installerat på datorn.

Öppen källkods DIY-hårdvarukeylogger - installation 1

Hitta PS/2-kontakten på datorn.

Öppen källkods DIY-hårdvarukeylogger - installation 2

Koppla loss tangentbordet.

Öppen källkods DIY-hårdvarukeylogger - installation 3

Anslut hårdvaru keyloggern istället för tangentbordet.

Öppen källkods DIY-hårdvarukeylogger - installation 4

Anslut tangentbordet till keyloggern. När datorn startas kommer data att börja spelas in.

När hårdvaru keyloggern har registrerat tangentdata kan den hämtas till vilken PC som helst som körs på Windows 9X/Me/XP/2000. Hårdvaru keyloggern gör detta genom att simulera tangentbordstryckningar. De överförda tangentdata hämtas av applikationen KeyGrab. När dessa data har överförts till datorn kan de bearbetas och analyseras. Följ instruktionerna för att initiera nedladdning av data.

Öppen källkods DIY-hårdvarukeylogger - Inspelningsläge 1

Kör KeyGrab-applikationen.

Öppen källkods DIY-hårdvarukeylogger - Inspelningsläge 2

Anslut hårdvaru keyloggern istället för tangentbordet. Anslut inte tangentbordet.

Öppen källkods DIY-hårdvarukeylogger - Inspelningsläge 3

Klicka på titelraden KeyGrab för att göra den till den aktiva applikationen.

Öppen källkods DIY-hårdvarukeylogger - Inspelningsläge 4

Tryck på knappen på hårdvaru keyloggern för att starta nedladdning av data. Ändra inte den aktiva applikationen under överföringen. Tryck på knappen igen för att avsluta överföringen. Gör detta när önskade tangenttrycksdata har laddats ner till datorn.

Öppen källkods DIY-hårdvarukeylogger - Inspelningsläge 5

Koppla bort den hårdvarubaserade tangentbordsloggern och anslut din PS/2-tangentbord igen.

När du laddar ner tangentdata till huvudtabellen KeyGrab, förbehandlas den automatiskt för att visa tangentdata som loggats under inspelningen. Data överförs i fallande ordning för att visa nyligen tryckta tangenter först. Tangenttryck som inträffade för länge sedan överförs senare. Du kan analysera tabellen manuellt eller använda några av sökalternativen.

Öppen källkods DIY-hårdvarukeylogger - Dataanalys

1 - Position i keylogger-maskinvaruminnen som används av tangentbordshändelsen (hexform).
2 - Fångade och loggade tangenttryck.
3 - Händelse som ägde rum - en tangenttryckning eller -släpp.
4 - Tangenttryckningskod på PS/2-bussen (hexadecimal form).
5 - Senaste minnesposition skriven under inspelning (hexadecimal form).
6 - Minnesstorlek för hårdvaru keylogger (i kilobit).

Den enda kolumn som är av intresse för användaren är Nyckel (2) och Åtgärd (3). Dessa kolumner kodar vilka tangenter som har tryckts ned och släppts. Scrolla i fältet för att se tangenttryckningshistoriken under inspelningen. Keylogger-data överförs i omvänd kronologisk ordning (senaste tangenttryckningsdata först).

Applikationen för att hämta och analysera data från DIY-hårdvarukeyloggern för Windows 9X/ME/2000/XP:
KeyGrab.zip (0.7MB)

Hela källkoden för AT89C2051-mikrokontrollen:
Källkod - diy.asm

Den förkompilerade AT89C2051 hårdvaru keylogger-firmwaren är också tillgänglig:
BIN-fil - diy.bin, HEX-fil - diy.hex

Öppen källkods DIY-hårdvarukeylogger - KeyGrab

Vi rekommenderar att du läser detta avsnitt för att undvika problem som kan uppstå vid användning av hårdvaru keylogger.

Juridiskt ansvar

  1. Länder har olika lagar om att logga tangentbordsdata. Att inte känna till lagen innebär inte att du inte behöver följa den. Vänligen läs vår användaravtal.
  2. Vi tar inget ansvar för eventuella skador eller skador som orsakats av användningen av denna hårdvaru keylogger.
  3. Du bör inte använda den här enheten för att avlyssna data som du inte har behörighet att inneha, särskilt lösenord, bankdata, konfidentiell korrespondens osv. De flesta länder betraktar detta som ett brott.

Nyckeldatabloggning

  1. Hårdvaru keyloggern har 64 kB icke-flyktigt EEPROM-minne. När detta minne är fullt, kommer skrivningen att börja om från den första minnesplatsen. De äldsta data kommer att gå förlorade.
  2. De första 128 byte av minnet är reserverade för konfigurationsdata, som att spara den senaste minnesåtkomstadressen. Den senaste minnesåtkomstadressen uppdateras ungefär var 10:e sekund.
  3. Lämna inte den hårdvarubaserade tangentloggaren ansluten i inspelningsläge när det inte är nödvändigt. Detta kommer att använda minnet och orsaka att gamla, ibland viktiga, data skrivs över.

Nyckeldataöverföring

  1. För att hämta tangentdata behöver du åtminstone en 100 MHz Pentium-dator med Windows 9X/Me/XP/2000 installerat.
  2. Hårdvaru-nyckelloggern skickar data tillbaka till datorn genom att simulera tangentbordet. Det riktiga tangentbordet måste vara frånkopplat under överföringen.
  3. Den aktiva applikationen måste vara KeyGrab. I alla andra fall kommer antingen Windows eller en annan applikation att börja tolka de simulerade tangenttryckningarna som kommer från hårdvaru keyloggern.
  4. Tangentdata hämtas i omvänd kronologisk ordning. Detta görs för att förse med de senaste datan först. Du måste vänta en stund för att få mycket gamla tangentbordsdata. Hela överföringsprocessen kan pågå i upp till 20 minuter.
  5. Överföringen måste avslutas manuellt genom att trycka på tryckknappen igen. Gör detta när tangentdata börjar dupliceras.

Tangentbordsfunktion för PS/2

  1. PS/2-tangentbordet är lite mer komplicerat än du kanske tror. Du kan märka detta genom att analysera rådata loggad av hårdvaru keyloggern. PC-tangentbordet genererar en tecken varje gång en tangent trycks ned. När tangenten släpps genereras tecknet igen med ett föregående 240 (F0 hex) tecken. Det finns även utökade tangenter som använder tecknet 224 (E0 hex). Du kan läsa mer om detta i den korta protokollet för PS/2-tangentbordet.
  2. Även om hårdvarukeyloggern har 64 kB minne betyder det inte att 64 tusen tangenttryckningar kan memoreras. En tangenttrycknings-frigöringssekvens kräver 3 byte för en standardtangent och 5 byte för en utökad tangent. Loggning har optimerats i kommersiella versioner.

Bakgrund

Öppen källkods DIY-hårdvarukeylogger - PS/2 signal linjer

Om du skulle klippa av en PS/2 tangentbordskabel skulle du förmodligen hitta 6 ledningar inuti. Endast 4 av dessa är meningsfulla. Två av dem är strömlinjer: jord (GND) och +5 volt (VCC) från datorns strömförsörjning. De andra två ledningarna är asynkrona överföringsledningar: datalinjen (DATA) och klocklinjen (CLK). Du kan se hur dessa linjer motsvarar DIN (a) och miniDIN (b) kontaktpinnar på figuren till höger. Överföringen är bi-direktionell, men tangentbordet är överlägset. Tangentbordet skickar information om vilka tangenter som har tryckts ned och släppts. Datachunken består endast av en byte, föregås av en startbit och följs av en paritets- och stoppbit. Tangentbordet placerar på varandra följande bitar på DATA-linjen och klockar dem med negativa impulser på CLK-linjen. Klockfrekvensen är 10...30 kHz. Detta skulle vara en mycket trevlig seriell protokoll om det inte vore för datorn, som ibland vill skicka information till tangentbordet. I sådana fall drar datorn ner CLK-linjen under en tid och väntar på att tangentbordet ska börja generera impulser. När dessa impulser börjar, klockar det sin egen tecken på DATA-linjen. Du kan se tillståndsdiagram för tangentbord till värd (a) och värd till tangentbord (b) överföring på figuren nedan. Detta protokoll har naturligtvis några undantag, som att avbryta en överföring, teckenupprepning osv. Men dessa är mycket sällsynta fall.

Öppen källkods DIY-hårdvarukeylogger - vågformer

Bussdata

Vad är det egentligen som överförs genom tangentbordslinjerna? Vid uppstart skickar både tangentbordet och datorn initialiseringsdata för att informera att de är OK. När datorn fungerar normalt är det bara tangentbordet som skickar data. Detta är data om varje händelse som inträffar. En händelse betraktas som en tangent som trycks ned eller släpps. Om en standardtangent trycks ned skickas dess s.k. 'scankod'. Varje tangent har exakt en scankod, vilket skapar en karta över scancoder. Om en tangent släpps skickas först den speciella byten 240 (F0 hex), följt av tangentens scankod. Så en standardtangenttryckning resulterar i att 3 tecken skickas längs linjen. Om en tangent hålls ned under en tid genereras dess scankod kontinuerligt med den inställda upprepningstiden. När den slutligen släpps skickas tecknet 240 (F0 hex), följt av scankoden. Detta skulle fortfarande vara en trevlig protokoll om det inte vore för vissa speciella tangenter som finns på standard PC-tangentbordet, som Home, End, pilarna, osv. När en speciell tangent trycks ned, genereras byte 224 (E0 hex), följt av scankoden. När en speciell tangent släpps, avfyras sekvensen 224, 240 (E0, F0), följt av scankoden. Normala och speciella tangenter är gemensamma för alla nationella tangentbordslayouter med avseende på kartan över scancodes. För att göra historien lite mer komplicerad, finns det två super-speciella tangenter, Print Screen och Pause, som orsakar en hel sekvens av scancodes att skickas. För en tangentbordsinterfacer är det bäst att låtsas som att dessa tangenter inte existerar.

Datainsamling

Mikrokontrollern övervakar DATA- och CLK-linjerna hela tiden och samlar in all data. Data loggas till icke-flyktigt EEPROM-minne när den passerar linjen. Tack vare detta kan användaren senare ta reda på varje händelse på tangentbordet. När användaren bestämmer att inspelningen är över och trycker på knappen, växlar hårdvarunyckelloggern till uppspelningsläge. Tangentbordet ska vara frånkopplat, annars kommer det att tolka dataflödet. Nyckelloggern börjar simulera tangentdata från internt hårdvaruminne. Applikationen KeyGrab måste vara aktiv för att behandla dataflödet från keylogger-hårdvaran. Normala tangenter simuleras som om de skrevs i minnet, och specialtangenter skickas med hjälp av en tvåbyte hexkod.