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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: Programa para cifrar archivo de texto en: 15 Mayo 2023, 23:13 pm
Se me pasó este detalle: las bibliotecas están en la sección CXXFLAGS de tu makefile. Es en LIBS donde deberían ir. Si pusiste -lssl y -lcrypto en la sección de parámetros para el compilador en Dev-C++, ese fue el error. Deberías haberlo hecho en los parámetros para el enlazador/linker. Eso debería arreglar el problema, si aún te interesa hacerlo en C++.

Gracias pero ya lo tengo todo hecho en Python, incluso con interfaz gráfica, es todo mucho mas fácil y sencillo.

Un saludo
2  Programación / Programación C/C++ / Re: Programa para cifrar archivo de texto en: 14 Mayo 2023, 11:03 am
¿Pero hiciste siquiera lo que te dije de asegurarte de que esos archivos .a estén en la ruta indicada: "C:/Program Files/OpenSSL-Win64/lib"? No en un subdirectorio de esa ruta sino en esa ruta exacta. Primero verifica eso, pues si no están ahí, el problema no se va a arreglar mágicamente instalando y desinstalando cosas sino configurando la ruta correcta. Y eso es con todos los compiladores.

Por supuesto que lo hice, he llegado incluso a copiar los lib e includes de Openssl directamente en las carpetas correspondientes que tiene Dev-C++ y aún así tampoco los encuentra, es totalmente ridículo que este programa no sea capaz de encontrar un archivo aunque le digas donde está.

Al final lo he hecho en Python con Visual Studio Code, y ha funcionado a la primera, la facilidad con que instalas la libreria pycryptodome y lo sencillo que es todo comparado con Dev-C++, es impresionante, nada que ver.

Desde luego Dev-C++ no te pone las cosas nada fáciles a la hora de programar, me ha decepcionado bastante.

Gracias por la ayuda, aunque no haya logrado mi objetivo con Dev-C++, pero bueno lo conseguí con Python jeje.
Un saludo.
3  Programación / Programación C/C++ / Re: Programa para cifrar archivo de texto en: 12 Mayo 2023, 19:37 pm
He instalado "Win64OpenSSL-3_1_0.msi" y luego he configurado las variables de entorno tanto en Windows como en el Dev-C++, y he probado también a instalar la versión de 32bits y tampoco funciona, no se que hacer, he buscado info y tutos por la red pero no hay absolutamente nada.
Con Visual Studio es más sencillo todo esto o hay que hacer lo mismo?

Saludos
4  Programación / Programación C/C++ / Re: Programa para cifrar archivo de texto en: 11 Mayo 2023, 14:18 pm
Pues tampoco funciona y sigue tirando el error
Código:
# Project: Encriptador
# Makefile created by Embarcadero Dev-C++ 6.3

CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o
LINKOBJ  = main.o
LIBS     = -L"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib" -L"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/lib" -static-libgcc -L"C:/Program Files/OpenSSL-Win64/lib" -mwindows
INCS     = -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include" -I"C:/Program Files/OpenSSL-Win64/include"
CXXINCS  = -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++" -I"C:/Program Files/OpenSSL-Win64/include"
BIN      = Encriptador.exe
CXXFLAGS = $(CXXINCS) -lssl -lcrypto
CFLAGS   = $(INCS)
DEL      = C:\Program Files (x86)\Embarcadero\Dev-Cpp\devcpp.exe INTERNAL_DEL

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
${DEL} $(OBJ) $(BIN)

$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)

Código:
C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\bin\ld.exe	main.o:main.cpp:(.text+0x4a): undefined reference to `AES_set_encrypt_key'
C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\bin\ld.exe main.o:main.cpp:(.text+0x67): undefined reference to `AES_encrypt'
C:\Users\xxxxxx\Documents\Dev-C\Encriptador\collect2.exe [Error] ld returned 1 exit status
25 C:\Users\xxxxxx\Documents\Dev-C\Encriptador\Makefile.win recipe for target 'Encriptador.exe' failed

Dice que esas referencias no están definidas pero si lo están, alguien me puede explicar donde está el problema? Gracias
5  Programación / Programación C/C++ / Re: Programa para cifrar archivo de texto en: 7 Mayo 2023, 23:12 pm
Pues es justo lo que el warning te dice: la función AES_set_encrypt_key está en proceso de obsolescencia y se desaconseja su uso. Lo correcto sería que busques cuál función la sustituye en OpenSSL 3.0 y la uses en su lugar. O si no quieres hacer eso, podrías simplemente desactivar esa advertencia con la opción: -Wno-deprecated-declarations.

Entiendo, gracias por la ayuda.
6  Programación / Programación C/C++ / Programa para cifrar archivo de texto en: 6 Mayo 2023, 17:25 pm
Hola, estoy tratando de compilar este código y DEV-C++ me tira el error:
7 [Warning] 'int AES_set_encrypt_key(const unsigned char*, int, AES_KEY*)' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]

Como lo arreglo? porque no me lo compila:
Código:
#include <openssl/aes.h>
#include <stdio.h>
#include <string.h>

void encrypt_AES(const unsigned char *plaintext, int plaintext_len, const unsigned char *key, unsigned char *ciphertext) {
    AES_KEY aes_key;
    AES_set_encrypt_key(key, 128, &aes_key);
    AES_encrypt(plaintext, ciphertext, &aes_key);
}

int main() {
const char *filename = "archivo.txt";
    const unsigned char key[] = "clave secreta";
    const int block_size = 12;
    unsigned char plaintext[block_size];
    unsigned char ciphertext[block_size];

    // Leer el archivo de texto
    FILE *file = fopen(filename, "rb");
    if (file == NULL) {
        printf("Error al abrir el archivo.\n");
        return 1;
    }
    fread(plaintext, block_size, 1, file);
    fclose(file);

    // Cifrar el archivo de texto
    encrypt_AES(plaintext, block_size, key, ciphertext);

    // Escribir el archivo cifrado
    FILE *output_file = fopen("archivo_cifrado.txt", "wb");
    if (output_file == NULL) {
        printf("Error al crear el archivo cifrado.\n");
        return 1;
    }
    fwrite(ciphertext, block_size, 1, output_file);
    fclose(output_file);

    printf("Archivo cifrado exitosamente.\n");
    return 0;
}
7  Programación / Programación C/C++ / Re: Problema con llamadas entre funciones. en: 19 Diciembre 2018, 21:48 pm
Genial, me lo apunto para la próxima.  ;-)
8  Programación / Programación C/C++ / Re: Problema con llamadas entre funciones. en: 19 Diciembre 2018, 16:54 pm
Gracias tio, mira para empezar estaba desarrollando mal el ejercicio, no lo terminaba de entender hasta que me he dado cuenta que no hay que comprobar si el número introducido por el usuario es primo o no, simplemente ese número marca el límite de la comprobación en la búsqueda del primo mayor, y reconozco que me ha costado  :xD

Ya lo he resuelto, el código quedaría mas o menos así, también he añadido la llamada a esPrimo() desde la función primoMayor() porque no estaba utilizando la función tal y como se pide en el ejercicio.

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

int esPrimo(int num) {
    int i;
    for (i=2; i<=sqrt(num); i++) {
        if (num%i == 0) {
            return 0;
        }
    }
    return 1;
}

int primoMayor(int num){
    int n, mayor;

    for (n=2;n<=num;n++){
        if (esPrimo(n))
            mayor=n;
    }
    return mayor;
}

int main() {
    int num, x, mayor;

    do {
    printf("Introduce un número superior a 1: ");
    scanf("%d", &num);
    } while (num<0);

    x=num;
    mayor=primoMayor(x);

    printf("El mayor primo comprendido entre 2 y %d es %d\n", num, mayor);
    return 0;
}

Saludos!
9  Programación / Programación C/C++ / Re: Problema con llamadas entre funciones. en: 19 Diciembre 2018, 12:58 pm
Y como lo hago, con esto por ejemplo?
Código:
return mayor;

Me estoy dando cuenta que a la función primoMayor accede 2 veces y no se porqué  :-\
10  Programación / Programación C/C++ / Re: Problema con llamadas entre funciones. en: 19 Diciembre 2018, 12:14 pm
Otro intento

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

int esPrimo(int num) {
    int i;
    for (i=2; i<=sqrt(num); i++) {
        if (num%i == 0) {
            return 0;
        }
    }
    return 1;
}

int primoMayor(int num){
    int n, mayor;

    for (n=2;n<=num;n++) // bucle para encontrar el número mayor
    {
        if (esPrimo(n))
            mayor=esPrimo(n);
    }
    return;
}

int main() {
    int num, n, i, mayor;

    do {
    printf("Introduce un número superior a 1: ");
    scanf("%d", &num);
    } while (num<0);

    i=num; // muevo el valor de num a i

    if (esPrimo(num)){
        primoMayor(i); // si el número introducido  es primo envío a la función primoMayor el valor
    }
    else {
    printf("El número %d no es primo.\n", num);
    return 0;
    }

    printf("El mayor primo comprendido entre 2 y %d es %d\n", num, primoMayor(num));
    return 0;
}

He hecho algunas modificaciones al código pero sigue sin funcionar correctamente, se que no hago bien alguno de los pasos, a ver si tu puedes ayudarme a entenderlo, gracias.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines