WINPCAP EL MANUAL DEL USUARIO WINPCAP
Documentación WinPcap 4.1.2
autore! El equipo de WinPcap p"#ina principa$! http://www.winpcap.org
mó%u$o •
WinPcap e$ manua$ %e$ uuario WinPcap o %e&inicione o
&uncione e'porta%a
o
Sinta'i %e $a e'preione %e &i$tra%o
o
E$ uo %e WinPcap en u pro#rama
o
WinPcap tutoria$! una #u(a pao a pao para e$ uo %e WinPcap
La o)tención %e $a $ita %e %ipoiti*o La o)tención %e in&ormación a*an+a%a acerca %e $o %ipoiti*o inta$a%o
La apertura %e un a%apta%or , $a captura %e $o pa-uete
La captura %e $o pa-uete in $a %e*o$ución %e $$ama%a
i$trar e$ tr"&ico
Interpretación %e $o pa-uete
Mane/o %e arc0i*o %e *o$ca%o &uera %e $(nea
e$ en*(o %e pa-uete
La recopi$ación %e eta%(tica o)re e$ tr"&ico %e re%
•
interno WinPcap o
•
NP manua$ %e &uncionamiento interno %e$ contro$a%or
NP etructura , %e&inicione
&uncione NP
o
Pacet.%$$ Pa-uete %e API %e$ contro$a%or
o
Cómo compi$ar WinPcap
Captura remota o
o
o
Etructura , %e&inicione e'porta%a Funciones exportadas. Para una referencia de las funciones que soportan la captura remota, consulte la sección "Extensiones especficas de Windows" en la WinPcap &uncione e'porta%a sección.
Etructura interna , %e&inicione
Intro%ucción Este manual descri!e la interfa de programación # el código fuente de WinPcap. $e proporciona una descripción detallada de las funciones # estructuras exportados a los programadores, %unto con la documentación completa de las partes internas WinPcap. &arios tutoriales # e%emplos se proporcionan tam!i'n. Puede seguir los enlaces en la parte superior de esta p(gina o utilice el control de (r!ol a la iquierda para llegar a las secciones de inter's. Esta documentación se ha creado usando el sistema de documentación )ox#gen, que se pueden encontrar en http://www.dox#gen.org.
3u5 e WinPcap WinPcap es una !i!lioteca de código a!ierto para la captura de paquetes # an(lisis de redes para las plataformas Win*+. a ma#ora de las aplicaciones de redes acceden a la red a tra-'s de primiti-as del sistema operati-o ampliamente usados, tales como tomas. Es f(cil acceder a datos en la red con este enfoque #a que el sistema operati-o hace frente a los detalles de ni-el !a%o de manipulación de protocolo, reensam!la%e de paquetes, etc. # proporciona una interfa familiar que es similar a la utiliada para leer # escri!ir archi-os. 0 -eces, sin em!argo, el "camino f(cil" no es hasta la tarea, #a que algunas aplicaciones requieren acceso directo a los paquetes en la red. Es decir, que necesitan el acceso a los datos "en !ruto" en la red sin la interposición de procesamiento de protocolo por el sistema operati-o. El propósito de WinPcap es dar a este tipo de acceso a las aplicaciones Win*+1 que proporciona facilidades para:
•
•
capturar paquetes primas, tanto las destinadas a la m(quina donde se est( e%ecutando # los intercam!iados por otros anfitriones en medios compartidos filtrar los paquetes de acuerdo con las reglas especificadas por el usuario antes de en-iarlos a la aplicación
•
transmitir paquetes de primas a la red
•
recopilar información estadstica so!re el tr(fico de red
Este con%unto de capacidades se o!tiene por m edio de un controlador de dispositi-o, que se instala dentro de la porción de red de n2cleos de Win*+, adem(s de un par de ). 3odas estas caractersticas se exportan a tra-'s de una interfa de programación de gran alcance, f(cilmente explota!le por las aplicaciones # disponi!le en diferentes sistemas operati-os. El o!%eti-o principal de este manual es documentar esta interfa, con la a#uda de -arios e%emplos. $i usted est( interesado en comenar su exploración de inmediato se puede ir directamente al manual del usuario WinPcap .
3u5 c$ae %e pro#rama %e uti$i+ar WinPcap a interfa de programación de WinPcap puede ser utiliado por muchos tipos de herramientas de red para el an(lisis, resolución de pro !lemas, la seguridad # la -igilancia. En particular, las herramientas cl(sicas que dependen de WinPcap son:
•
analiadores de red # protocolo monitores de red
•
registradores de tr(fico
•
generadores de tr(fico
•
puentes a ni-el de usuario # routers
•
os sistemas de detección de intrusiones de red 45)$
•
esc(neres de red
•
herramientas de seguridad
•
WinPcap $o -ue no pue%e 0acer WinPcap reci!e # en-a los paquetes de forma independiente de los protocolos de acogida, como 36P75P. Esto significa que no es capa de !loquear, filtrar o manipular el tr(fico generado por otros programas en la misma m(quina: simplemente "huele" los paquetes que transitan en el ca!le. Por lo tanto, no pro porciona el soporte adecuado para aplicaciones como confo rmadores de tr(fico 8o$, programadores # los cortafuegos personales.
Propóito %e ete manua$ El propósito de este manual es proporcionar una manera completa # f(cil de na-egar por la documentación de la arquitectura WinPcap.$e encuentran dos secciones principales: el manual del usuario WinPcap # WinPcap 5nternos .
El primero de ellos puede ser utiliado por un programador que necesita explotar WinPcap desde una aplicación: contiene toda la inform ación acerca de las funciones # estructuras de datos exportados por la 0P5 de WinPcap, un manual que explica cómo escri!ir filtros de paquetes # una p(gina que explica cómo incluirlo en una aplicación. 9n tutorial con -arios e%emplos de código es siempre as1 que puede ser utiliado para aprender los conceptos !(sicos de la 0 P5 de WinPcap utiliando un enfoque paso a paso, sino que tam!i'n ofrece fragmentos de código que demuestran caractersticas a-anadas. a segunda sección est( dirigida a los desarrolladores # mantenedores WinPcap, o para las personas que tienen curiosidad acerca de cómo f unciona este sistema: se ofrece una descripción general de la arquitectura WinPcap # explica cómo funciona. 0dem(s, se documenta la estructura de controlador de dispositi-o completo, el código fuente, la interfa pacet.dll # la 0P5 de !a%o ni-el WinPcap.$i usted quiere entender lo que sucede dentro WinPcap o si necesita extenderlo, esta es la sección que se desea leer.
Documentación a%iciona$ Para adicional # actualiada la documentación, le sugerimos q ue nos fi%amos en http://www.winpcap.org/docs/ En particular, si usted est( interesado en la estructura # el funcionamiento interno de WinPcap, se recomienda leer los siguientes documentos: •
•
Ful-io ;isso, oris )egioanni, 9na 0rquitectura de 0lto ;endimiento 0n(lisis de ;edes , Actas de la 6 ª IEEE Simposio de Informática y Comunicaciones (ISCC 2001) ,
oris )egioanni, ?ario @aldi, Ful-io ;isso # Aianluca &arenni, perfiles # optimiación de aplicaciones de red7an(lisis !asado en software , Actas de la 15 ª IEEE Simposio de Aruitectura de Computadores y computaci!n de alto rendimiento (S"AC#$A% 200&), $ao Paulo, @rasil, de no-iem!re de de +==*
•
oris )egioanni, desarrollo de una arquitectura para la captura de paquetes # an(lisis de tr(fico de red , tesis de graduación, 9ni-ersidad Polit'cnica de 3urn 3urn, 5talia, maro de +===
6ermino$o#(a •
•
Para mantener la coherencia con la literatura, -amos a utiliar el t'rmino de pauetes a pesar de que el marco es m(s preciso, #a que el proceso de captura se realia en la capa de enlace de datos # la ca!ecera de enlace de d atos se inclu#e en los datos capturados. El t'rmino WinBx se utiliar( en este documento para indicar la familia de sistemas operati-os ?icrosoft compone de Windows BC # sus deri-ados, es decir, Windows BD # Windows ?E. El t'rmino Win43x indicar( los sistemas operati-os edificados so!re el n2cleo 43, a partir de Windows 43 # que inclu#e Windows +===, Windows P, Windows $er-er +==* # as sucesi-amente.
Nota 4uestros esfueros de desarrollo # documentación se centran principalmente en el Windows 43 / -ersión +=== / P / +==* / &ista / +==D / WinG / +==D;+ de WinPcap. Esta elección se !asa en el hecho de que la ma#ora de los usuarios WinPcap funciona en sistemas de 43x, sino tam!i'n porque la tecnologa Bx ha sido a!andonado por ?icrosoft. Por otra parte, se supone que una persona que necesita utiliar un P6 para una tarea a-anada como el an(lisis de redes se instalar( un sistema operati-o a-anado en la m(quina.Por esta raón, la documentación se
referir( a los conductores # las 0P5 Win43x. -ersiones de WinBx son mu# similares en el concepto pero a -eces difieren en la aplicación #, en ocasiones, la -ersión de Windows Bx de la 0P5 carece de algunas de las funciones m(s a-anadas. Este manual descri!e la 0P5 completa # le indicar( cuando una función sólo est( presente en Windows 43x.
documentación. )erechos de autor c +==+7+==C 9ni-ersidad Polit'cnica de 3urn. )erechos de autor c +==C7+==B 606E 3echnologies. 3odos los derechos reser-ados.
mó%u$o 0qu est( una lista de todos los módulos: WinPcap tutoria$! una #u(a pao a pao para e$ uo %e WinPcap La o)tención %e $a $ita %e %ipoiti*o • •
•
La o)tención %e in&ormación a*an+a%a acerca %e $o %ipoiti*o inta$a%o
•
La apertura %e un a%apta%or , $a captura %e $o pa-uete
•
La captura %e $o pa-uete in $a %e*o$ución %e $$ama%a
•
i$trar e$ tr"&ico
•
Interpretación %e $o pa-uete
•
Mane/o %e arc0i*o %e *o$ca%o &uera %e $(nea
•
e$ en*(o %e pa-uete
•
La recopi$ación %e eta%(tica o)re e$ tr"&ico %e re%
•
interno WinPcap o
•
NP manua$ %e &uncionamiento interno %e$ contro$a%or
NP %e E 7 S có%i#o %e contro$
NP etructura , %e&inicione
&uncione NP
NP /uto a tiempo $a %e&inicione %e$ compi$a%or
o
Cómo compi$ar WinPcap
o
Pacet.%$$ Pa-uete %e API %e$ contro$a%or
e$ manua$ %e$ uuario WinPcap o
%e&inicione
•
o
&uncione e'porta%a
o
Sinta'i %e $a e'preione %e &i$tra%o
o
E$ uo %e WinPcap en u pro#rama
Captura remota o
Etructura , %e&inicione e'porta%a
La ca%ena re$aciona%a con $a nue*a inta'i &uente
I%enti&ica%ore re$aciona%o con $a nue*a inta'i &uente
8an%era %e&ini%o en $a &unción pcap9open :;
M5to%o %e muetreo %e&ini%o en e$ pcap9etamp$in# &unción :; m5to%o %e autenticación oporta%o por e$ protoco$o RPCAP
o
uncione e'porta%a
o
uncione interna
o
Etructura interna , %e&inicione •
•
Etructura %e %ato
0qu est(n las estructuras de datos con una !re-e descripción:
99CPU9Pri*ate9Data
tamp!n 'ernel de cada C$
9DE
etensi!n dispositi*o de puerto
9IN6ERNAL9REUES6
Almacena una solicitud de +I%
9OPEN9INS6ANCE
Contiene el estado de una instancia de e,ecuci!n del controlador -$.
9PAC>E69OID9DA6A
Estructura ue contiene una petici!n de +I%
9PAC>E69RESER
Contiene un pauete -%IS
acti*e9par acti*e0ot
/antiene una lista de todas las coneiones aiertas en el modo acti*o
)inar,9tream
na corriente de 6 c!di3o inario
%aemon9$par
Estructura ue mantiene los parámetros ue necesita el daemon_serviceloop () la funci!n
?I698P9i$ter
Estructura de la descripci!n de un pro3rama de filtrado 6 creado por la fluctuaci!n de fase
pacet9&i$e90ea%er
Encae4ado de un arci*o de *olcado de lipcap
Pacet@ea%er
Estructura antepone a cada pauete en el 3rupo de fer del ncleo
pcap9a%%r
7epresentaci!n de una direcci!n de interfa48 utili4ado por pcap_findalldevs ()
pcap9&i$e90ea%er
Encae4ado de un arci*o de *olcado de lipcap
pcap9i&
Elemento de una lista de interfaces8 utili4adas por pcap_findalldevs ()
pcap9pt0%r
Caecera de un pauete en el arci*o de *olcado
pcap9rmtaut0
Esta estructura mantiene la informaci!n necesaria para auteticate el usuario en una máuina remota
pcap9amp
Esta estructura define la informaci!n relacionada con el muestreo
pcap9en%9-ueue
na cola de pauetes en ruto8 ue será en*iado a la red con pcap_sendqueue_transmit ()
pcap9tat
Estructura ue mantiene los *alores estad9sticos en una interfa4
rpcap9aut0
Estructura ue mantiene los datos necesarios para la autenticaci!n en el ser*idor remoto
rpcap9&i$ter
Encae4ado 3eneral ue se utili4a para la pcap_setfilter () de comandos: mantiene s!lo el nmero de instrucciones "$.
rpcap9&i$ter)p&9inn
Estructura ue mantiene una nica instuction "$.: se repite ;ninsn; momentos de acuerdo con el encae4ado ;; rpcap
rpcap9&in%a$$%e*9i&
.ormato del mensa,e para el comando (findallde*s) %escripci!n de la interfa4
rpcap9&in%a$$%e*9i&a%%r
.ormato del mensa,e para la direcci!n de lista (findallde*s de comandos)
rpcap90ea%er
caecera comn para todos los mensa,es 7$CA$
rpcap9openrep$,
.ormato del mensa,e de respuesta de la aertura de conei!n (orden de apertura)
rpcap9pt0%r
.ormato de la caecera ue encapsula los pauetes capturados cuando se transmite en la red
rpcap9amp$in#
Estructura ue se necesita para estalecer los parámetros de muestreo
rpcap9tartcaprep$,
.ormato del mensa,e de respuesta ue se dedica a iniciar una captura remota (startcap respuesta de comandos)
rpcap9tartcapre-
.ormato del mensa,e ue inicia una captura remota (comando startcap)
rpcap9tat
Estructura ue mantiene las estad9sticas sore el nmero de pauetes capturados8 ca9do8 etc=
&9pt0%r
Encae4ado asociado a un pauete en el fer del conductor8 cuando >ste se encuentra en modo de descar3a= Similar a la estructura pf<dr8 pero más simple
un
•
0ceptado: 99CPU9Pri*ate9Data acti-eclose: %aemon9$par
•
0dapter@inding$tatus: 9OPEN9INS6ANCE
•
0dapter
•
0dapter
•
0dapter
•
0dapter4ame: 9DE
•
addr: rpcap9&in%a$$%e*9i&a%%r , pcap9a%%r
•
)irección: acti*e9par
•
direcciones: pcap9i&
•
aiHfamil#: acti*e9par
•
8
•
!pfHpc: )inar,9tream !pfprogram: 9OPEN9INS6ANCE
•
@;I0)0));: rpcap9&in%a$$%e*9i&a%%r , pcap9a%%r
•
•
!sHcapt: pcap9tat
•
@uffer: 99CPU9Pri*ate9Data
•
tampón: pcap9en%9-ueue
•
@ufferoc: 99CPU9Pri*ate9Data
•
@uffer?dl: 9OPEN9INS6ANCE
•
@9F$5JE: rpcap9tartcaprep$,
C
•
6: 99CPU9Pri*ate9Data 6aplen: &9pt0%r , rpcap9pt0%r , pcap9pt0%r
•
6losePending: 9OPEN9INS6ANCE
•
6ódigo: rpcap9&i$ter)p&9inn
•
6ountersoc: 9OPEN9INS6ANCE
•
6pu: 9PAC>E69RESER
•
6pu)ata: 9OPEN9INS6ANCE
•
curHip: )inar,9tream
•
D
•
)atos: 9PAC>E69OID9DA6A desclen: rpcap9&in%a$$%e*9i&
•
)escripción: pcap9i&
•
)e-iceExtension: 9OPEN9INS6ANCE
•
Eliminado: 99CPU9Pri*ate9Data
•
dstaddr: pcap9a%%r , rpcap9&in%a$$%e*9i&a%%r
•
dumm#: rpcap9&in%a$$%e*9i& , rpcap9tartcaprep$, , rpcap9&i$ter , rpcap9aut0
•
dumm#>: rpcap9amp$in#
•
dumm#+: rpcap9amp$in#
•
)umpE-ent: 9OPEN9INS6ANCE
•
)umpFile
•
)umpFile4ame: 9OPEN9INS6ANCE
•
•
)umpFileI!%ect: 9OPEN9INS6ANCE
•
)umpimit;eached: 9OPEN9INS6ANCE
•
)umpIffset: 9OPEN9INS6ANCE
•
)ump3hread
•
)ump3hreadI!%ect: 9OPEN9INS6ANCE
E •
Export$tring: 9DE
•
Filter3#pe: rpcap9&i$ter !anderas: pcap9i& , rpcap9tartcapre- , rpcap9&in%a$$%e*9i&
•
i!re: 99CPU9Pri*ate9Data
•
Free@uf0fterWrite: 9PAC>E69RESER
•
Función: ?I698P9i$ter
•
@ • •
ca!ecera: Pacet@ea%er anfitrionas: acti*e0ot
,o
•
i!uf: )inar,9tream ifdrop: rpcap9tat
•
ifrec-: rpcap9tat
•
5nternal;equest6ompletedE-ent: 9IN6ERNAL9REUES6
•
5o$tatus: 9OPEN9INS6ANCE
•
5;P: 9PAC>E69RESER
•
is0cti-e: %aemon9$par
•
? • •
>
KF: rpcap9&i$ter)p&9inn K3: rpcap9&i$ter)p&9inn
• •
: rpcap9&i$ter)p&9inn rnldrop: rpcap9tat
L
•
len: &9pt0%r , pcap9pt0%r , rpcap9pt0%r , pcap9en%9-ueue ongitud: 9PAC>E69OID9DA6A
•
tipoenlace: pcap9&i$e90ea%er , rpcap9openrep$, , pacet9&i$e90ea%er
•
istElement: 9PAC>E69RESER
•
M
•
?achineoc: 9OPEN9INS6ANCE magia: pacet9&i$e90ea%er , pcap9&i$e90ea%er
•
?ax)ump@#tes: 9OPEN9INS6ANCE
•
?ax)umpPacs: 9OPEN9INS6ANCE
•
?axFrame$ie: 9OPEN9INS6ANCE
•
maxlen: pcap9en%9-ueue
•
?edio: 9OPEN9INS6ANCE
•
mem: ?I698P9i$ter
•
?'todo: rpcap9amp$in# , pcap9amp
•
?in3o6op#: 9OPEN9INS6ANCE
•
?odo: 9OPEN9INS6ANCE
•
?ultipleHWriteH6ounter: 9OPEN9INS6ANCE
•
N
•
naddr: rpcap9&in%a$$%e*9i& 4om!re: pcap9i&
•
nameen: rpcap9&in%a$$%e*9i&
•
4!#tes: 9OPEN9INS6ANCE
•
4disIpen6lose6ompleteE-ent: 9OPEN9INS6ANCE
•
4dis;equestE-ent: 9OPEN9INS6ANCE
•
4disWrite6ompleteE-ent: 9OPEN9INS6ANCE
•
m(scara de red: pcap9a%%r , rpcap9&in%a$$%e*9i&a%%r
•
•
4EWP: 99CPU9Pri*ate9Data
•
siguientes: pcap9i& , pcap9a%%r , acti*e0ot
•
nitems: rpcap9&i$ter
•
4pacets: 9OPEN9INS6ANCE
•
npt: rpcap9pt0%r
•
null0uth0llowed: %aemon9$par
•
4umPending5rps: 9OPEN9INS6ANCE
•
4writes: 9OPEN9INS6ANCE
O
•
Iid: 9PAC>E69OID9DA6A Ipen6lose$tatus: 9OPEN9INS6ANCE
•
Ipen5n9seoc: 9OPEN9INS6ANCE
•
pa#
•
P: 99CPU9Pri*ate9Data PacetPool: 9OPEN9INS6ANCE
•
contraseLa: pcap9rmtaut0
•
plen: rpcap90ea%er
•
p?dl: 9PAC>E69RESER
•
portuarias: acti*e9par
•
portdata: rpcap9tartcaprep$, , rpcap9tartcapre-
•
psHdrop: pcap9tat
•
psHifdrop: pcap9tat
•
psHrec-: pcap9tat
•
R
•
readHtimeout: rpcap9tartcapre;eader$4: 9OPEN9INS6ANCE
•
;eadE-ent: 9OPEN9INS6ANCE
•
;eci!ido: 99CPU9Pri*ate9Data
•
•
refs: )inar,9tream
•
$olicitud: 9IN6ERNAL9REUES6
•
;equestist: 9OPEN9INS6ANCE
•
$olicitudes: 9OPEN9INS6ANCE
•
;equest$pinoc: 9OPEN9INS6ANCE
•
;equest$tatus: 9IN6ERNAL9REUES6
•
;eset5rpist: 9OPEN9INS6ANCE
S
•
sigfigs: pacet9&i$e90ea%er , pcap9&i$e90ea%er 3amaLo: 9OPEN9INS6ANCE
•
$ip$entPacets: 9OPEN9INS6ANCE
•
slen>: rpcap9aut0
•
slen+: rpcap9aut0
•
$4: Pacet@ea%er
•
snaplen: pacet9&i$e90ea%er , pcap9&i$e90ea%er , rpcap9tartcapre-
•
socctrl: acti*e0ot , %aemon9$par
•
s-rcapt: rpcap9tat
•
6
•
thisone: pacet9&i$e90ea%er , pcap9&i$e90ea%er 3iempo de espera: 9OPEN9INS6ANCE
•
timestampHsec: rpcap9pt0%r
•
timestampHusec: rpcap9pt0%r
•
3ransfer?dl>: 99CPU9Pri*ate9Data
•
3ransfer?dl+: 99CPU9Pri*ate9Data
•
3ransmitPendingPacets: 9OPEN9INS6ANCE
•
3$: &9pt0%r , pcap9pt0%r
•
3ipo: rpcap9aut0 , pcap9rmtaut0 , rpcap90ea%er
•
toff: rpcap9openrep$,
•
U •
nom!re de usuario: pcap9rmtaut0
<
•
&alor: rpcap90ea%er , rpcap9amp$in# , pcap9amp &er: rpcap90ea%er
•
-ersionHma%or: pacet9&i$e90ea%er , pcap9&i$e90ea%er
•
-ersionHminor: pcap9&i$e90ea%er , pacet9&i$e90ea%er
•
W
•
WriteE-ent: 9OPEN9INS6ANCE Write5nProgress: 9OPEN9INS6ANCE
•
Writeoc: 9OPEN9INS6ANCE
•
Writer$4: 9OPEN9INS6ANCE
•
• •
Lita %e arc0i*o
0qu est( una lista de todos los archi-os con una !re-e descripción:
%aemon.0 co%eB &i$econ&.0 co%eB ioct$.0 co%eB /itter.0 co%eB Pacet.0 co%eB pcap remote.0 co%eB aum 7 pcap.0 co%eB &unc 7 pcap.0 co%eB remota e't.0 co%eB rpca p%.0 co%eB uti$.0 co%eB Win2E'tenion.0 co%eB in2*c.0 co%eB pcap9remote.0tm co%eB
0qu est( una lista de todas las funciones, -aria!les, define, enumeraciones, # t#pedefs con enlaces a los archi-os que pertenecen a:
un
•
0)0P3E;H@54)54AH$3039$: Pacet.0 0)0P3E;H@I94): Pacet.0
•
0)0P3E;H94@54)54A: Pacet.0
•
•
0)0P3E;H94@I94): Pacet.0
•
0))HE0i: /itter.0
•
0))i!: /itter.0
•
0ddid: /itter.0
•
0))rd: /itter.0
•
05;P60PH<04)EHHE0E=CFCH=>G>HBCB+H@*6+H6>BE6+M0)*HH)EF54E)H: Win2 E'tenion.0
•
0: /itter.0
•
04)i!: /itter.0
•
04)id: /itter.0
•
04)rd: /itter.0
•
0: /itter.0