01.01.2013 Views

Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Blz, agora conhecemos o segundo argumento de nossa função de hoking,<br />

vamos ver o que mais vem da toca do coelho ;)<br />

O terceiro argumento const struct net_device *in é o dispositivo do qual<br />

nós chegamos, enquanto const struct net_device *out, é o dispositivo de<br />

saída(no caso de NF_IP_LOCAL_OUT ou NF_IP_POST_ROUTING).<br />

Esta struct esta declarada em ~/linux/netdevice.h, temos um campo<br />

muito interessante que nos pode ser útil que indica o nome da interface<br />

sua declaração é:<br />

char name[IFNAMSIZ];<br />

O último argumento da função de hoking é o:<br />

int (*okfn)(struct sk_buff *)<br />

Não mexeremos com esta função, mas para não deixar algo nebuloso vou<br />

tentar explicar para que serve esta função, dei uma pesquisada na net e<br />

descobri que as hoks do netfilter pode descançar(sleep), em momentos<br />

como por exemplo o pacote é passado para o espaço do usuário, neste<br />

caso, não seria muito inteligente manter o processo trancado, ou rodando<br />

esperando a hok retornar, então as funções de tratamento do netfilter<br />

foram divididas em duas, a segunda parte do tratamento, ocorre quando<br />

o pacote retorna do espaço do usuário, esta parte é a okfn :), teve uma<br />

thread lista do netfilter explicando isto, muito melhor do que eu posso<br />

explicar(o próprio rusty que explica hehehehe):<br />

http://lists.netfilter.org/pipermail/netfilter/2<strong>000</strong>-January/003173.html<br />

De qualquer forma isto não é importante dentro deste documento, ja que<br />

não utilizaremos nada relativo a esta função :).<br />

Como vc pode ver esta função retorna um inteiro, este retorno decide o<br />

que vai ser feito com o pacote. Seria no iptables o -j, ou o que a hok fará<br />

com o pacote. Vamos dar uma olhada no que nossa função pode<br />

retornar:<br />

Estas definições estão em ~/linux/netfilter.h :<br />

#define NF_DROP 0<br />

#define NF_ACCEPT 1<br />

#define NF_STOLEN 2<br />

#define NF_QUEUE 3<br />

#define NF_REPEAT 4<br />

NF_DROP: óbvio faz com que o pacote seja descartado.<br />

NF_ACCEPT: Nem um pouco menos óbvio retornando NF_ACCEPT<br />

fazemos com que nosso pacote seja aceito.<br />

NF_STOLEN: Bom este não é tão óbvio hehehe NF_STOLEN faz com que o<br />

115

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!