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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 [2] 3
11  Seguridad Informática / Análisis y Diseño de Malware / Re: Keylogger en C (Windows Hooks) en: 17 Noviembre 2013, 11:42 am
Hola, ars1993, tienes un mensaje privado que te he mandado, o eso creo jaja.

Por favor, estoy muy interesado en estos temas, estoy dispuesto a ayudar, ¿¿¿alguien podría pasarme o indicarme de dónde sacar algún código de keylogger en C??? O cualquier malware escrito en C...

Muchas gracias. Un saludo.
12  Seguridad Informática / Análisis y Diseño de Malware / Re: Usar keylogger o troyano? en: 3 Noviembre 2013, 23:24 pm
Hola, yo estoy interesado justamente en lo mismo, pero el lenguaje que conozco es C (lo domino bien, de C++ no tengo ni idea), y actualmente estoy aprendiendo ADA, aunque de ADA no controlo demasiado por ahora. Digo esto porque quiero colaborar... Por favor, alguien que sepa que nos oriente, porque el problema que observo es como mantener una consola abierta sin que la vea el usuario, y estando cerrada, que sea capaz de leer los caracteres que presione el usuario... eso es lo que no sé, programar en C si que sé ;)

Gracias, un saludo. ¿Lo hacemos en C? :silbar:
13  Programación / Programación C/C++ / ¿Por qué cambian los caracteres? en: 2 Septiembre 2013, 23:46 pm
Hola, estoy desesperado... si alguien me puede explicar que pasa en este programa...
Os pongo una parte del código, que es lo que falla, y es que los caracteres que se guardan en el while no son los que se muestran en el for que hay después... y no sé por qué!!!! Que desesperación!!!! Ya no sé qué hacer jajaja.

Código:
#include<stdio.h> 
#include<stdlib.h>

