Documente Academic
Documente Profesional
Documente Cultură
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)
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:
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
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.
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:
Ves que fcil? Ahora vamos a investigar un poco ms: Vuelve a enviar el paquete pero sta vez
ponlo en 5 (mira la foto):
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
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.
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:
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...