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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cifrador root 13
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cifrador root 13  (Leído 4,855 veces)
Søra

Desconectado Desconectado

Mensajes: 260

"Piensa por ti mismo"Antifascismo Antiracismo


Ver Perfil
Cifrador root 13
« en: 15 Diciembre 2010, 16:16 pm »

Ola a todos he intentado hacer un codigo que cifre un archivo en root 13 y el gcc me da error solo 1 no e logrado solucionar.

Código
  1. #include <stdio.h>
  2. #define root 13
  3. main() {
  4. printf("¿Número de carácteres?\n");
  5. int num;
  6. scanf("%i",&num);
  7. char vector[num];
  8. int c;
  9. FILE *comprob;
  10. comprob = fopen("archivo.txt","rb");
  11. if (comprob==NULL) {
  12. printf("No existe el archivo\n"); }
  13. else {
  14. int i;
  15. for (i=0; i<num; i++) {
  16.          c = fgetc(comprob);
  17.          vector[i]=c;}
  18.  
  19. vector[i] = '\0';
  20. fclose(comprob);
  21. int a,b;
  22.  
  23. char z,buffer2[58],buffer3[10000];
  24. buffer2 = *"abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
  25. for (a=0; a<num; a++) {
  26.        for (b=0; b<58; b++) {
  27.            if (vector[a]==buffer2[b]) {
  28.                    z = a + root;
  29.                    buffer3[a] = buffer2[z]; }}}}
  30.             return 0;}

el error del gcc es:

Código:
codesC# gcc cifrador.c
cifrador.c: In function ‘main’:
cifrador.c:24: error: incompatible types when assigning to type ‘char[58]’ from type ‘char’


En línea






Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.
pucheto

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Cifrador root 13
« Respuesta #1 en: 15 Diciembre 2010, 16:47 pm »

El * que pusiste en frente de
Código
  1. buffer2 = *"abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
es el problema.

De todas formas tu error es quererle asignar a un array otro puntero... lo q tenes q hacer es un memcpy..


En línea

Søra

Desconectado Desconectado

Mensajes: 260

"Piensa por ti mismo"Antifascismo Antiracismo


Ver Perfil
Re: Cifrador root 13
« Respuesta #2 en: 15 Diciembre 2010, 17:13 pm »

Acabo de leer como va el funcionamiento del memcpy sirve para copiar los primeros terminos de un objeto a otro pero no se como aplicarlo ya que yo no copio los n primeros terminos solo 1 no?? donde deberia ponerlo..
En línea






Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Cifrador root 13
« Respuesta #3 en: 15 Diciembre 2010, 18:28 pm »

La verdad no se lo que intentas hacer con el archivo. XD
Código
  1. char buffer2[58] = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
En línea

Te vendería mi talento por poder dormir tranquilo.
Søra

Desconectado Desconectado

Mensajes: 260

"Piensa por ti mismo"Antifascismo Antiracismo


Ver Perfil
Re: Cifrador root 13
« Respuesta #4 en: 15 Diciembre 2010, 18:38 pm »

Da= :) si lo cambio me da este error:

Código:
cifrador.c:24: error: incompatible types when assigning to type ‘char[58]’ from type ‘char *’
En línea






Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.
pucheto

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Cifrador root 13
« Respuesta #5 en: 15 Diciembre 2010, 19:24 pm »

Pensa a los arrays como punteros...

vos queres hacer algo asi:
Código
  1. char buf[58]; //reservo un array del tamaño q quiero.
  2. memcpy(buf,"abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+",58); //aclaro una cosa, el string ese q vos pones tiene tamaño 59, ya que como es un string, tiene un '/0' al final, pero copio solo lo q me interesa q es hasta el 58.
  3.  

No probé compilar pero debería andar.

Un poco sobre memcpy... hay un ejemplo bastante claro al final...
http://www.cplusplus.com/reference/clibrary/cstring/memcpy/

Código
  1. for (i=0; i<num; i++) {
  2.          c = fgetc(comprob);
  3.          vector[i]=c;
  4. }
  5. vector[i] = '\0'; //Aca el seg fault
  6.  
Estoy casi seguro q da segmentation fault.
Pq al salir del ciclo i es igual a num, entonces te pasas en 1 el tamaño del arreglo, pero creo, no me puse a analizar bien.
« Última modificación: 15 Diciembre 2010, 19:37 pm por pucheto » En línea

Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Cifrador root 13
« Respuesta #6 en: 15 Diciembre 2010, 20:34 pm »

si no vas a modificar la cadena puedes hacer esto:
Código
  1. char* buffer2 = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
  2.  
y si lo piensas modificar haz esto antes del main:
Código
  1. char buffer2[] = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
  2.  
En línea

Søra

Desconectado Desconectado

Mensajes: 260

"Piensa por ti mismo"Antifascismo Antiracismo


Ver Perfil
Re: Cifrador root 13
« Respuesta #7 en: 15 Diciembre 2010, 21:59 pm »

Vale jeje creo que a sido una giñada de codigo :) el objetivo era cifrar un archivo de texto con root 13 pero algo deve fallar, he quitado la "b" a la hora de abrir archivos para que no los abra en modo binario pero aun asi cuando cifra el archivo da un tipo de archivo no reconocido y al descifrarlo pasa =, dejo el codigo.

CIFRADOR
Código
  1. #include <stdio.h>
  2. #define root 13
  3. main() {
  4. char z,buffer3[10000];
  5. printf("¿Número de carácteres?\n");
  6. int num;
  7. scanf("%i",&num);
  8. char vector[num];
  9. int c;
  10. FILE *comprob;
  11. comprob = fopen("archivo.txt","r");
  12. if (comprob==NULL) {
  13. printf("No existe el archivo\n"); }
  14. else {
  15. int i;
  16. for (i=0; i<num; i++) {
  17.          c = fgetc(comprob);
  18.          vector[i]=c;}
  19.  
  20. vector[i] = '\0';
  21. fclose(comprob);
  22. int a,b;
  23.  
  24.  
  25. char* buffer2 = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
  26. for (a=0; a<num; a++) {
  27.        for (b=0; b<58; b++) {
  28.            if (vector[a]==buffer2[b]) {
  29.                    z = a + root;
  30.                    buffer3[a] = buffer2[z]; }}}}
  31. FILE *comprobfin;
  32. comprobfin = fopen ("cifrado.txt","w+");
  33.  
  34. int d;
  35. for (d=0; d<num; d++) {
  36. fputc (buffer3[d],comprobfin); }
  37.             return 0;}

DESCIFRADOR
Código
  1. #include <stdio.h>
  2. #define root 13
  3. main() {
  4. char z,buffer3[10000];
  5. printf("¿Número de carácteres?\n");
  6. int num;
  7. scanf("%i",&num);
  8. char vector[num];
  9. int c;
  10. FILE *comprob;
  11. comprob = fopen("cifrado.txt","r");
  12. if (comprob==NULL) {
  13. printf("No existe el archivo\n"); }
  14. else {
  15. int i;
  16. for (i=0; i<num; i++) {
  17.          c = fgetc(comprob);
  18.          vector[i]=c;}
  19.  
  20. vector[i] = '\0';
  21. fclose(comprob);
  22. int a,b;
  23.  
  24.  
  25. char* buffer2 = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
  26. for (a=0; a<num; a++) {
  27.        for (b=0; b<58; b++) {
  28.            if (vector[a]==buffer2[b]) {
  29.                    z = a - root;
  30.                    buffer3[a] = buffer2[z]; }}}}
  31. FILE *comprobfin;
  32. comprobfin = fopen ("archivo.txt","w+");
  33.  
  34. int d;
  35. for (d=0; d<num; d++) {
  36. fputc (buffer3[d],comprobfin); }
  37.             return 0;}

a ver si me ayudan :(
« Última modificación: 15 Diciembre 2010, 22:28 pm por Søra » En línea






Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necisito Un encriptador o cifrador
Software
Leon2010 2 2,439 Último mensaje 18 Mayo 2010, 11:00 am
por musicman
[PROYECTO]Desarrollo de un cifrador indetectable « 1 2 3 »
Análisis y Diseño de Malware
ErOzE 22 13,262 Último mensaje 5 Marzo 2011, 22:52 pm
por ErOzE
Crypter - Cifrador de Archivos - Universal
Programación General
traviatØ 5 5,436 Último mensaje 28 Julio 2011, 01:41 am
por [Case]
Mi programa cifrador de datos. (criptografia).
Programación C/C++
elkiy 5 7,468 Último mensaje 30 Mayo 2013, 03:37 am
por dato000
El cifrador de Polybios
Java
Tronos154 2 5,810 Último mensaje 26 Enero 2016, 21:30 pm
por Tronos154
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines