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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 [2] 3 4
11  Seguridad Informática / Criptografía / Re: Sistema de cifrado por lote de texto plano en: 29 Marzo 2016, 18:04 pm
Muchas gracias por tu comentario. ¿Como sería el modo para descifrar el contenido cifrado sin la clave correcta? Me interesa mucho el tema pero estoy algo verde. Muchas gracias.
12  Seguridad Informática / Criptografía / Sistema de cifrado por lote de texto plano en: 29 Marzo 2016, 17:37 pm
Hola a todos, un amigo y yo hemos estado trasteando un poco con C y hemos creado un cifrado algo simplón y queremos saber como de fuerte es. Os comento un poco como funciona. Se mete un texto de entrada y uan contraseña y en la salida cada caracter de la entrada se sumará al caracter correspondiente de la contraseña siguiendo este esquema, tanto para el cifrado como el descifrado.
Código:
/*
 *Title: crypt
 *Description: It de/encrypt strings
 *@param pass[]: string which we use like password
 *@param text[]: string which we will encrypt
 *@param x: false = encrypt, true = decrypt
 *@param name[]: name of output
 *@return text_length: text length
 */
void crypt(char pass[], char text[], bool x, char name[]) {
  int     pass_length;
  int     text_length;
  int     passPosition = 0; //Relative position in pass[]
  int     textPosition = 0; //Relative position in text[]
  pass_length = length(pass);
  text_length = length(text);
  int     sol; //output character

  FILE   *nom;

  nom = fopen(name, "w");

  for(textPosition = 0; textPosition < text_length; textPosition++) {
    if(passPosition == pass_length) {
      passPosition = 0;
    }
    if(x == false) {
      sol = text[textPosition] + pass[passPosition];
      while(sol > 126) {
sol -= 94;
      }
    } else {
      sol = text[textPosition] - pass[passPosition];
      while(sol < 32) {
sol += 94;
      }
    }
    passPosition++;
    fputc(sol, nom);
  }
  fclose(nom);
}
Además tiene la opción de generar texto aleatorio tras la salida para meter datos que no forman parte del texto original y creemos que permite una barrera contra un ataque por estadistica de palabras.
Todo el código está en https://github.com/JoseluCross/cryptoJKA/tree/master/cryptojka

