abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 09:22 | Pozvánky

V Praze dnes probíhá Konference e-infrastruktury CESNET. Na programu je řada zajímavých přednášek. Sledovat je lze i online na stránce konference.

Ladislav Hagara | Komentářů: 0
9.12. 20:11 | Nová verze

Byl vydán Debian 9.3, tj. třetí opravná verze Debianu 9 s kódovým názvem Stretch a Debian 8.10, tj. desátá opravná verze Debianu 8 s kódovým názvem Jessie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 9 a Debianu 8 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

Ladislav Hagara | Komentářů: 0
9.12. 00:44 | Nová verze

Po 6 měsících vývoje od vydání verze 0.13.0 byla vydána verze 0.14.0 správce balíčků GNU Guix a na něm postavené systémové distribuce GuixSD (Guix System Distribution). Na vývoji se podílelo 88 vývojářů. Přibylo 1 211 nových balíčků. Jejich aktuální počet je 6 668. Aktualizována byla také dokumentace.

Ladislav Hagara | Komentářů: 3
8.12. 21:33 | Nová verze

Po půl roce vývoje od vydání verze 5.9 byla vydána nová stabilní verze 5.10 toolkitu Qt. Přehled novinek na wiki stránce. Současně byla vydána nová verze 4.5.0 integrovaného vývojového prostředí (IDE) Qt Creator nebo verze 1.10 nástroje pro překlad a sestavení programů ze zdrojových kódů Qbs.

Ladislav Hagara | Komentářů: 0
7.12. 11:11 | Komunita

Naprostá většina příjmů Mozilly pochází od výchozích webových vyhledávačů ve Firefoxu. Do konce listopadu 2014 měla Mozilla globální smlouvu se společností Google. Následně bylo místo jedné globální smlouvy uzavřeno několik smluv s konkrétními vyhledávači pro jednotlivé země. V USA byla podepsána pětiletá smlouva s vyhledávačem Yahoo. Dle příspěvku na blogu Mozilly podala společnost Yahoo na Mozillu žalobu ohledně porušení této

… více »
Ladislav Hagara | Komentářů: 0
7.12. 05:55 | Zajímavý článek

V Londýně probíhá konference věnovaná počítačové bezpečnosti Black Hat Europe 2017. Průběžně jsou zveřejňovány prezentace. Videozáznamy budou na YouTube zveřejněny o několik měsíců. Zveřejněna byla například prezentace (pdf) k přednášce "Jak se nabourat do vypnutého počítače, a nebo jak v Intel Management Engine spustit vlastní nepodepsaný kód". Dle oznámení na Twitteru, aktualizace vydaná společností Intel nevylučuje možnost útoku.

Ladislav Hagara | Komentářů: 5
7.12. 04:44 | Komunita

Virtualizační nástroj GNOME Boxy ve Fedoře 27 umožňuje jednoduše stáhnout a nainstalovat Red Hat Enterprise Linux, který je pro vývojáře zdarma. Vývojová verze GNOME Boxy již umožňuje jednoduše stáhnout a nainstalovat další linuxové distribuce. Ukázka na YouTube. Seznam distribucí a jejich verze, nastavení a cesty k ISO obrazům je udržován v knihovně a databázi libosinfo (GitLab).

Ladislav Hagara | Komentářů: 0
7.12. 03:33 | Nová verze

Google Chrome 63 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 63.0.3239.84 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře. Opraveno bylo 37 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 10
6.12. 22:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 147. brněnský sraz, který proběhne v pátek 15. prosince od 18:00 hodin v restauraci Severka na rohu Tučkové a Zahradníkové.

Ladislav Hagara | Komentářů: 0
6.12. 22:33 | Komunita

V roce 2013 byl představen projekt Debsources, jehož cílem bylo a je poskytnout webové rozhraní ke zdrojovým kódům balíčků obsažených v Debianu. Projekt doteď běžel na doméně debian.net. Dnes bylo oznámeno, že projekt byl přesunut na oficiální infrastrukturu Debianu. Služba Debian Sources nově běží na doméně debian.org. V plánů je řada vylepšení. Již dnes je ke službě k dispozici API a procházet lze také patche a licence.

Ladislav Hagara | Komentářů: 0
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (1%)
 (1%)
 (1%)
 (75%)
 (14%)
Celkem 947 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    Rozcestník

    LD_PRELOAD a ioctl()

    6.3.2009 01:02 | Přečteno: 2053× | Programování | Výběrový blog | poslední úprava: 10.3.2009 13:29

    Občas se hodí zavolat vlastní verzi ioctl() bez rekompilace binárky (např. pro ladící účely a teprve poté zavolat reálné ioctl()), jako ukázku přikládám návrat MAC adresy:

    $ ./get_mac 
    00:0a:e4:a9:36:d8
    $ LD_PRELOAD="libwrap_ioctl.so.1.0" ./get_mac 
    0a:0b:0c:0d:0e:0f
    

    Makefile:

    all: libwrap_ioctl.so get_mac
    
    libwrap_ioctl.so: ioctlw.c
    	gcc -Wall -fPIC -shared -Wl,-soname,libwrap_ioctl.so.1           \
    		-I/usr/lib/oss/include -I/usr/include                        \
    		-o libwrap_ioctl.so.1.0 -ldl ioctlw.c
    
    get_mac: get_mac.c
    	gcc -Wall -o get_mac get_mac.c
    

    ioctlw.c:

    #define _GNU_SOURCE
    #include <dlfcn.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <net/if.h>
    
    #define SIOCGIFHWADDR   0x8927      /* Get hardware address     */
    
    static int (*next_ioctl)(int fd, int request, void *data) = NULL;
    
    int ioctl(int fd, int request, void *data)
    {
        struct ifreq ifr;
        char *msg;
    
        if (request == SIOCGIFHWADDR) {
            memcpy(&ifr, data, sizeof(struct ifreq));
    
            ifr.ifr_hwaddr.sa_data[0] = 0x0A; 
            ifr.ifr_hwaddr.sa_data[1] = 0x0B;
            ifr.ifr_hwaddr.sa_data[2] = 0x0C;
            ifr.ifr_hwaddr.sa_data[3] = 0x0D;
            ifr.ifr_hwaddr.sa_data[4] = 0x0E;
            ifr.ifr_hwaddr.sa_data[5] = 0x0F;
    
            memcpy(data, &ifr, sizeof(struct ifreq));
            return 0;
        }
    
        if (next_ioctl == NULL) {
            fprintf(stderr, "ioctl: wrapping ioctl\n");
            fflush(stderr);
    
            next_ioctl = dlsym(RTLD_NEXT, "ioctl");
    
            fprintf(stderr, "next_ioctl = %p\n", next_ioctl);
            fflush(stderr);
    
            if ((msg = dlerror()) != NULL) {
                fprintf(stderr, "ioctl: dlopen failed: %s\n", msg);
                fflush(stderr);
                exit(1);
            }
            else {
                fprintf(stderr, "ioctl: wrapping done\n");
            }
    
            fflush(stderr);
        }
    
        return next_ioctl(fd, request, data);
    }
    
    //void *dlsym(void *handle, const char *symbol)
    //{
    //    void* result = __libc_dlsym(handle, symbol);
    //
    //    printf("%s\n", symbol);
    //
    //    return result;
    //}
    

    get_mac.c

    #include <stdio.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <sys/ioctl.h>
    #include <netinet/in.h>
    #include <net/if.h>
    
    int main()
    {
       int fd;
       struct ifreq ifr;
      
       fd = socket(AF_INET, SOCK_DGRAM, 0);
      
       ifr.ifr_addr.sa_family = AF_INET;
       strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
      
       ioctl(fd, SIOCGIFHWADDR, &ifr);
      
       close(fd);
      
       /* display result */
       printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
               (unsigned char)ifr.ifr_hwaddr.sa_data[0],
               (unsigned char)ifr.ifr_hwaddr.sa_data[1],
               (unsigned char)ifr.ifr_hwaddr.sa_data[2],
               (unsigned char)ifr.ifr_hwaddr.sa_data[3],
               (unsigned char)ifr.ifr_hwaddr.sa_data[4],
               (unsigned char)ifr.ifr_hwaddr.sa_data[5]);
      
       return 0;
    }
    

    Zdroje:

    Using LD_PRELOAD libraries and glibc backtrace function for debugging
    Simple sample of getting MAC address information
    Wrapping dlsym()

           

    Hodnocení: 88 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    6.3.2009 07:45 ...
    Rozbalit Rozbalit vše Re: LD_PRELOAD a ioctl()
    LD_PRELOAD je sikovna vec. Zrovna vcera som si tak pisal firewall pre jedneho guesta vo vserveri, ktory sa inak k iptables nedostane. Pridal som LD_PRELOAD na kniznicu s vlastnym connect, send, recv, sento, recvfrom a mozem si kontrolovat koho pustim a koho nie. Iptables to nie je, ale lepsie ako nic.
    Jardík avatar 6.3.2009 18:48 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: LD_PRELOAD a ioctl()
    Hlavně iptables nenastavíš pro jednotlivé programy (?), ale s LD_PRELOAD to půjde (až na nefunkčnost s rootem).
    Věřím v jednoho Boha.
    9.3.2009 23:25  
    Rozbalit Rozbalit vše Re: LD_PRELOAD a ioctl()
    Nevedeli by ste o nejakom riešení pre staticky linkované binárky? Potreboval by som presne to isté - meniť MAC adresu, ale tu mi, žiaľ, LD_PRELOAD nepomôže.

    Ďakujem.
    Fuky avatar 10.3.2009 00:50 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: LD_PRELOAD a ioctl()

    Funkce ioctl() je v libc:

    $ readelf -a /lib/i686/cmov/libc.so.6 |grep ioctl
      1361: 000d8040    63 FUNC    WEAK   DEFAULT   11 ioctl@@GLIBC_2.0
    

    Co říká:

    $ ldd tvoje_binarka
    	linux-gate.so.1 =>  (0xb7f30000)
    	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7db8000)
    	/lib/ld-linux.so.2 (0xb7f31000)
    

    Myslím, že i Tvá binárka bude využívat libc, i když ostatní knihovny jsou přilinkovány staticky.

    11.3.2009 15:29
    Rozbalit Rozbalit vše Re: LD_PRELOAD a ioctl()

    Žiaľ, nie. Nesie so sebou vlastnú C knižnicu, ldd na ňu vôbec nefunguje.

    Jardík avatar 16.3.2009 21:43 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: LD_PRELOAD a ioctl()
    Já myslel, že alespoň s jednou knihovnou to musí být slinkované vždy - a tou je ld-linux.so.*
    Věřím v jednoho Boha.
    17.3.2009 12:46 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: LD_PRELOAD a ioctl()
    ptrace(2) a přepisovat výsledky volání systému.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.