Você está na página 1de 31

Resolucin Softwarrior v 2.

0
Team : Absinteck
Miembros:
Serrano Quispe Bengie Nick
Choquenaira Ttito Jhon
Hermoza Salcedo Fahed

Resolucin Softwarrior v 2.0


Pensando en Binario
El enunciado del primer Problema dice lo siguiente:

Vamos por algo para calentar Enviar por el valor respuesta por el mtodo GET
1000101011011001000111000100010
pero claro est en binario transfrmalo XDD
1. Aca tenemos el mtodo get con el cual obtenemos la pagina
http://184.82.220.26/softwarrior2012/1.php del cual vamos a extraer el cdigo binario.

2. En esta parte del cdigo llamamos al mtodo get, luego al tener la pgina filtramos solo el
cdigo binario, y lo convertimos en un nmero decimal.

3. Este mdulo enva mediante get el resultado en decimal y recibe la respuesta la cual
devuelve.

4. Aca llamamos al mtodo get2 y escribimos en pantalla la respuesta.

5. Aca tenemos una captura de pantalla al ejecutar el codigo

Operador Matemtico

El mtodo Get implementado en python para recuperar la pagina del ejercicio


urllib.urlencode() : se utiliza para codificar los datos que enviaras por POST a una web
{}: representa un diccionario vaco en python
entonces en params estamos almacenando
Importante:
Las Cookies son un mecanismo por el cul se almacenan datos en el browser remoto y as rastrear o
identificar a usuarios que vuelven.
En headers (cabecera) enviamos nuestro cookie
establecemos un conexion al host con : httplib.HTTPConnection("184.82.220.26:80") en el puerto 80
enviamos las cabeceras con: conn.request("GET", "/softwarrior2012/2.php", params, headers)
Para obtener la respuesta debemos de obtener el objeto HTTPResponse llamando al mtodo
getresponse() de la conexin que contiene toda la informacin referente a la respuesta. Desde este
objeto podremos obtener el string de la respuesta de la peticin.
Guardamos la pagina en data haciendo response.read()
Hasta este punto ya tenemos descargado la pagina
entonces si lo corremos en una terminal de Linux o Windows obtenemos esto:

el inicio de la expresion matemtica es en la posicion 138


el final es variable entonces tendremos k encontrar el final, y casualmente la posicion final esta justo
antes del primer < despues de la posicion final.

Codigo para recuperar la expresion matemtica

en expr esta guardada la expresion: 55+58-36*1+82*18-90+38*79*36-34


ahora analiza con algun algoritmo para obtener el valor de la expresion

con el metodo print se imrprime valores en terminal en python


ahroa vamos a imprimir lo que la pagina nos devuelva cuando le enviemos nuestra respuesta
por el metodo GET
Nuestro Resultado de la respuesta es:

Ejercicio 2 resuelto

QUE TAN BUENO ERES PIDIENDO


Solo piensa que tienes q pedir un dato y yo te lo dar

Dado como pista la palabra RESPUESTA le mandamos con el mtodo GET


respuesta= :
http://184.82.220.26/softwarrior2012/3.php?respuesta=

Obtenemos el siguiente mensaje:

Nos dice que la respuesta ya esta enviada pero no podemos ver nada aun.
Pero tenemos el Live HTTP Headers que tiene una ventaja de permitirnos
ver las cabeceras HTTP de una pgina en tiempo real. Ejecutamos el mismo
procedimiento anterior y obtenemos:

DECODE CONCAT
Decodificar concatenar no me acuerdo el orden XDD

Bueno en este reto nos vamos a ver el cdigo fuente de la pgina:

El mensaje que obtenemos es:


MjAwNDI=
En criptografa un cifrado , es un procedimiento que utilizando un algoritmo con
cierta clave transforma un mensaje, sin atender a su estructura lingstica o
significado, de tal forma que sea incomprensible o, al menos, difcil de
comprender, a toda persona que no tenga la clave secreta del algoritmo que se
usa para poder descifrarlo.
Bueno con la experiencia ganada en criptografa este mensaje tiene la
estructura de cifrado base64...XDD.
El Cdigo en Python:
El mtodo GET implementado en Python obtenemos el MENSAJE de la
pgina:sofwarrior2012/4.php en data.

Con el mtodo post enviamos la RESPUESTA al servidor.

En pagina guarda el mtodo get().


En el cdigo concatena los caracteres del mensaje dndole la ubicacin de
cada caracter.
Utilizando la librera import base64 que nos ofrece el Python, en la lnea 26
deco descifra el mensaje con el parmetro cdigo.
Escribimos en pantalla el mtodo POST2(datos)

Ejecutando el cdigo de Python, obtenemos el siguiente mensaje:

Coordenadas
El enunciado del problema dice lo siguiente:

1. Con este modulo obtenemos la imagen a la cual analizaremos.

2. Llamamos al mtodo GetImage y almacenamos la imagen en el Disco Duro para luego


analizarla

3. Abrimos la imagen, creamos dos bucles para recorrer en la imagen, se utiliza la librera
Image la cual en Windows no funciona, por los cual para este ejercicio usamos Linux, la
imagen es como una Matriz bidimensional de ternas, en las cuales cada dimensin
representa un pixel y dentro de cada dimensin hay 3 valores que vendran a ser el R G B,
se recorre la matriz de la esquina izquierda inferior, con este mdulo obtenemos tanto las
coordenadas de la circunferencia en el eje x, eje y.

4. Aca tenemos el modulo con el cual vamos a enviar la respuesta, recibir la clave mediante el
mtodo un mtodo POST.

5. Ac aumentamos 4 pixeles en el eje x para estar en el medio del crculo, y 25 pixeles para
estar en el centro del crculo, la cual es la respuesta que enviaremos.

6. Aca tenemos una captura de pantalla al ejecutar el cdigo(Como dije anteriormente la


librera Image tiene dificultad al ejecutarse en Windows 8 por lo que usamos Linux para la
ejecucin de este reto ).

Android
El enunciado del problema dice lo siguiente:

bueno para este reto tendras q usar tu android XDDD


aqui la url de apk Descargar
Suerte
Descargamos la aplicacin .apk la cual lo ejecutamos en un celular con Android como vemos en
la siguiente imagen.

Como vemos tenemos un cdigo inicial el cual no te da sin internet del cual concluimos que
ese cdigo se recibe del internet.
1. Para este reto como nos dan el archivo .apk para poder ver su cdigo tenemos que
decompilarlo para ello tenemos que pasarlo a .jar para lo cual descargamos Dex2jar
del siguiente enlace: https://skydrive.live.com/redir?resid=CAB8DDA9C3C38B38!288
2. Despus de descomprimir el archivo Dex2jar en tu pc, copiamos en la carpeta donde
est en Dex2jar el .apk que deseamos transformar a .jar.
3. Abrimos la consola de Windows, nos dirigimos a la carpeta del dex2jar, una vez dentro
de la carpeta dex2jar escribimos lo siguiente:
dex2jar soft.apk
4. En nuestro caso le cambiamos el nombre de la aplicacin a soft.apk.
5. Luego de realizar estos pasos tenemos en la carpeta el archivo .jar

6. Para poder ver el cdigo del .jar descargamos el programa Java Decompiler del
siguiente Link: https://skydrive.live.com/redir?resid=CAB8DDA9C3C38B38!290
7. Ya en el Java Decompiler mirando el cdigo nos damos cuenta de que la aplicacin
Android recibe un cdigo inicial el cual sirve para generar el cdigo de validacin en el
mdulo Keyvalidate de la clase SOFTPEDIA.

8. Ese modulo lo pasamos a cualquier IDE y lo ejecutamos pasndole como valor el


cdigo inicial dndonos el cdigo de validacin.
9. Cuando colocamos el cdigo de validacin correcto nos manda el siguiente mensaje:
CorrectoAhora usa socket para sacar la respuesta si entendiste el cdigo lo hars
rpido
10. Volvemos al cdigo de Java Decompiler donde nos damos cuenta que el cdigo lo
obtiene de la siguiente direccin web : http://softwarriorv2.j4sit.com/nro6.php y es
ah donde debemos de mandar la clave de validacin para que nos de la clave para
este reto.
11. En este mdulo mediante un mtodo POST obtenemos el cdigo inicial.

12. Nos damos cuenta por deduccin que la clave de validacin es la sumatoria de los
cdigos ascci de los dgitos de cdigo inicial para lo cual creamos un mdulo que nos
d la clave de validacin.

13. Con el siguiente cdigo llamamos al mtodo POST y obtenemos la clave.

14. Ac una toma a la ejecucin del programa

Problema:

Analizando el cdigo fuente de la pgina

Mtodo de envo: Post


Pagina de la que se recuperaran los datos : /nro8.php de la carpeta actual
Metodo de codificacin de los datos que se enviaran: JSON
entonces recuperamos los datos desde python:

diccionario={'peticion':'datos'}
pagina=POST(diccionario)

recuperamos los datos de la pagina

Recuperamos el nombre, apellido y dni en python

Codificamos el diccionario a JSON

Enviamos los datos al formulario

y luego mostrar la respuesta a nuestra consulta

Pregunta Resuelta

VALIDACION
Jeje vamos valida noma lo que te pido

Descargamos el archivo Generador.


Analizando el archivo con RDG Packer Detector (detector de packers,
Cryptors ,Compiladores, Packers Scrambler, Joiners, Installers) detecta en que
lenguaje de programacin ha sido programado el ejecutable .

El ejecutable est escrito en Basic.NETXDD, tambin nos dice que esta


Ofuscado Heuristic.

Luego sabiendo este dato importante lo analizamos con .NET REFLECTOR.


Net Reflector es una herramienta que explora las clases, mtodos y
propiedades, pudiendo analizar su cdigo intermedio (MSIL). Descompila y
genera el cdigo fuente original en uno de los siguientes lenguajes:
IL.
C#.
Visual Basic.
Delphi.
MC++.
Chrome.
El formato en C# del Generador es el siguiente:

Analizando el cdigo vemos que muestra el mtodo GenerarMD5(algoritmo de


reduccin criptogrfico de 128 bits ampliamente usado) pasando como
parmetros la suma del ao, mes, da, horas, minuto, segundo(actual). La
cuestin es que estos datos son los del servidor.XDD.
El Cdigo en Python:
El mtodo GeneradorMD5, tomando como parmetros una cadena y
importando librera MD5, le pasa el algoritmo de encriptacin MD5 y lo retorna
en texto.

El mtodo GETDATE descarga la pgina: http://softwarrior2012/9.php en date.

El mtodo POST saca de la pgina http://softwarrior2012/9.php los minutos y


segundos del servidor. En la lnea 9,2045 representa la suma del ao, mes,
da(Manualmentejejejepara optimizar el tiempo) los cual el tiempo en este
servidor est en hora GMT, debemos de tener cuenta que el tiempo del
servidor no es exacto, sincronizando el tiempo tiene un error de 3 putos
segundosXDD, en el cdigo obtenemos el mensaje generado con el mtodo
GeneradorMD5 y lo enviamos al servidor por POST.

Lo nico que hacemos en este pedazo de cdigo es imprimir en pantalla el


mtodo POST:

Ejecutando el cdigo Python obtenemos el siguiente mensaje:

Tu o yo??

Entendiendo la pregunta:
Tu o Yo? :
quien a quien hay q
averiguar para llegar a la conclusin:

entendiendo la pista:
190.223.116.116 :

Se trata de dos entes


conversacion

Se trata de la ip publica de la LAN de nuestra sala de


trabajo.

Hasta este punto podiamos concluir una conversacion entre el server y el cliente.
Si le damos click a conectar:

podemos concluir de k el server kiere establecer conexion con nosotros mediante el puerto 1337
de tal forma k el server se comporte como cliente y nosotros como servidor.

Construir Servidor en Python

Lo primero que tenemos que hacer es crear un objeto socket para el servidor
Tenemos ahora que indicar en qu puerto se va a mantener a la escucha nuestro servidor utilizando el
mtodo bind. El host se deja vaco, indicando al mtodo que puede utilizar cualquier nombre que est
disponible.
Por ltimo utilizamos listen para hacer que el socket acepte conexiones y accept para comenzar a
escuchar. listen requiere de un parmetro que indica el nmero de conexiones mximas que
queremos aceptar; evidentemente, este valor debe ser al menos 1.
accept se mantiene a la espera de conexiones entrantes, bloqueando la ejecucin hasta que llega un
mensaje.
Cuando llega un mensaje, accept desbloquea la ejecucin, devolviendo un objeto socket que
representa la conexin del cliente y una tupla que contiene el host y puerto de dicha conexin.
Una vez lograda la conexion con el cliente(Servidor) realizaremos una conersacion, mostraremos la
salida de pantalla para mayor ilustracion.

Corriendo el Script
El script inicia nuestro servidor y espera al
Cliente (Servidor) para iniciar la
conversacion tipo chat.

Se logro la conexion y veremos la conversacion

Tiempo que demoro en competencia la solucion de este ejercicio (1pm-2am) 13 horas

Você também pode gostar