Queremos saber si es seguro, o al menos, cuan seguro es. Muchas gracias
13  Programación / Programación C/C++ / Re: Meter en cadena argumento en C en: 29 Marzo 2016, 08:14 am
Los ficheros ya los coje y los escribe, cambiando lo del i++ por el else if ya no da error en el core, ahora solo tengo problemas respecto a que falte un flag y tanto la entrada como la salida sean incorrectos, y me pasa que no funciona el resto del programa pero ya algo se va solucionando. Muchas gracias nuevamente por toda la ayuda
14  Programación / Programación C/C++ / Re: Meter en cadena argumento en C en: 29 Marzo 2016, 00:47 am
Aunque ahora ya no tengo problemas con los tipos tengo violación del segmento del core generado ¿Por que puede ser esto?
15  Programación / Programación C/C++ / Re: Meter en cadena argumento en C en: 29 Marzo 2016, 00:20 am
Eso que has puesto me serviría para el archivo de entrada, pero para la salida necesito el nombre porque lo he de enviar a otras funciones, si se puede hacer directamente mejor, pero no soy muy ducho con esto. Tambien necesito texto para pass o text. Gracias tambien por tu ayuda
16  Programación / Programación C/C++ / Meter en cadena argumento en C en: 28 Marzo 2016, 23:04 pm
Hola a todos, quiero meter un argumento especificado en la ejecución del programa en una cadena para luego abrir un archivo con ese nombre. Os dejo el código proque como lo he intentado no funciona.
Código:
int main(int argc, char *argv[]) {
  bool    state; //false when encrypt, true when decrypt
  bool    ran = false; //false: not random generation, true: random generation
  bool    fil; //false: not file, true, with file
  int     cant = 0; //number of characters in random generation
  char    text[MAX_TEXT]; //imput character
  char    pass[MAX_PASS]; //Imput pass
  char    in[35]; //input file
  char    out[35]; //output file

  //Flags options
  int     i;
  for(i = 0; i < argc; i++) {
    if(strcmp(argv[i], "-o") == 0) {
      strcpy(out[0], argv[i + 1]);
      i++;
    }
    if(strcmp(argv[i], "-f") == 0) {
      strcpy(in[0], argv[i + 1]);
      fil = true;
      i++;
    }
    if(strcmp(argv[i], "-p") == 0) {
      strcpy(pass[0], argv[i + 1]);
      i++;
    }
    if(strcmp(argv[i], "-t") == 0) {
      strcpy(text[0], argv[i + 1]);
      fil = false;
      i++;
    }
    if(strcmp(argv[i], "-e") == 0) {
      state = false;
      i++;
    }
    if(strcmp(argv[i], "-d") == 0) {
      state = true;
      i++;
    }
    if(strcmp(argv[i], "-r") == 0) {
      ran = true;
      cant = atoi(argv[i + 1]);
      i++;
    }
    if(strcmp(argv[i], "-h") == 0) {
      helpbox(); //In methods.c
      return 0;
    }
  }
Espero que tengáis suficientes, si necesitais mas código está en https://github.com/JoseluCross/cryptoJKA/tree/master/unestable-version
Muchas gracias por adelantado
17  Programación / Programación C/C++ / Re: [C][?] No se ejecutan printf en: 25 Marzo 2016, 15:07 pm
Muchas gracias, era ese el problema. Gracias también por el consejo.
18  Programación / Programación C/C++ / Re: [C][?] No se ejecutan printf en: 23 Marzo 2016, 19:55 pm
El código completo es
Código:
/*Título: Ejercicio 2 
 *Descripción: Calcula el cambio a base decimal, octal y hexadecimal
 *Autor: José Luis Garrido Labrador (JoseluCross)
 *Version: 1.0 - mar/16
 */

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

int     clean_stdin(void);
void    cambioBinario(int);
void    imprimeResultado(int);

int main() {
  int     n; //Número que añadiremos
  char    c; //Carácter de control
  bool    control = false; //Variable para el control de entrada

  do {
    printf("Introduce un número en base decimal: ");
    if(scanf("%d%c", &n, &c) != 2 || c != '\n') {
      printf("El número %d%c no es válido\n", n, c);
      clean_stdin();
      control = false;
    } else {
      printf("prueba");
      if(n >= 0) {
printf("El binario de %d es: ", n);
cambioBinario(n);
//cambioOctal(decimal);
//cambioHex(decimal);
control = true;
      }
    }
  } while(control == false || n < 0);

  return 0;
}

//Función para la limpieza del buffer del teclado
int clean_stdin() {
  while(getchar() != '\n') ;
  return 1;
}

/*
 *Nombre: cambioBinario
 *Descripción: Convierte un número decimal a binario
 *@param n: número que convertiremos
 *@author: JoseluCross
 */
void cambioBinario(int n) {
  int     x = 1; //Variable de longitud
  //Asignamos tamaño de cifras que tendrá el número en binario
  for(x = 1; pow(2,x) > n; x++) ;
  int     tam[x]; //El vector donde almacenaremos las cifras (para este procedimiento no se usará recursividad)
  int     p = 0; //Variable de posición
  //Bucle para la asignación de cifras binarias
  for(p = 0; p = x; p++) {
    tam[p] = n % 2;
    n = n / 2;
  }
  //Bucle para el envío a imprimir
  for(p = x; p = 0; p--) {
    imprimeResultado(tam[p]);
  }
  printf("\n");
}

/*
 *Nombre: imprimeResultado
 *Descripción: imprime el resultado de cada cambio
 *@param a: valor que se imprimirá
 *@author: JoseluCross
 */
void imprimeResultado(int a) {
  printf("%d", a);
}
19  Programación / Programación C/C++ / [C][?] No se ejecutan printf en: 23 Marzo 2016, 13:55 pm
Tengo un problema la mar de raro. Pase lo que pase nunca imprime el texto "prueba", si meto un valor incorrecto si se ejecuta el
Código:
printf("El número %d%c no es válido\n",n,c)
El código es
Código:
int main() {
  int     n; //Número que añadiremos
  char    c; //Carácter de control
  bool    control = false; //Variable para el control de entrada

  do {
    printf("Introduce un número en base decimal: ");
    if(scanf("%d%c", &n, &c) != 2 || c != '\n') {
      printf("El número %d%c no es válido\n", n, c);
      clean_stdin();
      control = false;
    } else {
      printf("prueba");
      if(n >= 0) {
printf("El binario de %d es: ", n);
cambioBinario(n);
control = true;
      }
    }
  } while(control == false || n < 0);

  return 0;
}

Muchas gracias de antemano
20  Programación / Scripting / Re: [SH] Error al ejecutar script, [: falta un `]' en: 21 Febrero 2016, 20:37 pm
#!/bin/sh
echo Introduzca el formato, 1 tar, 2 tar.gz, 3 tar.bz2
read format
if [ $format -eq 1 ];then
        tar cf $1.tar $1
        echo Se ha comprimido $1 en $1.tar
elif [ $format -eq 2 ];then
        tar czf $1.tar.gz $1
        echo Se ha comprimido $1 en $1.tar.gz
elif [ $format -eq 3 ];then
        tar cjf $1.tar.bz2 $1
        echo Se ha comprimido $1 en $1.tar.bz2
else
        echo Formato no incluido, reinicie el script
fi


La variable format dentro del if va sin comillas y los iguales se pone -eq (=)


Me sigue dando el mismo error, cambiando exactamente lo que me has dicho sigue sin funcionar.  :-(

[EDITO]Al final lo solucioné, el problema estaba que entre los números y el corchete no había un espacio.
Si a alguién más tiene ese mismo error ya sabes cual es el origen. Muchas gracias a wuwu8 por su ayuda
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines