Objetivo de crack: descifrar la contraseña de inicio de sesión cifrada de un troyano asp, descifrar la contraseña del troyano asp. Como no hay una descripción de la versión del troyano, no sé el nombre específico del troyano.
Hay dos métodos de descifrado: reemplazar el texto cifrado con la contraseña cifrada y utilizar el texto cifrado y el algoritmo de cifrado para descifrar la contraseña. El primero no es realmente un crack en absoluto.
Propósito del craqueo: sólo por diversión.
Si no puedo obtener el código fuente ASP, entonces no tengo ninguna posibilidad de descifrar la contraseña. Un amigo de China dijo que había obtenido acceso a una página web, pero no podía modificar la página de inicio. Encontró que había un troyano ASP en ella, pero la contraseña estaba cifrada. Luego está esta animación. Vale, hay demasiadas tonterías, así que prepárate, esta explicación será bastante larga.
El código clave para la verificación de la contraseña de inicio de sesión del troyano asp es el siguiente:
si Epass(trim(request.form("contraseña")))="q_ux624q|p" entonces
respuesta.cookies("contraseña")="8811748"
...
<%
finalizar seleccionar
función Epass(pasar)
temppass=StrReverse(izquierda(pasar&"zxcvbnm,./",10))
templen=len(pase)
mmcontraseña=""
para j=1 a 10
mmcontraseña=mmcontraseña+chr(asc(mid(temppass,j,1))-templen+int(j*1.1))
próximo
Epass=reemplazar(mmcontraseña,"'","B")
función final
%>
Obviamente, la función Epass se utiliza para cifrar la contraseña ingresada y luego el texto cifrado obtenido se compara con el texto cifrado original. Si tiene un poco de base en programación, especialmente VB, entonces el algoritmo de cifrado en Epass será claro de un vistazo. Si no, entonces no importa. Creo que lo entenderás poco después de mi explicación. En la función, la variable que contiene la contraseña es pass. pass&"zxcvbnm,./" Conecte el contenido en pasada con zxcvbnm,./ para obtener una nueva cadena. left(pass&"zxcvbnm,./",10) toma los primeros 10 dígitos. La función StrReverse invierte el orden de la cadena de 10 dígitos resultante. len(pass) obtiene la longitud de la contraseña. A continuación se muestra un bucle. Tome el código Ascii de cada bit en la cadena obtenida: longitud de la contraseña + redondeo (posición del carácter * 1.1), y luego convierta el valor obtenido en caracteres y vuelva a conectarse. Finalmente, reemplace todos los caracteres ' en la cadena obtenida con B, para que se genere el texto cifrado. Si extraemos el algoritmo de cifrado y reemplazamos el texto cifrado original por el nuestro, la contraseña correspondiente también se convertirá en su contraseña. Pero como dije, esto no es realmente un crack.
Si entramos en el amor, el proceso de cifrado es el siguiente:
amar
lovezxcvbnm,./ 'Conectar
lovezxcvbn 'Toma el top 10
nbvcxzevol 'Orden revertida
norte
110(ascii)-4(dígitos)+int(1(posición)*1.1)=107
El código ASCII de 107 es k, y así sucesivamente. El texto cifrado final es:
k`ucy|hztsPodemos
deducir la contraseña mediante el texto cifrado y el algoritmo de cifrado. Comience en el último paso del algoritmo y avance hacia arriba. El último paso es reemplazar todo ' con B. ¿Es necesario reemplazar B nuevamente con '? Siempre que podamos obtener el texto cifrado final, es posible que la contraseña sea diferente. Si hay 10 B, entonces el número de contraseñas originales es 2 elevado a la décima potencia. Aunque solo hay una contraseña original, las 1024 contraseñas son correctas. Si quieres descifrarlo perfectamente, puedes intentar escribir todas las combinaciones tú mismo.
Entonces este paso puede ignorarse.
El algoritmo anterior es muy claro,
chr(asc(mid(temppass,j,1))-templen+int(j*1.1))
solo necesitamos reemplazar + y -.
chr(asc(mid(temppass,j,1))+templen-int(j*1.1))
Pero hay otro problema. No sabemos la longitud de la contraseña de antemano. la contraseña tiene entre 1 y 10 dígitos demasiado larga.
Luego podemos usar un bucle del 1 al 10 para encontrar todas las contraseñas posibles y luego usar la función StrReverse para invertir el orden.
Entonces, ¿cómo determinamos qué contraseña obtuvimos finalmente? Puede usar pass&"zxcvbnm,./" para ver si están los primeros dígitos de zxvbnm,./ al final de la contraseña.
Bueno, esta es la verdadera contraseña. Entonces si la contraseña es de 10 dígitos, siempre será correcta, porque no habrá conexión más adelante. Entonces podríamos obtener dos respuestas.
La siguiente es la función de descifrado que escribí:
funciónCcódigo(código)
para templen1=1 a 10
códigomm=""
para j=1 a 10
mmcode=mmcode+chr(asc(mid(code,j,1))+templen1-int(j*1.1))
próximo
CódigoC=strReverse(códigomm)
respuesta.escribir "Contraseña"&templen1&":"&Ccode&"<br>"
si mid(Ccode,templen1+1,10-templen1)=left("zxcvbnm,./",10-templen1) y templen1<>10 entonces
resultado=izquierda(códigoC,tempen1)
próximo
respuesta.escribir "Última contraseña:"&resultado
La función final
está lista. Es posible que el algoritmo no se domine por completo en un período de tiempo tan corto. Esto es normal. Luego adjuntaré la documentación y el código fuente ASP cifrado y descifrado en el paquete comprimido. estúdialo detenidamente. Asimismo, la contraseña 10 siempre es correcta. Luego tomaremos el texto cifrado original en asp y veremos cuál será el resultado. Bien, puedes iniciar sesión con ambas contraseñas. Para las pruebas, asumí un IIS localmente. Si el servidor web no se puede configurar localmente, puedes contactarme y escribirlo en otros idiomas.