[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