int main()
{
   char *texto; //texto a cifrar
   char nombre[20]; //nombre que le vamos a dar al fichero de texto
   FILE *pf; //puntero de tipo FILE, necesario para manejar ficheros
   int i=0, numerocaracteres=0;

   printf("Introduce el nombre del archivo\n");
   printf("segun la forma nombre.tipo)\n");

   scanf("%s", &nombre);
   getchar();

   pf=fopen(nombre,"r");

   //comprobamos que no haya errores al abrir el fichero
   if(pf==NULL)
   {
      printf("Error al abrir el fichero. Pulsa Enter para salir\n");
      getchar();
      exit(1);
   }

   texto=(char *)malloc(1*sizeof(char));
   while(!feof(pf) && !ferror(pf))
   {
      texto[numerocaracteres]=fgetc(pf);
      printf("texto[numerocaracteres] es %c\n", texto[numerocaracteres]);
      getchar();
      numerocaracteres++;

      texto=(char *)realloc(texto,numerocaracteres*sizeof(char));
   }

   for(i=0;i<numerocaracteres;i++)
      printf("texto[i] es %c\n", texto[i]);
   getchar();

   fclose(pf);

//..........................

Muchas gracias y saludillos.
14  Programación / Programación C/C++ / ¿Qué hago mal? en: 23 Agosto 2013, 11:43 am
Hola, creo que tengo un poco de error de concepto, pero he buscado por Google ya y no me he conseguido aclarar. Os agradecería que me dijerais que hay mal en este código, ya que no cifra correctamente.

Código:
#include<stdio.h>
#include<stdlib.h>

char cifrar(char *,int);

int main()
{
char texto[200]; //texto a cifrar
char nombre[20]; //nombre que le vamos a dar al fichero de texto en el que se va a guardar el texto cifrado
FILE *pf; //puntero de tipo FILE, necesario para manejar ficheros
int i=0;
char textoencriptado[200]; //textoencriptado es el array en el que vamos a guardar el texto cifrado

printf("            ENCRIPTADOR DE TEXTOS!!!\n\n");
printf("Introduce todo el texto a cifrar y despues Enter\n");
gets(texto);

printf("Introduce el nombre del fichero que contendra\n");
printf("el texto cifrado (se debe dar segun la forma nombre.txt)\n");
scanf("%s", &nombre);
getchar();

pf=fopen(nombre,"w");

//comprobamos que no haya errores al abrir el fichero:
if(pf==NULL)
{
printf("Error al abrir el fichero. Pulsa Enter para salir\n");
getchar();
exit(1);
}

while(texto[i]!='\0' && ferror(pf)==0) //respectivamente, mientras que no lleguemos al final del texto y no haya error
//ferror devuelve 0 cuando no hay error, por eso ponemos que tiene que ser 0
{
textoencriptado[i]=cifrar(texto,i);
printf("%c", textoencriptado[i]);
getchar();
//esto escribe caracter por caracter el texto en el fichero, se puede hacer directamente con la cadena de caracteres,
//pero como lo que queremos es cifrar, aplicamos una operacion matematica sobre cada caracter, es decir,
//convertimos el caracter a entero, aplicamos un algoritmo, y volvemos a pasar el textoencriptado resultante a caracter
fputc(textoencriptado[i],pf);
i++;
}

printf("El texto se ha cifrado correctamente!\n");

fclose(pf);

printf("Enter para salir del programa\n");
getchar();
return 0;
}

char cifrar(char *texto, int i)
{
char textoencriptado[200];

//aqui aplicamos la operacion matematica que queramos
//pero como el texto saldra cifrado, quien lo lea no podra saber en principio la operacion de encriptacion que se ha aplicado
if(texto[i]=='A') //asignamos unos valores aleatoriamente antes de ver, con los ultimos 6 else if, si el caracter a cifrar se encuentra en el rango especificado de valores,
//de esta manera, hacemos muy complicado encontrar una regla para descifrar el texto
textoencriptado[i]='.';
else if(texto[i]=='.')
textoencriptado[i]=' ';
else if(texto[i]==' ')
textoencriptado[i]='a';
else if(texto[i]=='b')
textoencriptado[i]='B';
else if(texto[i]=='e')
textoencriptado[i]='l';
else if(texto[i]=='+')
textoencriptado[i]='=';
else if(texto[i]=='?')
textoencriptado[i]='t';
else if(texto[i]=='3')
textoencriptado[i]='b';
else if(texto[i]=='9')
textoencriptado[i]='0';
else if(texto[i]=='e')
textoencriptado[i]='k';
else if(texto[i]=='n')
textoencriptado[i]='H';
else if(texto[i]=='i')
textoencriptado[i]='p';
else if(texto[i]=='Q')
textoencriptado[i]='s';
else if(texto[i]=='R')
textoencriptado[i]='x';
else if(texto[i]=='r')
textoencriptado[i]='E';
else if(texto[i]=='u')
textoencriptado[i]='0';
else if(texto[i]=='p')
textoencriptado[i]='d';
else if(texto[i]=='@')
textoencriptado[i]='Q';
else if(texto[i]=='d')
textoencriptado[i]='D';
else if(texto[i]==')')
textoencriptado[i]='I';
else if(texto[i]>='{')
textoencriptado[i]='(';
else if(texto[i]>='0' && texto[i]<=';')
textoencriptado[i]=texto[i]+'STX';
else if(texto[i]>='<' && texto[i]<='M')
textoencriptado[i]=texto[i]+'VT';
else if(texto[i]>'M' && texto[i]<='Z')
textoencriptado[i]=texto[i]+'SOH';
else if(texto[i]>=']' && texto[i]<='i')
textoencriptado[i]=texto[i]-'DC4';
else if(texto[i]<='j' && texto[i]<='u')
textoencriptado[i]=texto[i]-'ETX';

return textoencriptado[i];
}

PD: no pretendo debatir si la manera de cifrar es más o menos segura, únicamente busco saber por qué no funciona.

GRACIAS. SALUDILLOS.
15  Programación / Programación C/C++ / Re: ¿Dónde se guarda el fichero y cómo consigo el ejecutable? en: 20 Agosto 2013, 16:50 pm
Cierto, muchísimas gracias a los dos.

Pero una duda... amchacon, si yo saco el ejecutable de donde explica flony, que es cierto que está ahí, y lo ejecuto directamente, sin estar en ninguna carpeta, ¿dónde se guarda entonces?

Gracias y saludos.
16  Programación / Programación C/C++ / Re: ¿Dónde se guarda el fichero y cómo consigo el ejecutable? en: 19 Agosto 2013, 18:58 pm
Hola kaltorak, muchas gracias por tu respuesta. Verás, pues ahora mismo tengo el Visual Studio de Microsoft, pero porque tengo Windows, aunque realmente me interesaría saber cómo obtener el ejecutable en Linux, ya que odio Windows y no quiero hacer fichero ejecutable de mi programa para Windows.

Aunque me preocupa más lo del fichero, verás, el código lo he hecho yo enteramente, y más o menos sí que me defiendo con la programación en C. A ver, aclaro, evidentemente cuando estoy depurando el programa y le digo generar solución me lo ejecuta. Bien, una de las cosas que lleva a cabo mi programa es la creación de un fichero de texto, ese fichero se crea dentro de la carpeta del proyecto cuando se ejecuta el código desde el compilador. Pero no sé dónde se guardará el fichero una vez que ejecute el programa desde el ejecutable, como un programa normal.

El fichero lo creo así:

Código:
//...
printf("Nombre para el fichero? (Debe darse de la forma: nombre.txt)\n");
scanf("%s", &nombre);
getchar();

pf=fopen(nombre,"w"); //DONDE SE GUARDA?????
//...

Bueno, muchas gracias otra vez. Un saludo.
17  Programación / Programación C/C++ / ¿Dónde se guarda el fichero y cómo consigo el ejecutable? en: 18 Agosto 2013, 21:56 pm
Hola, necesitaría saber cómo puedo obtener, a partir de mi código escrito, el archivo ejecutable, no digo para depurar, sino la aplicación ya lista para ejecutarse (.exe en Windows). Además, una de las cosas que hace el programa es generar un archivo de texto, pero no sé dónde se guardará ese archivo cuando se ejecute el programa, ¿alguno lo sabe?

Muchas gracias, saludillos.
18  Programación / Programación C/C++ / Re: ¿Algoritmo existente? en: 29 Julio 2013, 17:02 pm
Amchacon, lo he compilado sin modificar absolutamente nada. Do-while, ya sé que lo único que me hace falta es "jugar" con las posiciones de los elementos del array, pero  lo que no encuentro es el cómo combinarlos, es decir, un algoritmo que haga esas combinaciones sea cual sea el número de caracteres, y ahí es donde os pido ayuda.

Os pongo aquí parte del código que es donde tengo los problemas, este código es, de todos los que he probado hasta la fecha, el que mejor funciona posiblemente y el que es más sencillo de comprender porque es el más corto.

Código:
#include<stdio.h> 
#include<stdlib.h>

int main()
{
    int numcarac, auxnumcarac, i, j, k, l=0, contador=1; //numcarac es el numero de caracteres del array carac y auxnumcarac el de caraccomb
    char carac[26], caraccomb[26]; //carac es el array con todos los caracteres, y caraccomb el array en el que iremos guardando las diferentes combinaciones de los caracteres de carac

//... pedimos datos por teclado, los guardamos y los mostramos para asegurarnos, esto funciona bien, comprobado, no lo pongo para no liar mas

//AQUI ESTA EL PROBLEMA:
auxnumcarac=2;

   for(i=0; i<numcarac; i++)
   {
      for(j=i; j<numcarac; j++)
      {
         for(k=0; k<auxnumcarac; k++)
         {
            caraccomb[l] = carac[j+k];
            l++;
         }

         //aqui mostramos caraccomb:
         printf("%s\n", caraccomb);

      }
      auxnumcarac++;
      l=0;
   }

Gracias y saludos. :D
A ver si podéis orientarme un poco en el código este.
19  Programación / Programación C/C++ / Re: ¿Algoritmo existente? en: 28 Julio 2013, 22:39 pm
error C2143: error de sintaxis : falta ';' delante de 'tipo'

error C2065: 'hasta' : identificador no declarado

error C2065: 'hasta' : identificador no declarado

error C2065: 'hasta' : identificador no declarado

EDITO: he quitado el const, pero da exactamente los mismos errores.

EDITO 2: amchacon, muy chula tu foto, es lo menos que podemos hacer por recordar a un genio al que nunca se le ha reconocido lo suficiente su trabajo y a quien no conoce esta sociedad en que vivimos, pero sí conoce a Steve Jobs, por ejemplo.
20  Programación / Programación C/C++ / Re: ¿Algoritmo existente? en: 28 Julio 2013, 22:17 pm
Código:
#include <stdio.h>
#include <string.h>

const char Diccionario_Default[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J'
,'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3',
'4','5','6','7','8','9','\0'};

const char Diccionario_Mayusculasoff[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','\0'};

const char Diccionario_Minusculasoff[] = {'A','B','C','D','E','F','G','H','I','J'
,'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3',
'4','5','6','7','8','9','\0'};

const char Diccionaro_Numerosoff[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J'
,'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};

const char Diccionario_MayusculasNumerosoff[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z','\0'};

const char Diccionario_MinusculasNumerosoff[]= {'A','B','C','D','E','F','G','H','I','J'
,'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};

const char Diccionario_MayusculasMinusculasoff[]= {'0','1','2','3','4','5','6','7','8','9','\0'};

char* Diccionario = Diccionario_Default;
int TamanyoDiccionario = 0;
char explora (char* Password,const char* Correcta, int desde, int hasta);

int main()
{
    char LongitudMin;
    char Opcion;
    char password[256];
    char intento[256] = "as";
    //char* valor = fgets(password,255,stdin);

    TamanyoDiccionario = strlen(Diccionario);
    puts("Introduce tu contrasenya: ");

    scanf("%s",password);

    puts("Quieres proporcionar opciones adicionales? (s/n): ");
    scanf(" %c",&Opcion);

    if (Opcion == 's' || Opcion == 'S')
    {
         char Mayuscula;
        char Minuscula;
        char Numeros;
        puts("Que longitud tiene al menos contrasenya? ");
        scanf("%d",&LongitudMin);

        if (LongitudMin < 0)
            LongitudMin = 0;

        puts("Tiene letras mayusculas? (S/N) ");
        scanf(" %c",&Mayuscula);

        puts("Tiene letras minusculas? (S/N)");
        scanf(" %c",&Minuscula);

        puts("Tiene numeros? (S/N)");
        scanf(" %c",&Numeros);

        #define Afr(tipo) (tipo == 's' || tipo == 'S')

        if (!Afr(Mayuscula) && !Afr(Minuscula) && Afr(Numeros)) // 001
            Diccionario = Diccionario_MayusculasMinusculasoff;

        if (!Afr(Mayuscula) && Afr(Minuscula) && !Afr(Numeros)) // 010
            Diccionario = Diccionario_MayusculasNumerosoff;

        if (!Afr(Mayuscula) && Afr(Minuscula) && Afr(Numeros)) // 011
            Diccionario = Diccionario_Mayusculasoff;

        if (Afr(Mayuscula) && !Afr(Minuscula) && !Afr(Numeros)) // 100
            Diccionario = Diccionario_MinusculasNumerosoff;

        if (Afr(Mayuscula) && !Afr(Minuscula) && Afr(Numeros)) // 101
            Diccionario = Diccionario_Minusculasoff;

        if (Afr(Mayuscula) && Afr(Minuscula) && !Afr(Numeros)) // 110
            Diccionario = Diccionaro_Numerosoff;

        if (Afr(Mayuscula) && Afr(Minuscula) && Afr(Numeros)) // 111
            Diccionario = Diccionario_Default;

        TamanyoDiccionario = strlen(Diccionario);// Generar Diccionario

    }
    else
        {
            LongitudMin = 0;
        }

    int hasta = LongitudMin;

    while(!explora(intento,password,0,hasta)) { hasta++;
    intento[hasta] = '\0';}

    printf("La contrasena es %s",intento);

    return 0;
}

char explora (char* Password,const char* Correcta, int desde, int hasta){
  if (desde==hasta){
    return !strcmp(Password,Correcta);
  }else{
    int i = 0;
    for (i=0; i< TamanyoDiccionario; i++){
      Password [desde] = Diccionario[i];
       if (explora (Password, Correcta, desde+1, hasta))
        return 1;
    }
  }
  return 0;
}
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines