elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] [SRC] desencriptador de claves para el PC Web
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] [SRC] desencriptador de claves para el PC Web  (Leído 1,831 veces)
z_ane_666

Desconectado Desconectado

Mensajes: 64


Ver Perfil
[C] [SRC] desencriptador de claves para el PC Web
« en: 1 Julio 2012, 02:05 am »

He hecho un pequeño codigo que le puede servir a muchos administradores de sistema, para hallar las claves olvidadas de las pcs cliente que tengan instalado el Pcweb Cliente 4.3.26.

Para usarlo obviamente tienes que estar con la terminal cliente desbloqueada! :laugh:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <string.h>
  5.  
  6. void ayuda(char * argumento)
  7. {
  8. printf("\nuso %s [/clave clave_encriptada] || [/ruta ruta_en_el_registro_de_windows]\n\nEjecute el programa sin parametros para mostrar la contraseña descifrada desde la ruta por defecto (HKEY_LOCAL_MACHINE\\SOFTWARE\\IWindow\\Bootear\\Clave)\n\nOPCIONES:\n\n/clave : Debe ingresar la clave cifrada en hexadecimal, separando cada elemento con - ejemplo: /clave h4-54-12\n\n/ruta : Le permite especificar una ruta del registro para la busqueda de la clave",argumento);
  9. exit(0);
  10. }
  11.  
  12. char * RegQueryStringValue(HKEY hKey, char * strValueName,long TIPODATO)
  13. {
  14. long lResult;
  15. char * strBuf;
  16. unsigned long lValueType;
  17. unsigned long lDataBufSize;
  18. strBuf = (char *) calloc(200, sizeof(char));
  19. if (strBuf==NULL)
  20.    {
  21.    printf("falta de memoria");
  22.    RegCloseKey(hKey);
  23.    exit(1);
  24.    }
  25.    lResult = RegQueryValueEx(hKey, strValueName, NULL, &lValueType, strBuf, &lDataBufSize);
  26.    if (lResult == ERROR_SUCCESS)
  27.        {if (lValueType == TIPODATO)
  28.            {
  29.             return strBuf;
  30.            }
  31.    else {return "";}
  32.        }
  33.    else {return "";}
  34. }
  35.  
  36. char * obtenervalor(HKEY hKey, char * strPath, char * strValue, long tipodato)
  37. {
  38. PHKEY Ret;
  39. char * valorllave;
  40. long resultado;
  41. resultado=RegOpenKey(hKey,strPath,&Ret);
  42. if (resultado==ERROR_SUCCESS)
  43. {
  44. valorllave=RegQueryStringValue((HKEY)Ret,strValue,tipodato);
  45. RegCloseKey((HKEY)Ret);
  46. return valorllave;
  47. }
  48. else{
  49. return "";}
  50. }
  51.  
  52. char * desencriptandoclave(char * claveencriptada)
  53. {
  54. int semilla;
  55. char * clavedesencriptada;
  56. long i;
  57. semilla=(int)claveencriptada[0];
  58. clavedesencriptada = (char *) calloc(strlen(claveencriptada)-1+1, sizeof(char));//en realidad solo debiera pedir 9 espacios pero pido +1 para el '\0'
  59. if (clavedesencriptada==NULL)
  60.    {
  61.    printf("falta de memoria");
  62.    exit(1);
  63.    }
  64. for(i=0;i<strlen(claveencriptada)-1;i++)
  65.    {
  66.    clavedesencriptada[i]=(char *)((int)claveencriptada[i+1]-semilla-i-1);
  67.    }
  68. clavedesencriptada[strlen(claveencriptada)-1]='\0';
  69. return clavedesencriptada;
  70. }
  71.  
  72. char * volteandocadena(char * cadenaprocesar)
  73. {
  74. char * cadenaprocesada;
  75. cadenaprocesada = (char *) calloc(strlen(cadenaprocesar)+1, sizeof(char));//+1 para el '\0'
  76. if (cadenaprocesada==NULL)
  77.    {
  78.    printf("falta de memoria");
  79.    exit(1);
  80.    }
  81. long i;
  82. for(i=strlen(cadenaprocesar)-1;i>-1;i--)
  83.    {
  84.   cadenaprocesada[strlen(cadenaprocesar)-1-i]=cadenaprocesar[i];
  85.    }
  86.  
  87. cadenaprocesada[strlen(cadenaprocesar)+1-1]='\0';
  88. return cadenaprocesada;
  89. }
  90.  
  91. int main(int argc,char **argv)
  92. {
  93. char siclave[7]="/clave";
  94. char siruta[6]="/ruta";
  95. char siayuda[7]="/ayuda";
  96. char versionprogram[7]="4.3.26";
  97. char * retorno;
  98. if (argc==1){
  99. retorno = obtenervalor(HKEY_CURRENT_USER,"SOFTWARE\\ARSON Group SAC\\Pcweb Cliente","Last Installed Version",REG_SZ);
  100.    {if (strncmp(versionprogram,retorno,strlen(versionprogram))==0)
  101.    {char * claveencriptada;
  102.     claveencriptada = obtenervalor(HKEY_LOCAL_MACHINE,"SOFTWARE\\IWindow\\Bootear","Clave",REG_SZ);
  103.        if(claveencriptada!="")
  104.        {char * clavedesencriptada;
  105.         clavedesencriptada=desencriptandoclave(claveencriptada);
  106.         printf("%s",clavedesencriptada);
  107.         exit(0);
  108.        }
  109.        else
  110.        {printf("Error, no se pudo encontrar la clave \n");}
  111.  
  112.    exit(1);}
  113.    else
  114.    {printf("No esta instalado Pcweb Cliente 4.3.26");
  115.    exit(1);}}
  116. }
  117. else
  118. {
  119. if ((strncmp(siclave,argv[1],strlen(siclave))==0)||(strncmp(siruta,argv[1],strlen(siruta))==0)||(strncmp(siayuda,argv[1],strlen(siayuda))==0))
  120. {   if(strncmp(siayuda,argv[1],strlen(siayuda))==0){ayuda(argv[0]);}
  121.    if (argc<3){printf("Falta parametros");exit(1);}
  122.    if (strncmp(siclave,argv[1],strlen(siclave))==0)
  123.    {
  124.    char *separacion;
  125.    char *cadenalista;
  126.    long i=0;
  127.    cadenalista=(char *) calloc(500,sizeof(char));
  128.    if (cadenalista==NULL)
  129.        {
  130.        printf("falta de memoria");
  131.        exit(1);
  132.        }
  133.    unsigned short decimal;
  134.    separacion = strtok(argv[2],"-");
  135.    while ((separacion != NULL))
  136.        {
  137.            sscanf(separacion, "%hx", &decimal);
  138.            cadenalista[i]=(char *)decimal;
  139.            separacion = strtok(NULL, "-");
  140.            i++;
  141.  
  142.        }
  143.    cadenalista=(char *) realloc ( cadenalista, i+1*sizeof(char) );//+1 para null
  144.    cadenalista[i]='\0';
  145.        if(i>1)
  146.            {char * clavedesencriptada;
  147.            clavedesencriptada=desencriptandoclave(cadenalista);
  148.            printf("%s",clavedesencriptada);
  149.            exit(0);
  150.            }
  151.            else{printf("Error, solamente ha escrito la semilla\n");ayuda(argv[0]);exit(1);}
  152.    }
  153.    else if(strncmp(siruta,argv[1],strlen(siruta))==0)
  154.    {
  155.    char * rutaregistro;
  156.    char * raizregistro;
  157.    HKEY trueraizregistro;
  158.    char * nombrevalor;
  159.    //---------------validaciones de ***** -----------------------------
  160.    rutaregistro=strstr(volteandocadena((argv[2])),"\\");
  161.        if(rutaregistro)
  162.        {rutaregistro=strstr(volteandocadena(rutaregistro+1),"\\");
  163.            if(rutaregistro)
  164.            {rutaregistro=rutaregistro+1;}
  165.            else{ayuda(argv[0]);exit(1);}
  166.        }
  167.        else{ayuda(argv[0]);exit(1);}
  168.    //---------------validaciones de ***** -----------------------------
  169.    raizregistro=strrchr(volteandocadena(argv[2]),'\\');
  170.        if(raizregistro)
  171.        {raizregistro=volteandocadena(raizregistro+1);}
  172.        else{ayuda(argv[0]);exit(1);}
  173.    //---------------validaciones de ***** -----------------------------
  174.    nombrevalor=strrchr(argv[2],'\\')+1;
  175.    strupr(raizregistro);
  176.    {if(strncmp("HKEY_CLASSES_ROOT",raizregistro,17)==0)
  177.    {
  178.    trueraizregistro=HKEY_CLASSES_ROOT;
  179.    }
  180.    else if(strncmp("HKEY_CURRENT_USER",raizregistro,17)==0)
  181.    {
  182.     trueraizregistro=HKEY_CURRENT_USER;
  183.    }
  184.    else if(strncmp("HKEY_LOCAL_MACHINE",raizregistro,18)==0)
  185.    {
  186.    trueraizregistro=HKEY_LOCAL_MACHINE;
  187.    }
  188.    else if(strncmp("HKEY_USERS",raizregistro,10)==0)
  189.    {
  190.    trueraizregistro=HKEY_USERS;
  191.    }
  192.    else if(strncmp("HKEY_CURRENT_CONFIG",raizregistro,19)==0)
  193.    {
  194.     trueraizregistro=HKEY_CURRENT_CONFIG;
  195.    }
  196.    else{ayuda(argv[0]);exit(1);}}
  197.    char * claveencriptada;
  198.    claveencriptada = obtenervalor(trueraizregistro,rutaregistro,nombrevalor,REG_SZ);
  199.        if(claveencriptada!="")
  200.        {char * clavedesencriptada;
  201.         clavedesencriptada=desencriptandoclave(claveencriptada);
  202.         printf("%s",clavedesencriptada);
  203.         exit(0);
  204.        }
  205.        else
  206.        {printf("Error, no se pudo encontrar la clave \n");exit(1);}
  207.    }
  208. }
  209. else
  210. {
  211. printf("Opcion no existe\n");
  212. exit(1);
  213. }
  214. }
  215.  
  216. return 0;
  217. }


Espero que le sea de utilidad y quisiera recibir consejos para optimizar el programa. Saludos ;)


« Última modificación: 2 Octubre 2020, 04:55 am por z_ane_666 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH] Encriptador & Desencriptador de Texto v1.5
Scripting
Xt3mP 0 4,959 Último mensaje 23 Agosto 2009, 11:42 am
por Xt3mP
Desencriptador en VB
Programación Visual Basic
frangarrob 2 1,940 Último mensaje 15 Julio 2010, 16:25 pm
por criskapunk
Encriptador Y Desencriptador ROT -N
Software
NINGUNA1212 4 7,014 Último mensaje 25 Octubre 2011, 16:43 pm
por pulpoman
¿Algún encriptador/desencriptador en HTML o javascript? « 1 2 »
Desarrollo Web
DeSsy 10 9,629 Último mensaje 28 Febrero 2011, 14:55 pm
por xassiz~
desencriptadoR y
Dudas Generales
Andrea120205 2 2,071 Último mensaje 30 Septiembre 2015, 13:38 pm
por Gambinoh
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines