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 - JoseluCross

#1
Según dice el error es que pickle no está definido, yo comprobaría que realmente esa librería está importada correctamente porque no es un problema del binario, es un NameError.
#2
Hola a todos, como parte de un trabajo de la universidad el profesor nos ha pedido hacer una sopa de letras, la sopa ya la hicimos pero ahora nos pide que se cierre si se pulsa Escape en cualquier momento. He estado probando con getchar() pero me obliga a pulsar retorno de carro y no me sirve. He leido que existe una funcion llamada getch() de conio.h pero ni el programa está en windows ni nos dejan usar librerias no estandar.

Agradecería mucho la ayuda ya que el profesor se niega a decirnoslo y me estoy volviendo un poco loco. No hace falta que me digan exactamente que hacer (tampoco os lo voy a impedir  :P), me basta con hacerme una idea de por donde van los tiros. Lo mas importante es que baste con el boton para cerrarse, sin tener que pulsar retorno de carro. No descarto la posibilidad que no se pueda a este nivel de C y el profesor lo haya hecho para que no podamos... en fin. Muchas gracias por su tiempo.
#3
Windows / Atom.io no funciona en windows 10
2 Abril 2016, 11:40 AM
Hola a todos, me he desccargado atom para windows, lo uso mucho en linux y me gustó mucho pero cuando entro me aparece esta imagen tan poco afortunada
El mensaje de error total es
CitarError: EPERM: operation not permitted, open 'C:\Users\José Luis\.atom\compile-cache\less\40e22529c8729b65e1d700a7ae3f73d57ed1288f\imports.json'
    at Error (native)
    at Object.fs.openSync (fs.js:549:18)
    at Object.module.(anonymous function) [as openSync] (ATOM_SHELL_ASAR.js:137:20)
    at Object.fs.writeFileSync (fs.js:1171:15)
    at Object.fsPlus.writeFileSync (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\node_modules\fs-plus\lib\fs-plus.js:279:17)
    at LessCache.module.exports.LessCache.writeJson (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\node_modules\less-cache\lib\less-cache.js:155:17)
    at LessCache.module.exports.LessCache.setImportPaths (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\node_modules\less-cache\lib\less-cache.js:113:12)
    at new LessCache (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\node_modules\less-cache\lib\less-cache.js:32:12)
    at new LessCompileCache (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\less-compile-cache.js:20:20)
    at ThemeManager.module.exports.ThemeManager.loadLessStylesheet (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\theme-manager.js:270:26)
    at ThemeManager.module.exports.ThemeManager.loadStylesheet (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\theme-manager.js:257:21)
    at ThemeManager.module.exports.ThemeManager.requireStylesheet (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\theme-manager.js:174:24)
    at ThemeManager.module.exports.ThemeManager.reloadBaseStylesheets (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\theme-manager.js:237:12)
    at ThemeManager.module.exports.ThemeManager.loadBaseStylesheets (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\theme-manager.js:232:19)
    at new AtomEnvironment (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\atom-environment.js:250:19)
    at module.exports (C:\Users\José Luis\AppData\Local\atom\app-1.6.2\resources\app.asar\src\initialize-application-window.js:19:19)
    at setupWindow (file:///C:/Users/Jos%C3%A9%20Luis/AppData/Local/atom/app-1.6.2/resources/app.asar/static/index.js:86:5)
    at window.onload (file:///C:/Users/Jos%C3%A9%20Luis/AppData/Local/atom/app-1.6.2/resources/app.asar/static/index.js:41:9)
gracias por adelantado.
#4
Veo por donde vas, me a costado pillarlo pero bueno. Yo cuando hice el arreglo para cambiar la contraseña lo hice pensando en reducir la probabilidad de reconocer patrones y poder deducir el tamaño de la contraseña, claro que pierde toda fuerza una vez conocido el tamaño.
Una cosa que no entiendo ¿por qué 96? son 94 los caracteres del rango ascii que uso.

Cita de: AlbertoBSD en  1 Abril 2016, 06:50 AM
Buen dia pues hice un pequeño programa para tu algoritmo.

La idea que tenia no a funcionado.

El enfoque era estadístico, lo que hice fue generar N arreglos de Enteros donde N es igual al numero de caracteres del mensaje.

El primer arreglo[0] es de longitud 1
El segundo arrega[1] es de longitud 2
y asi sucesivamente.

Guarde las sumas de los valores ascii de cada caracter en los arreglos. Ademas de contar cuantas veces se sumaba en cada caracter en cada casilla.

Saque los promedios y las desviaciones estandar ademas. saque el promedio de cada arreglo y las desviaciones estandar de las desviaciones estandar valga la redundancia...

Mi idea era ver como cambiaban las desviaciones estandar y me imaginaba que en los puntos de inflexion estaría la pista.

Curiosamente en algunos ejemplos el primer punto de inflexion coincidencia con la longitud de la contraseña, pero en otros no lo hacia.
Muy interesante, lo probaré, muchas gracias.
#5
Cita de: LaiaxanIV en 30 Marzo 2016, 20:37 PM
Casi parece mejor no cifrar los espacios xD
Si conozco donde van los espacios podré saber la longitud de las palabras. Si las conozco sabre que por ejemplo palabras de 2 de longitud contendrán una vocal, si es solo de 1 es probable que sea una vocal o una y...
Recuerda que cuanta más información me des, más fácil será romper el algoritmo.
Si no los cifro no daría ya la información de donde están? o lo que me propones es que los borre?
#6
Cita de: kub0x en 30 Marzo 2016, 19:39 PM
JoseluCross he de comunicarte que tu cifrado tiene una vulnerabilidad en la forma que cifra los espacios, por lo que puedo deducir facilmente la clave de cifrado, me explico poniendo como ejemplo el que tu has puesto antes:
Saludos!
No me había fijado, obviamente necesitas saber donde están pero una ves deducido ya se tiene el valor. Si consideramos lo que planteaba de cambiar los espacios de manera aletoria entre otros caracteres que no perjudiquen a la interpretacion del texto esto no debería ocurrir no? y si tenemos en cuenta lo del texto aleatorio al final quizas los patrones sean algo mas dificiles, aunque claro, al estar al final con ignorar los patrones mas cercanos al final...
Muchas gracias por la anotación. La verdad es se nota lo mucho que sabéis  ;-). Gracias
#7
Ok, entonces una expansión del alfabeto no lo haría mas seguro. Una cosa que se me ocurre, quizás es una tontería de principiante pero total, ya lo soy. ¿Si cambio de manera aleatoria los espacios por caracteres que no afectarían a la interpretación del texto como "-" "_" "~" o el mismo espacio afectaría a la búsqueda de patrones con el espacio o no? Gracias nuevamente, y lo siento si lo que pregunto puede sonar estúpido, soy muy nuevo en esto.
#8
Si, lo veo, pero mi cifrado no es vigenere puro, funciona con ascii(32-126) no con el alfabeto por lo que una mayúscula y una minuscula bajo la misma letra son distintas, los espacios tambien se codifican, las comas, los puntos etc. En ese caso cual es la forma de vulnerar el cifrado. Por ejemplo

CitarOdbHhVaa__lPO_aDTVlV_aSU]VQUOe]aco\DNZSaXf\FKoZRhgOaKoRH]TWI\R`
Sería "este es un mensaje super secreto y nadie nunca lo va a descifrar" con la contraseña HOLA

Muchas gracias, estoy aprendiendo muchisimo
#9
No sabía que el cifrado tenía nombre, gracias por aclararlo.

Conociendo el problema de la estadistica implementamos un sistema para añadir caracteres aleatorios al final del texto cifrado, obviamente no sirve de nada si el atacante conoce la cantidad de caracteres son aleatorios porque siempre se colocan al final, pero si esto es desconocido ¿Es más seguro? Y otra pregunta, ¿cómo se buscan los patrones que mencionáis para ver repeticiones en el texto cifrado? y reconociendo los patrones ¿como tengo que aplicar el criptoanalisis existiendo 94 caracteres posibles? Muchas gracias nuevamente por todas sus opiniones.
#10
Yo uso gcc, la funcion lenght es una función que implementé en el código. El código completo es

Del data.h

//Here all constant are defined

#define MAX_TEXT 1048576
#define MAX_PASS 64
#define VERSION "0.4.2"

del main.c
/*Title: cryptojka
*Descripton: cryptation character by character
*Autor: José Luis Garrido Labrador (JoseluCross) and Kevin Puertas Ruiz (Kprkpr)
*Version: 0.4.2 - mar/16
*/
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include "data.h"

#include "methods.c"

int     clean_stdin(void);
void    crypt(char[], char[], bool, char[]);
int     length(char[]);

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
  bool    cond = false; //If false = not argument
  int     cant = 0; //number of characters in random generation
  char    text[MAX_TEXT] = "text"; //imput character
  char    pass[MAX_PASS] = "pass"; //Imput pass
  FILE   *in; //Input file
  char    out[35] = "crypt.out"; //output file

  //Flags options
  int     i;
  for(i = 0; i < argc; i++) {
    if(strcmp(argv[i], "-e") == 0) {
      state = false;
      cond = true;
    } else if(strcmp(argv[i], "-d") == 0) {
      state = true;
      cond = true;
    } else if(strcmp(argv[i], "-f") == 0) {
      in = fopen(argv[i + 1], "r");
      fil = true;
      cond = true;
    } else if(strcmp(argv[i], "-o") == 0) {
      strcpy(out, argv[i + 1]);
      cond = true;
    } else if(strcmp(argv[i], "-p") == 0) {
      strcpy(pass, argv[i + 1]);
      cond = true;
    } else if(strcmp(argv[i], "-t") == 0) {
      strcpy(text, argv[i + 1]);
      fil = false;
      cond = true;
    } else if(strcmp(argv[i], "-r") == 0) {
      ran = true;
      cant = atoi(argv[i + 1]);
      cond = true;
    } else if(strcmp(argv[i], "--version") == 0
      || strcmp(argv[i], "-v") == 0) {
      printf("cryptoJKA, version: %s\n\n", VERSION);
      return 0;
    } else if(strcmp(argv[i], "-h") == 0) {
      helpbox(); //In methods.c
      return 0;
    }
  }

  if(cond == false) {
    printf("No option specified\n");
    helpbox();
    return 0;
  }

  if(state == false) {
    if(fil == false) {
      crypt(pass, text, false, out);
    } else {
      for(i = 0; feof(in) == 0; i++) {
text[i] = fgetc(in);
      }
      for(i = 0; i < length(text); i++) {
if(text[i] == '\n') {
  text[i] = ' ';
}
      }
      crypt(pass, text, false, out);
    }
    if(ran == true) {
      rangen(cant, out); //In methods.c
    }
  } else {
    if(fil == false) {
      crypt(pass, text, true, out);
    } else {
      for(i = 0; feof(in) == 0; i++) {
text[i] = fgetc(in);
      }

    }
    crypt(pass, text, true, out);
  }

  printf("\n");
  showFile(out, MAX_TEXT);

  return 0;
}

/*
*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);
}

/*
*Title: length
*Description: It count logic string length
*@param l[]: string
*@return m: lenght
*/
int length(char l[]) {
  int     m = 0;
  while(l[m] != '\0') {
    m++;
  }
  return m;
}

y del methods.c es
#include "data.h"

/*
*Title: showFile
*Description: Print in screen a file
*@param n[]:filename
*@param tam: length of file
*/
void showFile(char n[],int tam){
char f[tam];//output string

FILE *show;
show = fopen(n, "r");
fgets(f,tam,show);
printf("%s\n",f);
}

/*
*Title: helpbox
*Description: Show the help menu
*/
void helpbox(){
printf("\n");
printf("\tcryptoJKA from JKA Network - Version: %s\n", VERSION);
printf("\n");
printf("\tThe text must be between ASCII 32 and ASCII 125\n\n");
printf("\tOptions:\n");
printf("\t -f [file_name],\tinput file\n");
printf("\t -o [file_name],\toutput file (default : crypt.out)\n");
printf("\t -p [text],\t\tpassword (default: pass)\n");
printf("\t -t [text],\t\ttext (default: text)\n\t\t\t\t\tIf you put -f and -t, text have preference\n");
printf("\t -e,\t\t\tencrypt mode\n");
printf("\t -d,\t\t\tdecrypt mode\n");
printf("\t -r [number],\t\twith random generation [number of character]\n");
printf("\t -h,\t\t\tshow this box\n");
printf("\t -v, --version,\t\tshow version\n\n");
printf("\t Examples:\n\n");
printf("\t\tcryptojka -e -t \"Example text\" -p password -o file_name -r 600\n");
printf("\t\tcryptojka -d -f file_name -p password\n\n");
}

/*
*Title: random
*Description: It generates random text between ASCII 32 and 126
*@param tam: max length of string
*@param name[]: output name
*/
void rangen(int tam, char name[]){
FILE *out_text;

out_text = fopen(name, "a");

int p;//Generated num
int m;//Relative position
for(m=0;m<tam;m++){
p=(rand() % 95)+32; //p is between 32 and 126
fputc(p, out_text);
}
fclose(out_text);
}