jak podstrcit ethernet adresu ?

Jirka Kosina jikos na jikos.cz
Čtvrtek Srpen 15 18:03:07 CEST 2002


On Thu, 15 Aug 2002, Petr Skoda wrote:

> Myslite, ze se da nejak zaridit pomoci LD_PRELOADu,
> aby aplikace volajici
> ioctl(cislo,SIOCGIFHWADDR,xxxxx)
> kde cislo je otevreny datagramovy socket
> dostala jine cislo, nez ma doopravdy ethernetova karta ?

Myslim, ze pomoci LD_PRELOAD to jde skutecne velmi jednoduse.

test.c:
int ioctl(int d, int request, ...) { /* tady naplnit to co chcete */ }

$ gcc -shared test.c -o test.o

A muzete preloadovat test.o

Pokud ta aplikace vola jeste jina ioctl(), nez jen SIOCGIFHWADDR, tak si 
jeste budete muset uvnitr toho Vaseho ioctl() v test.c pomoci dlopen() a 
dlsym() vytahnout z libc pointer na skutecny ioctl(), a ten pak, na 
zaklade podminky na druhy argument volat.

Priznam se, ze jsem to nezkousel, ale IMHO by to melo fungovat.

-- 
JiKos.




Další informace o konferenci Linux