Sunteți pe pagina 1din 16

TEORA Y EXPLICACIN DE LAS

PARTES
Abrimos el WPE, estaris en la ventana principal, a continuacin os dejo un esquema y os
explicar las partes importantes. Por favor, anotad los nombres de los botones ya que me
referir a ellos durante todo el tutorial:

1) Target Program: Nos permite seleccionar el proceso (cliente) que queremos monitorizar.
2) Trace Controls: Nos permite iniciar, pausar y detener la captura (sniffer) de paquetes. Abajo
en los contadores sale el nmero de paquetes capturados
3) Action Console: Nos permite crear filtros y enviar paquetes modificados.
A continuacin os muestro una ventana con 4 paquetes capturados. An no he explicado como
se captura, pero primero quiero que veis que datos nos muestra y que significa cada cosa:

1)
2)
3)
4)
5)
6)

Contador: Muestra el nmero de paquetes capturados en una sesin


Paquetes: Indicador numrico de los paquetes recibidos
Source / Destination: Aparece la IP y puerto del cliente y del servidor
Tamao: Indica el tamao del paquete (nmero de offsets)
Tipo de paquete: Puede ser Send o Recv. Nos indica si es un paquete de entrada o salida
Datos: Nos muestra en HEX y ASCII los datos del paquete.

A modo de resumen, en la imagen de ejemplo se ven 4 paquetes capturados, 2 de Envo (send)


y 2 de respuesta (Recv). Fcil, no? Ahora os ensear que pinta tiene el editor de paquetes
(filtros), no os asustis, es ms sencillo de lo que parece:

1) Datos el filtro: Indicamos el patrn de offsets que buscamos y los offsets que modificamos
2) Tipo de filtro: En el ejemplo; Normal
ste tipo de filtro (normal) no me gusta usarlo, a continuacin os enseo el avanzado:

1) Datos el filtro: Indicamos el patrn de offsets que buscamos y los offsets que modificamos
2) Filtrar en: Indicamos que tipo de paquetes sern afectados por ste filtro (en el ejemplo; los
de tipo Recv
3) Tipo de modificacin: Indicamos si modificaremos todo el paquete o desde el offset
encontrado
Bien, hasta aqu ya conocis y podis identificar las principales partes del programa, ahora
vamos a practicar con un ejemplo, para ello ejecutamos el CLIENTE y SERVIDOR que hay en la
carpeta (los he programado yo). Bsicamente pretende ser un videojuego muy sencillo que
permite abrir cofres y comprar objetos (items), aqu os dejo la ventana del CLIENTE y
del SERVIDOR:

EMPEZAMOS CON EL TUTORIAL


PRACTICO
CAPTURAR PAQUETES
Ejecutad el WPE, el CLIENTE y el SERVIDOR, seguid los siguientes pasos:
- Pulsar START SERVER en la ventana SERVIDOR
- Pulsar CONECTAR en la ventana CLIENTE

Si lo habis hecho bien, os aparecern los siguientes mensajes:

Bien, el ejemplo que he programado es sencillo. El CLIENTE se conecta al SERVIDOR y enva


una serie de paquetes, el SERVIDOR los comprueba y devuelve una respuesta, as de sencillo.
En la ventana del CLIENTE, pulsa el botn abrir cofre y comprar item:

Podrs observar como el cliente enva la peticin de abrir un cofre y el servidor la procesa
(genera entre 1 y 5 monedas) y las enva al cliente.
En el caso de comprar item... tenemos 500 monedas y el item cuesta 2300, as que el

servidor nos deniega la compra


Bien, ya tenemos nuestro juego ejecutndose y ya sabes como funciona, ahora vamos a
empezar con lo bueno: capturar paquetes y engaar al servidor jeje. Pulsamos en WPE el
botn de TARGET y seleccionamos el proceso del CLIENTE:

Una vez hecho sto, pulsamos el botn de PLAY del TRACE CONTROL, as iniciaremos la
captura de paquetes. Mientras est el botn de PLAY pulsado, WPE ir capturando todos los
paquetes que se enven y reciban.
Nos situamos en el CLIENTE y pulsamos 1 vez en abrir cofre y 1 vez en comprar item, debera
ocurrir lo siguiente:

Si lo has hecho bien, habrs capturado 4 paquetes (fjate en el contador de paquetes). Ahora
pulsa en el botn STOP para detener el sniffer y automticamente veremos la ventana de

paquetes capturados:

Bieeeeen!! acabas de capturar tus primeros 4 paquetes!! Tmate tu tiempo para ver que has
capturado, intenta entender el formato de los paquetes. Para ste tutorial lo he hecho MUY
sencillo. Si te fijas, se trata de una comunicacin entre el CLIENTE y el SERVIDOR; cuando has
pulsado en abrir cofre, el cliente ha mandado (send) un paquete cuyo mensaje
es OpenChest#1 y automticamente el servidor ha devuelto un paquete cuyo mensaje
es GetCoins#3 (en mi caso he obtenido 3, tu puedes obtener entre 1 y 5, en un nmero
random).
Se entiende? Creo que es bastante sencillo.

ENVIAR PAQUETES CAPTURADOS


Ahora que tenemos capturado el paquete que indica la accin de abrir un cofre, lo aadiremos
a WPE para poder enviarlo de forma abusiva jeje, hacemos lo siguiente:
Pulsamos botn derecho sobre el primer paquete (send) y seleccionamos Add to Send List:

Ahora vuelve a hacer click derecho y selecciona la ltima opcin Set Send List with this
socket ID:

ste paso es importante, ya que le estaremos indicando a WPE que utilice el mismo ID de
socket para mandar el paquete. Si lo hemos hecho bien, en nuestra Action Console aparecer
el paquete. Recuerda marcar la pestaa Send en la Action Console:

Marcamos el paquete tal y como se ve en la foto y pulsamos en el lpiz para editar el paquete:

sta ventana nos muestra el paquete, aparece el tamao (11) y el contenido en HEX y ASCII.
Pulsamos QUIT ya que no queremos modificar el paquete (solo os quera ensear como ver el
contenido de un paquete antes de ser enviado). Ahora indicaremos a WPE que enve ese
paquete como si lo estuviera haciendo el propio cliente de forma legtima.
Pulsamos el boton PLAY en la ACTION CONSOLE (el botn de abajo que hay lado del lpiz) y
aparece la siguiente ventana:

Debera estar configurada tal y como se ve en la foto, es decir:


- Enviar 1 vez
- Utilizar el socket abierto
- Open Socket ID: ste es el ID del socket, debera tener un nmero ya escrito.
Pulsamos PLAY en sta ventana para enviar nuestro paquete 1 vez, si lo hemos hecho bien el
cliente recibir las monedas como si hubiera abierto el cofre:

Ves que fcil? Ahora vamos a investigar un poco ms: Vuelve a enviar el paquete pero sta vez
ponlo en 5 (mira la foto):

Pulsa PLAY y observa que ocurre en el CLIENTE y en el SERVIDOR:

Puedes observar como WPE ha enviado 5 veces el paquete de abrir un cofre y el servidor nos ha
obsequiado con 5 respuestas (y sus respectivas monedas) jajaja
Ahora, si has sido lo suficientemente curioso... te habrs preguntado porque el paquete que
enva el cliente es OpenChest#1, no? Que pasara si cambio el ltimo nmero? Para ello pulsa
el lpiz para editar el paquete y cambia el ltimo offset:

Pon un nombre al paquete para que recuerdes que lo has modificado y envalo 1 sola vez,
observamos que ocurre:

CHAN!! Acabas de engaar al servidor haciendo creer que has abierto 5 cofres, el servidor

recibe OpenChest#5 y te enva 5 veces el paquete de obtener monedas. GENIAL!!


Bien, acabamos de llegar al final de la explicacin sobre como enviar paquetes, es muy sencillo.

FILTAR & MODIFICAR PAQUETES


Ahora os explicar como modificar los paquetes entrantes (recv), capturando los que cumplan
un filtro y modificar dichos paquetes antes de que el CLIENTE los reciba, volvemos a nuestra
captura de paquetes y nos fijamos en el primer paquete de tipo Recv:

Ese paquete es la respuesta que nos devuelve el SERVER cuando le enviamos el


comando OpenChest#1, es decir, lo podemos traducir de la siguiente forma:
CLIENTE dice OpenChest#1
SERVER responde GetCoins#0X (X puede ser cualquier nmero del 1 al 5)
No hay que ser un superdotado para descubrir que GetCoins es la funcin de dar monedas y los
nmero de detrs del # son la cantidad de monedas... pues vamos a modificarlo para que el
servidor nos devuelva SIEMPRE 99 monedas. Para ello seleccionamos el contenido
Hexadecimal del paquete tal y como se ve en la foto anterior y hacemos click derecho y
seleccionamos Copy.
Nos vamos a nuestra Action Console (pestaa Filters), seleccionamos el primer filtro y lo
editamos con el botn del lpiz:

- En la ventana del filtro, cambiamos el modo a ADVANCED


- En la parte superior, en los offsets de SEARCH hacemos click derecho y
seleccionamos PASTE para pegar los datos de nuestro paquete
- Hacemos lo mismo en los offsets de MODIFY (click derecho y PASTE)
En la foto veris que he cambiado los offsets 10 y 11. Ahora os explicar el motivo, de
momento modificarlo tambin (igual que la foto). Ponerle un nombre al filtro y seleccionar el
tipo Recv. Pulsamos Apply
Una vez hecho sto, marcamos el filtro y pulsamos el botn ON:

En ste estado, WPE capturar todos los paquetes de tipo Recv y los comparar con los offsets
que hemos puesto en SEARCH, es decir:
47 65 74 43 6F 69 6E 73 23 = GetCoins#
Si esa comparacin se cumple, modificar el paquete por los offsets de MODIFY:
47 65 74 43 6F 69 6E 73 23 39 39 = GetCoins#99
Pulsamos varias veces sobre el botn de abrir cofre en el CLIENTE y observamos que ocurre:

Como puedes observar, el servidor recibe nuestro OpenChest#1, el servidor devuelve unas
cuantas monedas (1, 2, 5, 3, etc...) pero en nuestro cliente obtenemos 99 monedas todo el
rato jejeje

Bien, as de sencillo es aplicar filtros. Solo tenemos que tener muy claro que offsets buscamos y
que offsets hay que modificar, luego WPE trabajar solo. Para desactivar el filtro hay que quitar
el botn ON.

ENVIAR PAQUETES MODIFICADOS


Ahora explicar como solventar el tema de comprar items. (Enviar un paquete modificado)
Ya has visto que el cliente enva BuyItem#500 y el servidor responde BuyDennied#0 (es decir,
que no nos permite comprar porque nos falta dinero), vamos a engaar al servidor, jeje.
Nos vamos a nuestra captura y seleccionamos el paquete de comprar BuyItem#500, hacemos
click derecho y lo enviamos a nuestro Send List:

Marcamos el nuevo paquete y lo editamos:

Vamos a cambiar el nmero 500 por el nmero 2800, vers que no lo puedes cambiar de
golpe. Primero tienes que aumentar el tamao a 12 y luego escribir el nuevo valor:

Guarda el paquete modificado y envalo 1 vez usando el botn PLAY (ya deberas saber
hacerlo), si lo has hecho bien obtendrs lo siguiente:

Ya tienes tu item gratis!!

RESUMEN FINAL
Bueno, por hoy me detengo ya. Espero que os animis con WPE ya que es un programa muy
divertido. sta teora se puede aplicar en juegos multiplayer actuales para dupear items,
recibir dinero/monedas/gold, hacer tradehacks y un sinfn de cosas ms. Se pued eutilizar para
juegos tipo Starbound, Diablo II o para juegos Flash de navegador como PokerStar o cualquier
juego tipo Ogame, etc...
La dificultad reside en que no hay una forma fija para capturar y modificar un
paquete. Cada juego utiliza su protocolo y su sintaxis. Lo complicado es capturar el paquete
deseado y saber modificarlo. Algunos paquetes estarn cifrados o con comprobaciones de CRC,
pero eso ya lo veremos ms adelante...

S-ar putea să vă placă și