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.
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úCitarError: EPERM: operation not permitted, open 'C:\Users\José Luis\.atom\compile-cache\less\40e22529c8729b65e1d700a7ae3f73d57ed1288f\imports.json'gracias por adelantado.
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)
Cita de: AlbertoBSD en 1 Abril 2016, 06:50 AMMuy interesante, lo probaré, muchas gracias.
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.
Cita de: LaiaxanIV en 30 Marzo 2016, 20:37 PMSi no los cifro no daría ya la información de donde están? o lo que me propones es que los borre?
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.
Cita de: kub0x en 30 Marzo 2016, 19:39 PMNo 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...
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!
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
//Here all constant are defined
#define MAX_TEXT 1048576
#define MAX_PASS 64
#define VERSION "0.4.2"
/*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;
}
#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);
}