Vra

Ek probeer om 'n userspace aansoek wat kan haak in netwerk stapel 'n OS skryf, snuif pakkies vlieg verby en wysig diegene wat sy belangstelling in.

Na baie Googlen, blyk dit vir my dat die eenvoudigste (nog redelik sterk) metode om dit te doen (op enige platform) is Linux se libnetfilter_queue projek. Maar ek sukkel om enige redelike dokumentasie vir die projek, buite die beperkte amptelike dokumentasie. Die belangrikste eienskappe (soos deur die eerste skakel is)

  • ontvangs tou pakkies van die kern nfnetlink_queue substelsel
  • die uitreiking van verkragting en / of reinjecting verander pakkies om die kern nfnetlink_queue substelsel

Die klem is my eie. Hoe presies ek bedoel te werk gaan dit? Ek het probeer om die wysiging van die monster kode verskaf, maar miskien is ek misverstand iets. Die kode is wat in NFQNL_COPY_PACKET af, so ek am ontvangs van die hele pakkie - maar my wysigings aan dit blyk te wees beperk tot my eie aansoek - as 'n mens sou verwag, gegewe die "kopieer" semantiek .

My gevoel is dat ek bedoel om gebruik van NF_QUEUE een of ander manier te maak, maar ek het nie heeltemal grokked dit. Enige wenke?

(As daar 'n eenvoudiger meganisme om dit te doen, wat ook kruis-platform, wil ek graag om te hoor oor dit!)

Was dit nuttig?

Oplossing

Ek kan nie glo ek gemis hierdie voorheen. As terughoudend as ek op vrae oor SO plaas, het ek gedink ek sou nooit hierdie een uit te werk myself. :)

Ek het nie kyk na die funksie prototipe behoorlik. Dit blyk in die funksie "uitspraak" (hieronder uiteengesit),

int nfq_set_verdict(struct nfq_q_handle *qh,
    u_int32_t id,
    u_int32_t verdict,
    u_int32_t data_len,
    const unsigned char *buf     
)

Die laaste twee parameters vir die data te wees teruggekeer om die netwerk stapel. Voor die hand liggend in nawete, maar ek het dit gemis heeltemal as die print_pkt funksie nie die pakkie data as 'n parameter te neem, maar uittreksels dit uit die struct nfq_data.

Die sleutel is om die pakkie NF_ACCEPT en slaag die paslik gewysig pakkie terug na die kern.

Ander wenke

Net 'n wilde raaiskoot van grawe rondom die bron-kode: Probeer die verminkte loonvrag uitdruklik te voeg met behulp van nfnl_addattr_l(…, NFQA_PAYLOAD, …)

?
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top