PDA

Ver la versión completa : De "keyloggers" y aplicaciones paralelas.



smaug_
09-05-2007, 17:46
A ver chicos, tengo una consulta, que espero que os sea interesante. Os pongo en precedentes, necesito para un supermercado lo siguiente, el dueño quiere que se instalen unas tarjetas de fidelizacion. Pero existe un problema, quue el supermercado pertenece a una franquicia X. y esta franquicia es la que ha puesto el programa que se ejecuta en las cajas (sobre una red hat 7.2 muy a medida) , y el programa en el servidor. Por supuesto, estos son intocables, ya que la franquicia no se tiene que enterar de nada de lo que pongamos. Entonces necesitariamos añadir al supermercado, lo dicho antes de las tarjetas de fidelizacion y aparte una gestion de stock. Bien, ahora tenemos un problema, como hacer el programa y poder ejecutarlo en paralelo. Porque para la cajera ha de ser transparente, y no podemos sustituir el programa actual.

Ahora os cuento mi idea, he pensado en hacer un estudio completo de la aplicacion actual, como trabaja al milimetro, para luego crear una aplicacion paralea, que tenga el mismo funcionamiento, y recoja las pulsaciones de teclas mediante una especie de keylogger (programado a medida), para poder ejecutar las ordenes necesarias. Como lo veis?? Seria muy costoso de hacer ?? (yo creo que si, bastante) en que lenguaje?? (yo he pensado en c)
Y luego aun asi seguiriamos teniendo puntos oscuros, como por ejemplo, si nuestra aplicacion tiene que recibir la tarjeta de fidelizacion, como le decimos ala otra aplicacion que se pare momentaneamente??
Veo muchos puntos negros, como lo veis de viable?? A ver si se os ocurre algo y me ayudais a aclarar un poco las ideas ^^U
Un saludo y muchas gracias!

smaug_
10-05-2007, 16:14
Ey! Habeis visto el post?? :P

nosferatu
10-05-2007, 16:29
Uf! Eso del keyloger no parece mala idea, pero tiene pinta de dar mucho chollo, ya que tendrías que asimilar su comportamiento al del programa "oficial".

¿No habéis pensado en hacerlo en equipos independientes (PDA's o algo así)?

smaug_
10-05-2007, 18:04
Si, pero logisticamente es imposible, ya que seria duplicar el numero de equipos. unas 5 cajas por tres supermercados. Aparte, que de esa forma, las cajeras tendrian que hacer el doble de trabajo y eso no es viable. Las chiquillas se volverian loca y podrian cometer algun fallo ^^U

smaug_
10-05-2007, 19:07
Alguien sabe donde encontrar info de hooks para linux????

Malenko
11-05-2007, 17:59
Que funcionalidades tendrá la tarjeta de fidelización? Me refiero, a que relación tiene con el programa normal, etc. Por ejemplo, si a la tarjeta le has de indicar el importe de la compra o similares.

smaug_
11-05-2007, 19:10
Pues el sistema de fidelizacion, seria que cuando termines la compra, el cliente pase la tarjeta, y entonces guarde el importe total de esa compra, la fecha y el numero de cliente en una base de datos del servidor. Asi de simple.

j8k6f4v9j
13-05-2007, 23:36
Hola smaug_, si es tan simple se me ocurre que podrías hacer un programita igual de simple que se encargue de eso. Lo puedes simplificar por ejemplo lanzando el programa al pulsar una tecla (una poco usada, F12 por ejemplo).

De todas formas, si lo quieres hacer mediante keyloggin', puedes buscar info sobre cómo capturar lo que ocurre en el puerto 0x60, que es el teclado en el sistema.

Ya tienes programas como lkl (linux keylogger), hechos, de los que puedes ver su funcionamiento o incluso usarlos directamente.

[What is lkl]

LKL is a userspace keylogger that runs under linux--x86/arch.
LKL sniffs and logs everything passes trought the hardware keyboard
port (0x60).


Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

smaug_
14-05-2007, 13:49
Hola smaug_, si es tan simple se me ocurre que podrías hacer un programita igual de simple que se encargue de eso. Lo puedes simplificar por ejemplo lanzando el programa al pulsar una tecla (una poco usada, F12 por ejemplo).
El problema esta en que no podemos saber el improte de la compra, ya que eso se encarga el otro programa, y no es viable que la cajera lo meta a mano. Factor humano=errores grandes.
Ademas, la mayoria de las teclas tienen asignadas funciones, y los teclados que usan no tienen teclas de funcion ni ctrl ni alt :S


De todas formas, si lo quieres hacer mediante keyloggin', puedes buscar info sobre cómo capturar lo que ocurre en el puerto 0x60, que es el teclado en el sistema.

Ya tienes programas como lkl (linux keylogger), hechos, de los que puedes ver su funcionamiento o incluso usarlos directamente.

Descubri el otro dia el lkl, y ya le estoy echando un vistazo al codigo. Lo mas importante ya esta "hecho" que es saber si era viable esta forma. Ahora toca implementarla, aunque sea muy costosa ^^U
Gracias y un saludo

j8k6f4v9j
14-05-2007, 15:48
Pues sí que es una faena. Ya nos contarás cómo lo vas llevando :)

Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

smaug_
23-05-2007, 17:23
El proyecto ya tiene luz verde. Y ya me he puesto a trabajar en ello(mas o menos). Despues de revisar el codigo del lkl, que es bastante "sencillo", he visto que por esa parte, solo hay que definir un nuevo keymap para teclados españoles. Y cambiar el contenido de la funcion para que en vez de enviar las pulsaciones a un fichero, las envie al programa. Como podria hacer esta parte? Segun tengo entendido la forma de comunicar dos procesos en linux es creando un socket de comunicacion entre ellos no¿? O existe otra forma??
Y ya si no es mucho pedir, alguna info sobre sockets?? Mientras voy a ir desempolvando mis apuntes del modulo. ^^
Un saludo y muchas gracias :P

j8k6f4v9j
29-05-2007, 22:11
En GNU/linux los sockets suelen ser ficheros en el directorio /tmp del sistema. Yo siempre remito a la información de debian, que es abundante.

Salu2

smaug_
29-05-2007, 23:22
Creia que os habiais olvidado de este hilo. Veo que has estado desaparecido j8 :P
Bueno, modificando el lkl, ya le he añadido la comunicacion mediante sockets, me falta depurarla un poco al pasar las cadenas, pero funciona. Ahora añadirle un key_map en castellano y con los arreglos para que funcione en castellano. Y ya estara casi listo esa parte ^^.