Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - @XSStringManolo

#791
Por lo que tengo entendido esto ya no es posible desde hace bastante tiempo debido a que antes venía por defecto activado en windows la posibilidad de ejecutar autorunables. A partir de XP se desactivó por razones lógicas.

Por otro lado es software. Seguro que se puede seguir haciendo pero no de una manera tan trivial. Algún bug en windows o drivers, usbs con hardware específico que se detecten como otra cosa, o a saber. Igual alguien conoce algún método.
#792
Pides tareas que por el tiempo que llevas programando deberías resolver en 10 segundos. Intenta romperte un poco la cabeza.

Como hice para resolverlo. Busqué: Como calcular el año bisiesto. Implementé las condiciones de la forma más sencilla del primer resultado de google, ni la página web abrí. Probé varios años bisiestos y años no bisiestos para ver que todo funciona.

Código (javascript) [Seleccionar]
<html>
<script>
var res=0, año = parseInt(prompt("Pon el año"));

if (año % 4 == 0) {
  res=1;
  /* De momento es bisiesto */
  if (año % 100 == 0) {
  res=0;
  /* Ya no es bisiesto */
    if (año % 400 == 0) {
  /* A menos que se cumpla esta condición */
    res=1;
    }
   
  }

}

if (res) {
  alert("El año " + año + " es bisiesto.");
}

else {
  alert("El año " + año + " no es bisiesto.");
}
</script>
</html>


Como siempre te complicas la vida de una forma que no tiene ni medio sentido. Si quieres saber la fecha, se la pregutas a tu sistema y la guardas. Se la preguntas a un servicio online. Se la preguntas a varios clientes y la corroboras o se la pregutas a un señor en la calle... Pero rescribir la rueda una y otra ves para tareas tan triviales solo te lleva a meter bugs y bugs y más bugs. Solo falta que se la pidas a un cliente y te dumpe la base de datos por pensar que la hora no es parámetro peligroso :')
#793
Programación C/C++ / Re: necesito ayuda
9 Febrero 2020, 11:32 AM
Cita de: daost en  9 Febrero 2020, 06:38 AM
hola se me ocurrio crear un programa que basicamente me calculee una inversion en plazo fijo
pero tuve un problema durante la creacion si bien me funciona con solo 1 mes es decir 30 dias no logro ni tampoco se como puedo hacer para que el programa leea que poniendo 1 sea 30 y dos sea 60 ya que para hacer el plazo fijo necesito saber la cantidad de meses les dejo mi codigo para que vean como va :

#include<iostream>

using namespace std;

int main()
{
   int dinero=0;
   int unmes=0;
   float ganancia=0;
   float gananciatotal=0;
   
   cout<<"ingrese dinero a depositar: ";cin>>dinero; //ingreso dinero
   cout<<"ingrese cantidad de mes: ";cin>>unmes; // cantidad de mes dependiendo de que 1 sea= 30, 2=60, etc..
   
   ganancia = dinero * (0.33*30/365); //0.33 es la tasa anual de ganancia lo multiplico por 30 que seria 1 mes y lo divido por el año para saber la ganancia
   
   gananciatotal= ganancia+dinero; //sumo la ganancia con el dinero ingresado para que me de el total del dinero si hago la inversion
   
   cout<<"su ganancia es de:  "<<ganancia; cout<<"pesos";
   cout<<"\nsu dinero con interes seria de:  "<<gananciatotal; cout<<"pesos";
   
   return 0;
   
}

/* el problema como comente en el foro es que no logro poder poner lo de los meses osea que el programa por ahora
solo funciona con un mes, me faltaria los otros 11 meses, no estoy seguro pero creo que debo usar las condiciones si alguien me puede ayudar seria un golazo*/
A parte de la solución de Engel, tienes las funciones:

Código (cpp) [Seleccionar]
int calcularGanancia (dinero, meses)
{
return dinero * (0.33*meses*30/365);
}


Después dentro del main pasas el dinero y los meses en la llamada y la función te retorna la ganancia.

Código (cpp) [Seleccionar]
int main()
{
...
...
...
int gananciasPrimerTrimestre = calcularGanancia(dinero, 3);
int gananciasSegundoTrimestre = calcularGanancia(dinero, 6) - gananciasPrimerTrimestre;
int gananciasAnuales = calcularGanancia(dinero, 12);
...
...
...
}
#794
Como alguien empiece a subir malware al foro se queda el 90% de la gente infectada. xD
Dejar de decir chorradas de sacar los virus a mano, no te le renta ni al más profesional del mundo. Habría que hacer análisis muy complejos del virus, el tráfico y el sistema. ñ
Si alguien se ha tomado la molestia de meter 20 malwares, o un simple downloader y tu av te detecta 1 keylogger, que coño arreglas quitando un keylogger? Ni siquiera estais aplicando una metodología para hacerlo, estais siguiendo los pasos que dice la primera web que encontrais sobre el virus, que a lo mejor la hizo el propio creador del virus xD
#795
Chequea el Antivirus Hacker's Handbook es una muy buena intro al tema.

Hay otro que se llama disasembling malware o algo así que igual te interesa también.
#796
Análisis y Diseño de Malware / Re: eset
9 Febrero 2020, 10:44 AM
Necesitas un desintalador que debes quemar en un pendrive o ejecutar en modo seguro. Apagar el ordenador, enchufar el pendrive, cambiar el orden de arranque para iniciar el desinstalador y seguir los pasos. Leete bien las instrucciones porque necesitar hacer dump de un archivo para no quedarte sin internet.
https://support.eset.com/en/kb2289-uninstall-eset-manually-using-the-eset-uninstaller-tool

Por qué tanto rollo? Se supone que por seguridad, aunque tengo mis dudas. Si yo accedo a tu ordenador remotamente y tienes el ESET, yo voy a querer instalarte un programa que me permita controlar completamente el sistema y eset va a evitar que alguien sin conocimientos busque en google shell y te mande el primer archivo que encuentre y te infecte. Si se pudiese desinstalar fácilmente, yo podría desinstalártelo remotamente. Con esto que tienen montado, si te lo desinstalo me va a costar más y voy a quedarme sin internet porque el eset te borra un archivo de los controladores de red al ser desinstalado.

Lo que sucede en realidad es que los antivirus solo detectan virus conocidos. Si modifico el código del virus y te lo mando, el ESET no te lo detecta. Es decir, que tanta complicación en mi opinión es para que te de miedo desisntalarlo, no sepas, etc, y mientras están recopilando info tuya.

#797
Cita de: naidmen en  6 Febrero 2020, 23:55 PM
Bueno mi duda consiste en que veo y veo tutoriales pero solo enseñan hasta arboles binarios algunos pero yo siento que en realidad eso tan solo es lo más superficial de C/C++, por eso quisiera saber si existen tutoriales o vídeos o algún foro en donde te enseñen a programar para crear por ejemplo: librerías como el WinApi o SDL1.2/SDL2, quiero crear desde cero mi propia ventana y crear programas variados y todo eso, lo cual no puedo hacer si solo se utilizar vectores, matrices, punteros y demás pendejadas, necesito ir más allá y meterme con el manejo de la maquina o yo no se, estoy tan confundido que no encuentro información sobre lo que realmente quiero.
Windows Api no lo hizo una persona. Y menos una que no sabe exactamente que es una librería. Déjate de tutoriales y lee libros.

Si quieres crear un programa con interfaz gráfica y no una librería, entonces aprende OpenGL. Puede que te interese en un futuro desarrollar para más plataformas y no solo windows. OpenGL tiene una curva de aprendizaje más regular y te enseña más sobre gráficos que windows api.
http://www.opengl-tutorial.org/es/beginners-tutorials/tutorial-1-opening-a-window/
#798
No hay nada prestablecido porque cada uno hace un poco lo que le viene en gana. Tendrías que inspeccionar la infrastructra y buscar fallos en cada una de las piezas de software que lo conforman. Algunas webs tienen un link público al vídeo que no comprueban nada. Podrías ir probando e ir sacando links. Necesitas manejarte un mínimo con programación web para poder entender la página.
#799
Reverse Enginering Android APKs usando Android sin root.

Instala Termux de la PlayStore.

Actualiza.
pkg update & upgrade

Instala software útil:

pkg install aapt

pkg install apksigner

pkg install apktool

pkg install dpkg

pkg install git

git clone https://github.com/Lexiie/Termux-Jadx

dpkg -i ./jadx-0.6.1_all.deb

pkg install nano

pkg install nodejs (el npm que viene incluido es muy útil y hay varias herramientas para nodejs útiles para reversing)
pkg install openssl-tool

pkg install radare2

pkg install vim

pkg install wget

pkg install zip

Si no se encuentra algún soft en el repo que viene por defecto, installa también el unstable y prueba de nuevo:

pkg install unstable-repo

Puede que quieras usar tus herramientas o de terceros en algún lenguaje de programación. Hay más en otros repos no oficiales. Puedes ver todos los paquetes disponibles con el comando:

pkg list-all


O usar git clone como en uno de los comandos anteriores e instalar manualmente.

Ahora que tienes todas la herramientas, vamos a hacer algunos retos.

Crea una carpeta donde quieras, yo voy a crear RE/CC de Reverse Enginering y Cracking Challenges.

mkdir RE
cd RE
mkdir CC
cd CC

Y descargamos los retos.

wget https://github.com/OWASP/owasp-mstg/tree/master/Crackmes/Android/Level_01/UnCrackable-Level1.apk


Copiamos desde la ruta de descarga a la ruta de trabajo que creamos. Si no sabes la ruta usa el comando pwd para ver la ruta actual. En mi caso queda:
cp /data/data/com.termux/files/home/storage/downloads/UnCrackable-Level1.apk /data/data/com.termux/files/home/RE/CC/

Si te da problemas de acceso usa el comando termux-setup-storage y ya deberías tener la ruta disponible.

Cuando lo tenga al usar el comando ls dentro de la ruta /RE/CC podrás ver que tienes el uncrackable ahí.

Ahora tenemos varias herramientas que podemos usar para desempaquetarlo en distintos archivos. La más conocida es el zip. Si le cambias la extensión a .zip puedes abrirlo con el zip de toda la vida.

Algunas requieren root, por ese motivo nos bajamos el jadx. También puedes usar Apis online si no tienes root. Por ejemplo http://www.javadecompilers.com/apk también es muy usado el dex2jar incluso puedes instalarlo directamente con el r2pm (el manager de packetes de radare). Requieren root. Si tienes tu Android root instala el tsu con pkg install tsu que es un wraper del su para termux.

También comentar que puedes instalar el UnCrackable.apk sin problemas. Es una aplicación que pide una contraseña para acceder, la cual no conocemos.

Pues vamos a desempacar directamente el .apk

jadx --deobf UnCrackable-Level1.apk

Si usas el comando ls vas a ver que a parte del .apk se creo un .jobf y una carpeta con el mismo nombre del archivo.
Entramos con cd y seguimos la ruta hasta encontrar los .java

cd UnCrackable-Level1
cd sg
cd vantagepoint
cd uncrackable1

En este ruta tenemos el MainActivity.java que suele ser la actividad principal del programa.

Si hacemos un nano o vim al .java:

nano MainActivity.java

bajamos un poco y ya vemos el
if (C0005a.m6a(obj)) {
 create.setTitle("Sucess!"); dentro de la clase public void verify()

2 Líneas más arriba del if vemos la declaración y definición del String obj que es el texto que el usuario ponga en la aplicación, porque se está obteniendo de un EditText que es la versión de Android de un InputText.

Como vemos no tiene mucho más código, ni realiza intentos a otras aplicaciones ni a otras actividades de la aplicación.

Salimos de nano con control + X y si hacemos ls vemos que en la misma carpeta tenemos el C0005a.java al que de referencia en el código.

Lo abrimos con nano o vim y vamos a buscar el método m6a.

vim C0005a.java

Es la primera subclase de C0005a y como vemos es de tipo boolean. Como en el MainActivity estaba dentro de un if, necesitamos que devuelva true.

Podemos modificar el código si queremos y meterle un ! en la condición del if, y siempre que se ponga mal la contraseña actuará al revés.

Si miramos el resto de archivos veremos la clave cifrada, el tipo de cifrado, la contraseña del cifrado el modo de bloque...

Podemos sacar la clave con el comando
echo 5UJiFctbmgbDoLXmpL12mkno8HT4Lv8dlat8FxR2GOc= | openssl enc -aes-128-ecb -base64 -d -nopad -K 8d127684cbc37c17616d806cf50473cc

Ya estaría el reto completado. Hay muchas más formas de obtener el código o strings importantes para resolver el reto.

Por ejemplo podemos obtener el archivo classes.dex descomprimiendo el archivo.
cp UnCrackable-Level1.apk UnCrackable-Level1.zip
unzip UnCrackable-Level1.zip

Despues lo abrimos en el rabin2 o en el radare2.

rabin2 -izq classes.dex
Para cuando tengas muchos resultados, si buscas algo en concreto añade grep para filtrar:
rabin2 -izq classes.dex |grep "http"

Con radare2 se pueden hacer muchas cosas y analizar binarios de todo tipo.
r2 classes.dex
>aaa
>fs
>ii
>VV para salir dale a Q
>s main
>exit


Ahora vamos a resolver el reto otra vez pero vamos a hacerlo parcheando la app en vez de sacando el string.

Esta vez vamos a usar el apktool en lugar del jadx para obtener el código .smali que es una versión human readable (ensamblador) del bytecode que ejecuta Dalvik Virtual Machine.

apktool d -f UnCrackable-Level1.apk

-f sirve para sobrescribir la carpeta que nos creó el jadx, que ya no la necesitamos.

Ahora vamos a buscar el MainActivity.smali

cd UnCrackable-Level1
cd smali
cd sg
cd vantagepoint
cd uncrackable1

vim MainActivity.smali
Si miramos en el código encontraremos donde dice sucess.
Justo encima tenemos un condicional if que dice, if-eqz p1, :cond_0

Vamos a negar la condición para que siempre que pongas la contraseña mal nos deje "pasar".
Para saber como hacerlo están aquí los op codes de smali:
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html

Es decir solo necesitamos cambiar el if-eqz por el if-nez y guardar el archivo.

Ahora lo buildeamos, lo alineamos y finalmente lo firmamos, es este orden siempre y cuando se usen estas herramientas.

Nos vamos a la ruta RE/CC y buildeamos.

apktool b -d UnCrackable-Level1 build.apk

cd UnCrackable-Level
cd dist
Dentro de dist tenemos el apk generado. Lo tenemos que alinear.

zipalign -f -v 4 UnCrackable-Level1.apk aligned.apk

apksigner autokey aligned.apk firmada.apk

Lo ideal es usar el keytools para generar el keystore y firmas la app para máxima compatibilidad. En algunos dispositivos me corre la app sin problemas, y en otros me da error. Si teneis root o quereis rooterlo podeis bajaros el kingoroot de su página oficial y bajaros el paquete de reversing que viene en la wiki de termux. Con root se puede usar software más adecuado y bajarse suits enteras.

Ahora la puedes copiar de vuelta a descargas e intalarla. Una vez instalada pongas la contraseña que poñas verás que la aplicación te la valida como correcta a pesar de no serlo, ya que en vez de comprobar: "Es el texto introducido igual a la contraseña? Entonces valida." con el cambio que hicimos en el código pasa a ser "Si el texto introducido no es igual a la contraseña, Entonces valida". A alto nivel eso es lo que hicimos.

Otra forma que se me ocurre de resolver el reto sería debuggeando la aplicación ponieno breakpoints y analizando la memoria para ver el string directamente descifrado.

Espero que os sirva!
#800
GNU/Linux / Re: No me va el iso...
9 Febrero 2020, 00:07 AM
No sirve copiar y pegar. Necesitas "quemar la imagen" es decir, instalar el .iso en el disco usando una herramienta. Utiliza Rufus. Después al reiniciar el ordenador prueba si por F11 o F10 o F12 tienes el gestor de arranque rápido. Ahí seleccionas el disco duro y ya te debería arrancar. Si no te sale el menú entra con F2 a la BIOS o Supr o Del o Ctrl Alt Supr... Cada modelo es un mundo. Dentro de la bios tienes que seleccionar o desplazar el orden de arranque para poner de primero el disco en el que quemaste el Xubuntu.

Si tienes dudas de si el .iso se descargó correctamente puedes comprobar el hash o instalarlo en virtualbox.