Hallo zusammen, zum Zeitvertreib wollte ich mir mal einen Keylogger zusammenbasteln. Im Internet bin ich auf Folgendes gestoßen: http://steelrats.net/articles.php?article_id=178 Nun habe ich das Ganze nach Anleitung aufgebaut, Fuses entsprechend gesetzt, keylogger_tiny13_512.hex und keylogger_tiny13.eep geflasht. Leider funktioniert es nicht und ich kann nicht nachvollziehen warum. Das C-Programm verstehe ich leider nur zum Teil, da ich wenig Erfahrung mit I²C und EEPROM habe. Der Controller ist ein AtTiny13V, der EEPROM ein 24LC512. Nachdem was ich im Internet gelesen habe sollte der 24LC512 kompartibel zum 24C512 sein, oder etwa nicht? Fuses sind: Interner RC-Oszillator 9,6MHz, ClkDiv8 = 1, BrownOut bei 4,3V. Flash und Verify waren erfolgreich und die Tastatur funktioniert auch mit Keylogger dazwischen einwandfrei. Wenn ich allerdings ein paar Zeilen zum Test im Notepad schreibe, die Tastatur dann abstecke und dann den Taster drücke, erscheint absolut nichts im Notepad. Vielleicht kann ja jemand etwas mit dem C-Code anfangen und mir helfen. Vielen Dank schon mal und ein schönes Wochenende
Es gibt schon Unterschiede. http://www.picbasic.co.uk/forum/showthread.php?t=5976 http://forums.parallax.com/showthread.php?106668-24lc512-or-24c512 Die Unterschiede betreffen lt. Links die Adressleitungen und die Arbeitsgeschwindigkeit. Die Adressleitungen musst du im Schaltplan und deiner Hardware prüfen. Mir gefällt nicht, dass die im Originalschaltplan floaten. Das macht vielleicht bei den 24C512 nix aus, bei dem 24LC512 kann das eine Rolle spielen. Die Arbeitsgeschwindigkeit auf dem Bus kannst du mit Delays runtersetzen. Problematisch könnte das Neuübersetzen werden. Mit der WinAVR Toolchain aus 2010 komme ich mit -Os und dem Originalcode bereits auf 101% Flashfüllgrad, d.h. zusätzlicher Code ist superübel!
So, ich habe jetzt mal A0, A1, A2 und WP auf GND gelegt und den 24lC512 durch einen 24C512 ersetzt (hatte ich überraschender Weise in der Bastelkiste entdeckt). Resultat bleibt allerdings das gleiche: Funktioniert nicht. Wenn ich eine Taste auf der Tastatur drücke, kann ich auf dem Oszi (analog) ein "Zuckeln" bei Keyboard-DATA und Keyboard-CLOCK verfolgen. Bei den EEPROM-Leitungen SCL und SDA tut sich leider garnichts. Ich vermute daher eher, dass es am AtTiny13V liegt. Da er sich flashen lässt müsste der interne RC-Oszillator egtl. schwingen. Reset liegt auch auf high, sollte also gehen. Weiß jemand, ob sich Register oder ähnliches vom AtTiny13 zum AtTiny13V geändert haben? Konkret habe ich hier einen AtTiny13V-10PU. Hat jemand den Code soweit verstanden, dass er mir sagen kann wo ich die zu verwendende EEPROM Größe definiere? MfG
EDIT: War wohl blind beim letzten Post, der Parameter EEPROM_SIZE stellt wohl die gewünschte Größe ein. Muss ich hier für die gewünschten 512K den Wert 512*1024 = 524288 = 0x80000 eintragen?
Wenn du neu übersetzt: ja. Allerdings sind in dem Download-ZIP von den Stahlratten verschiedene HEX-Dateien für verschiedene EEPROM-Größen drin.
Die EEPROM_SIZE Angabe im Code oben ist eine Byte Angabe für ein externes 128K BIT EEPROM. Wenn du EEPROM_SIZE für ein 512K EEPROM eintragen willst, musst du den Wert 512 * 1024 / 8 angeben. Die EEPROM_ADDR Slave Adresse ist 0b10100000, also 0xA0. Check das mal mit den Daten deines EEPROMs.
Für EEPROM_SIZE hättte ich für 512k 512*1024 = 524288 = 0x80000 eingetragen. Laut Datenblatt ist die Adresse für den 24C512 und 24LC512 folgendermaßen aufgebaut: 1010xxx wobei xxx jeweils für A0-A2 stehen. Bei A0 - A2 auf GND müsste EEPROM_ADDR 0b10100000 stimmen. Fuses siehe Anhang. Komisch finde ich nur, dass sich auf der I²C Verbindung zum EEPROM garnichts tut, was für mich nahelegt, dass der µC entweder nicht arbeitet oder der I²C falsch konfiguriert ist. Reset liegt auf +5V und der Controller lässt sich aus dem AVR-Studio heraus ansprechen. Leider kenne ich mich mit I²C garnicht aus. MfG
> Bei den EEPROM-Leitungen SCL und SDA tut sich leider garnichts. Die 4.7K Pull-Up Widerstände auf dem I2C Bus hast du aber installiert, oder? Das ist wichtig, weil die Pegel nur über das DDRB Register für den Pin eingestellt werden. Pin EINGANG mit externem Pull-Up ergibt HIGH und Pin Ausgang mit Defaultwert des PORT Registers ergibt LOW. Hast du daran gedacht, die EEP Datei in das interne EEPROM des AVR zu programmieren? Das enthält die Startwerte für die Speicheradressen im externen EEPROM! Du kannst nach dem Drücken des Tasters auch mal das AVR EEPROM auslesen, ob das Programm dort was abgelegt hat, also soweit schon mal funktioniert.
> Für EEPROM_SIZE hättte ich für 512k 512*1024 = 524288 = 0x80000 > eingetragen. Und das wäre falsch gewesen. Im Code sieht man deutlich dass Bytes gezählt werden und keine Bits. Die Größenangabe des externen EEPROMs auf dem IC bzw in dessen Namen ist in Bits. Das musst du fürs Programm umrechnen, daher die Division durch 8.
> Wie schnell wird dein AVR getaktet? Hast du die Fuse-Einstellungen von > Stahlratte verwendet? Dein Bild von den Fuses zeigt eine programmierte CKDIV8 Fuse. Das ist anders bei den Stahlratten. Dort wird im normalen Programm mit Fullspeed 9.6 MHz gearbeitet und nur bei I2C Zugriffen auf 1.2 MHz runtergeschaltet. Von dem Code
1 | //#define I2C_DELAY _delay_us(5);
|
2 | //#define I2C_DELAY asm ("nop");
|
3 | #define I2C_DELAY ;
|
Halte ich nicht viel. Man riecht förmlich, dass es hier bereits beim Original Probleme gab und es irgendwie zurecht gefummelt wurde. Die jetzige Lösung ohne Delay (wenn das auch im HEX so ist) und klappern mit dem DDR Register ist denkbar ungünstig. Schau dir das Datenblatt deines EEPROMs an und versuche das Timing richtig zu implementieren. Dabei kann es helfen, wenn du dir ein kleines Pin-Klapper-Programm schreibst und das Timing auf deinem Oszi mal ausmisst.
Oh Mann, diese Fuses... Der Satz > Most of them are already set by default except CKDIV8. So you will turn on > internal 9.6 Mhz oscillator and divide its clock by 8. hat mich verwirrt. Der Keylogger funktioniert leider nur mäßig, Zeichen wie @€µ werden nicht erkannt und teilweis wird Kauderwelsch ausgelesen. Hängt wohl mit dem schlechten EEPROM Timing zusammen. Leider scheint ein Neucompilieren unmöglich, da ich mit AVR-Studio 5.1 auf 105,3% Codegröße komme und AVR-Studio 4.1 + AVR-GCC 20100110 spuckt folgende Fehlermeldung aus: rm -rf key.o key.elf dep/* key.hex key.eep key.lss key.map Build succeeded with 0 Warnings... mmcu=attiny13 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT key.o -MF dep/key.o.d -c ../key.c /usr/bin/sh: -Wall: command not found make: [key.o] Error 127 (ignored) mmcu=attiny13 -Wl,-Map=key.map key.o -o key.elf /usr/bin/sh: -Wl,-Map=key.map: command not found make: [key.elf] Error 127 (ignored) avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature key.elf key.hex avr-objcopy: 'key.elf': No such file make: *** [key.hex] Error 1 Build failed with 1 errors and 0 warnings... Keine Ahnung was da wieder los ist ... Früher habe ich einfach AVR-Studio + AVR-GCC installiert und alles hat wunderbar geklappt, jetzt anscheinend nichtmehr, warum auch immer. Auf Jeden Fall VIELEN, VIELEN DANK FÜR EURE UNTERSTÜTZUNG !!! MfG
Ich kann dir noch die Bauanleitung von http://www.keelog.com/diy.html empfehlen. Habe ich vor Jahren mal nachgebaut und funktionierte prima, ohne das man sich über den Code Gedanken machen muss. Gruss Robert
Robert Dorn schrieb: > Ich kann dir noch die Bauanleitung von http://www.keelog.com/diy.html > empfehlen. Darauf bin ich auch schon gestoßen, allerdings ist der Aufbau mit dem großen Controller und dem externen Quarz nicht so kompakt wie der von den Stahlratten. Werde den aber trotzdem mal auf Steckbrett aufbauen. Für alle die das Thema noch interessiert und eher auf Microchip stehen: http://www.radiolocman.com/shem/schematics.html?di=64169 Vielleicht taugt der ja was, der Aufbau ist jedenfalls in der SMD-Version kompakt realisierbar. MfG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.