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 11:55 | Pozvánky

    Dnes startuje desátý ročník oblíbené kyberbezpečnostní soutěže The Catch organizované Forenzní laboratoří CESNETu. Letos zavede soutěžící do světa národních výzkumných a vzdělávacích sítí (NREN). Čekají na vás tematické úlohy založené na principu Capture the Flag (CTF), hledání ukrytých flagů i zajímavé ceny. Otestujte své schopnosti a vyrazte na lov flagů.

    Ladislav Hagara | Komentářů: 0
    včera 20:22 | Komunita

    Byly zpracovány a na YouTube zveřejněny videozáznamy z konference LinuxDays 2026.

    Ladislav Hagara | Komentářů: 0
    včera 18:44 | Zajímavý software

    Německý startup Aleph Alpha k příležitosti výročí sjednocení Německa zveřejnil open-weight jazykový model Kolibri, vyvíjený s ohledem na unijní pojetí autorského práva, ochranu osobních údajů GDPR a nařízení EU o umělé inteligenci, jehož 'Kodexu správné praxe' je Aleph Alpha signatářem. Výsledkem tohoto přístupu je transparentnější technologie, kterou například budou moci využívat evropské veřejné instituce, ovšem za cenu

    … více »
    AfD 💙 | Komentářů: 1
    včera 18:33 | IT novinky

    Nvidia zveřejnila návrh nové bezpečnostní platformy pro nasazování AI agentů. Jedná se o nasazení AI za použití OpenShell a Sentry, dvou oddělených bezpečnostních vrstev, v nichž může Sentry monitorovat a vyhodnocovat chování AI v OpenShellu tak, že ho v krajním případě až vypne. Mělo by to zabránit dalším únikům AI ze sandboxu.

    vencour | Komentářů: 1
    3.10. 11:33 | Komunita

    Přímý přenos (YouTube) z konference LinuxDays 2026, jež probíhá tento víkend v Praze v prostorách FIT ČVUT. Na programu je spousta zajímavých přednášek.

    Ladislav Hagara | Komentářů: 2
    3.10. 02:44 | Nová verze

    Byla vydána nová verze 0.17.0 programovacího jazyka Zig (Codeberg, Wikipedie). Přispělo 206 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    2.10. 21:00 | Zajímavý projekt

    Open-source projekt OpenDLSS-NR je 'bitově přesná reimplementace' neuronové rendrovací sítě DLSS 5 od společnosti NVIDIA, jenže pro grafické API Vulkan (DLSS slouží k vylepšování klasickým způsobem vyrendrovaných snímků pomocí lokálních modelů umělé inteligence, a to v reálném čase). Projekt není nijak spojen se společností NVIDIA, je pouze pro OS Windows a natrénované váhy modelu si uživatelé musí obstarat sami. Zdrojový kód je k dispozici na GitHubu, pod licencí MIT s výjimkou pro komponenty třetích stran.

    AfD 💙 | Komentářů: 0
    2.10. 20:55 | Zajímavý software

    Společnost Cloudflare představila Clef a Clef-Flash, open-source rozhodovací modely určené pro rychlou a konzistentní klasifikaci vstupů. Na rozdíl od klasických LLM vracejí tyto modely deterministické striktně typované strukturované odpovědi s exaktními pravděpodobnostmi, tedy odpovědi ve stylu přelomového modelu Jev.

    … více »
    AfD 💙 | Komentářů: 1
    2.10. 04:44 | Nová verze

    Byla vydána beta verze Ubuntu 26.10 s kódovým názvem Stonking Stingray. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.10 mělo vyjít 15. října 2026.

    Ladislav Hagara | Komentářů: 0
    1.10. 22:22 | Nová verze

    Byla vydána verze 1.99.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 7
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2796 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    16.1.2014 23:38 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Cteni DNS headeru v C pomoci pcap
    Ahoj, mam za ukol z DNS paketu (krom jineho) vytisknout nasledujici informace z DNS headeru:
    obsah dotazu (queries) – name, type, class
    obsah odpovědí (answers) – name, type, class, TTL, address
    
    Asi by to melo vypadat nejak takto :
    
        Transaction ID: 0x241a
    
       Questions: 1
        Answer RRs: 3
        Authority RRs: 0
        Additional RRs: 0
        Queries
            www.google.com: type A, class IN
                Name: www.google.com
                Type: A (Host address)
                Class: IN (0x0001)
        Answers
            www.google.com: type CNAME, class IN, cname www.l.google.com
                Name: www.google.com
                Type: CNAME (Canonical name for an alias)
                Class: IN (0x0001)
                Time to live: 3 days, 21 hours, 52 minutes, 57 seconds
                Data length: 18
                Primary name: www.l.google.com
            www.l.google.com: type A, class IN, addr 66.249.89.99
                Name: www.l.google.com
                Type: A (Host address)
                Class: IN (0x0001)
                Time to live: 3 minutes, 47 seconds
                Data length: 4
                Addr: 66.249.89.99
            www.l.google.com: type A, class IN, addr 66.249.89.104
                Name: www.l.google.com
                Type: A (Host address)
                Class: IN (0x0001)
                Time to live: 3 minutes, 47 seconds
                Data length: 4
                Addr: 66.249.89.104
    
    Priznam se, ze tomu zatim moc nerozumim, z toho, co jsem si nastudoval jsem schopny dat dohromady jen zakladni info, typ, class, TTL, adresu. Zatim nechpu jak ziskat jmeno, jak rozlisit dns pakety (query nebo answer). Nejak se tomu nemuzu dostat pod kuzi. Zatim jsem napsal fci na tisknuti packetu, vyuzivajici pcap, ktera dostava z main funkce packet (prikladam jeste dalsi pomocne fce, ktere fuknce print_packet() vyuziva:
    
    void print_mac(unsigned char* mac){
    	int i;
    	for(i=0; i<6; i++){
    		if(i!=0) printf(":");
    		printf("%X",mac[i]);
    	}
    }
    
    char* print_url(char data[]){
    	int i=0;
    	int toread = data[0];
    	int start = 0;
    	i++;
    
    	while(toread != 0){
    		//printf(".");
    		// print everything bettween the dots
    		for(; i<=start+toread; i++)
    			printf("%c",data[i]);	
    		// next chunk
    		toread = data[i];
    		start = i;
    		i++;
    	}
    	// return a char* to the first non-url char
    	return &data[i];
    }
    
    
    
    int sizeofUrl(char data[]){
    	int i = 0;
    	int toskip = data[0];
    
    	// skip each set of chars until (0) at the end
    	while(toskip!=0){
    		i += toskip+1;
    		toskip = data[i];
    	}
    	// return the length of the array including the (0) at the end
    	return i+1;
    }
    
    void printRRType(int i){
    	switch(i){
    		case 1:
    			printf("IPv4 address record");
    			break;
    		case 15:
    			printf("MX mail exchange record");
    			break;
    		case 18:
    			printf("AFS database record");
    			break;
    		case 28:
    			printf("IPv6 address record");
    			break;
    		default:
    			printf("unknown (%d)",i);
    	}
    }
    
    void print_packet(void *pack) {
        char *tab = "   ";
        // listening with an eth header	
        packet_desc* pd = (packet_desc*) pack;
    
        int numRRs = ntohs(pd->dns.qdcount) + ntohs(pd->dns.ancount) + ntohs(pd->dns.nscount) + ntohs(pd->dns.arcount);
        int i;
    	
        for (i = 0; i < numRRs; i++) {
            static_RR *RRd = (static_RR*) ((void*) pd->data + sizeofUrl(pd->data));
            int type = ntohs(RRd->type);
            int clas = ntohs(RRd->clas);
            int ttl = (uint32_t) ntohl(RRd->ttl);
            uint8_t *rd = (void*) (&RRd->rdlength + sizeof (uint16_t));
    
            printf("L2(MAC):\n");
            
            printf("%ssource MAC:", tab);
            print_mac(pd->eth.shost);
            printf("\n");
            printf("%sdestination MAC:",tab);
            print_mac(pd->eth.dhost);   
            printf("\n");
            
            printf("L3(IP):\n");
            printf("%ssource:%s\n", tab, inet_ntoa(pd->ip.src));
            printf("%sdest:%s\n", tab, inet_ntoa(pd->ip.dst));
    
            printf("L4:(UDP)\n");
            printf("%ssource port:%d\n", tab, ntohs(pd->udp.sport));
            printf("%sdest port:%d\n", tab, ntohs(pd->udp.dport));
    
            printf("DNS:\n");
            printf("%sid:%d\n", tab, ntohs(pd->dns.id));
            printf("%s# questions:%d\n", tab, ntohs(pd->dns.qdcount));
            printf("%s# answers:%d\n", tab, ntohs(pd->dns.ancount));
    
            printf("RESOURCE RECORDS\n");
                    
            printf("\n");
            printf("%stype(%d):", tab, type);
            //printf("%sflags:%d\n", tab, ntohs(pd->dns.flags));
            printRRType(ntohs(RRd->type));
            printf("\n");
            printf("%sclass:%d\n", tab, clas);
            printf("%sTTL:%d\n", tab, ttl);
            printf("%saddress:", tab);
            printf("%d.%d.%d.%d\n", rd[0], rd[1], rd[2], rd[3]);
    
            printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
    
        }
    
    }
    
    Pro zpracovani packetu mam nasledujici struktury, jakozto hlavicky headeru jednotlivych vrstev sitove logiky:
    
    
    #define ETHER_ADDR_LEN	6
    
    typedef u_int tcp_seq;
    
    struct ether_header {
        unsigned char dhost[ETHER_ADDR_LEN]; // Destination host address
        unsigned char shost[ETHER_ADDR_LEN]; // Source host address
        unsigned short type; // IP? ARP? RARP? etc
    };
    
    struct ip_header {
        unsigned char vhl; // version << 4 | header length >> 2
        unsigned char tos; // type of service
        unsigned short len; // total length
        unsigned short id; // identification
        unsigned short off; // fragment offset field
        unsigned char ttl; // time to live
        unsigned char prot; // protocol
        unsigned short sum; // checksum
        struct in_addr src;
        struct in_addr dst; // source and dest address 
    };
    
    struct udp_header {
        unsigned short sport; // source port
        unsigned short dport; // destination port
        unsigned short length; // udp length
        unsigned short checksum; // udp checksum
    };
    
    struct dns_header {
        unsigned short id;
        unsigned short flags;
        unsigned short qdcount;
        unsigned short ancount;
        unsigned short nscount;
        unsigned short arcount;
    };
    
    typedef struct {
        uint16_t type;
        uint16_t clas;
        uint32_t ttl;
        uint16_t rdlength;
    } static_RR;
    
    typedef struct {
        struct ether_header eth;
        struct ip_header ip;
        struct udp_header udp;
        struct dns_header dns;
        char data[0];
    } packet_desc;
    
    #endif
    
    Potrebuji tedy nejak vydolovat hostname z jednotlivych packetu a rozlisit je podle toho, zda jsou query, nebo answer a jejich obsah vypsat, jak bylo uvedeno na zacatku.

    Moz by me pomohla jakaloliv rada, protoz ted jsme v tom hodne zamotany a nevim jak dal. Snad nejak upravit struktury?

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.