[pso] [Tema4][Linux]NU incepeti tema inainte sa cititi ASTA

Razvan Deaconescu razvand at cs.pub.ro
Sun May 20 18:30:11 EEST 2007


sorin gsmcreation wrote:
> Salutare!
> 
> Dupa ceva timp am reusit sa descoperim (Razvan de
> fapt) motivul comportarii ciudate a hook-ului de
> input. 
> Problema era ca in acest hook, cand citeam portul
> sursa si destinatie al oricarui pachet, fie el
> TCP/UDP, valorile acestor porturi erau corupte. 
> 
> Asta pentru ca nu obtineam ok pointerii catre
> headerele tcp si udp (foloseam metoda initiala din
> laboratorul de networking). Partea ciudata e ca in
> hook-ul de output mergea sa obtinem headerele ca in
> laborator; doar la input se comporta ciudat.
> 
> Solutia care merge este:
> struct iphdr *iph = (*skb)->nh.iph;
> struct tcphdr *tcph = (struct tcphdr *) ((*skb)->data
> + iph->ihl * 4);
> struct udphdr *udph = (struct udphdr *) ((*skb)->data
> + iph->ihl * 4);

se pare ca pe hook-ul de in (NF_LOCAL_IN), subsistemul de networking nu 
"dezasambleaza" antetul TCP/UDP in campurile (*skb)->h.th, respectiv 
(*skb)->h.uh

la hook-ul de out (NF_LOCAL_OUT), dezasamblarea este realizata corect si 
totul merge OK daca se folosesc (*skb)->h.th/(*skb)->h.uh

campul data din sk_buff (payload-ul), contine informatii de la nivelul 3 
OSI in sus (IP, TCP/UDP, date efective)

> Mai multe gasiti aici:
> http://www.topsight.net/article.php/2003050621055083/print

site-ul original este excelentul http://www.phrack.org; articolul 
original este 
http://www.phrack.org/archives/61/p61-0x0d_Hacking_the_Linux_Kernel_Network_Stack.txt
(l-am adaugat si la resursele laboratorului 9); sirul de cautare pe 
goole a fost "site:www.phrack.org netfilter hook"

Razvan


More information about the pso mailing list