CTFs and solutions

This commit is contained in:
emln
2025-04-27 19:24:27 +02:00
commit aa0fe54b3b
426 changed files with 2756 additions and 0 deletions

View File

@ -0,0 +1,81 @@
#include <stdio.h>
#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/err.h>
#include <string.h>
#define MAXBUF 1024
void handle_errors(){
ERR_print_errors_fp(stderr);
abort();
}
int main(int argc, char **argv){
unsigned char key[] = "keykeykeykeykeykey";
if(argc != 3){
fprintf(stderr,"Invalid parameters. Usage: %s filename\n",argv[0]);
exit(1);
}
FILE *f_in,*f_in2;
if((f_in = fopen(argv[1],"r")) == NULL) {
fprintf(stderr,"Couldn't open the input file, try again\n");
exit(1);
}
if((f_in2 = fopen(argv[2],"r")) == NULL) {
fprintf(stderr,"Couldn't open the second input file, try again\n");
exit(1);
}
//EVP_MD_CTX *EVP_MD_CTX_new(void);
//pedantic mode? Check if md == NULL
EVP_MD_CTX *hmac_ctx = EVP_MD_CTX_new();
//int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
// int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
// Returns 1 for success and 0 for failure.
EVP_PKEY *hkey;
hkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, key, 18);
if(!EVP_DigestSignInit(hmac_ctx, NULL, EVP_sha256(), NULL, hkey))
handle_errors();
size_t n;
unsigned char buffer[MAXBUF];
while((n = fread(buffer,1,MAXBUF,f_in)) > 0){
// Returns 1 for success and 0 for failure.
if(!EVP_DigestSignUpdate(hmac_ctx, buffer, n))
handle_errors();
}
unsigned char buf2[MAXBUF];
while((n = fread(buf2,1,MAXBUF,f_in2)) > 0){
if(!EVP_DigestSignUpdate(hmac_ctx, buf2, n))
handle_errors();
}
unsigned char hmac_value[EVP_MD_size(EVP_sha256())];
size_t hmac_len = EVP_MD_size(EVP_sha256());
//int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned size_t *s);
// EVP_DigestSignFinal(hmac_ctx, NULL, &hmac_len);
if(!EVP_DigestSignFinal(hmac_ctx, hmac_value, &hmac_len))
handle_errors();
// void EVP_MD_CTX_free(EVP_MD_CTX *ctx);
EVP_MD_CTX_free(hmac_ctx);
printf("The HMAC is: ");
for(int i = 0; i < hmac_len; i++)
printf("%02x", hmac_value[i]);
printf("\n");
return 0;
}

3
openssl-hmac/file.txt Normal file
View File

@ -0,0 +1,3 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

7
openssl-hmac/file2.txt Normal file
View File

@ -0,0 +1,7 @@
In placerat sagittis efficitur. Vestibulum id erat pharetra, ultricies elit vitae, maximus nisi. Mauris placerat ipsum ac arcu fringilla, et placerat erat blandit. Ut eget ligula id tortor vehicula lacinia a eu dui. Praesent vestibulum, nibh a euismod fringilla, elit eros tempor ex, vitae luctus urna dui pellentesque mauris. Ut viverra quam in eleifend pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus.
Sed bibendum a velit et dignissim. Phasellus euismod fringilla augue, ut iaculis nibh vestibulum et. Maecenas molestie enim ac ligula dignissim placerat. Sed bibendum, odio ac gravida mattis, tellus eros posuere risus, vitae sagittis metus diam sed orci. Suspendisse pulvinar tortor nec metus iaculis congue. Aenean egestas leo ac dignissim vulputate. Etiam tempus justo tellus, nec elementum magna pulvinar at. Praesent justo eros, ultricies nec gravida vitae, cursus a ipsum. Integer semper quam nunc. Mauris pulvinar ultricies varius. Proin velit enim, dapibus vitae lorem id, facilisis sodales ligula. Aenean fermentum ante a semper mattis. Fusce finibus ullamcorper nisi, ac commodo tortor. Donec urna augue, gravida in erat a, vehicula pulvinar lacus.
Sed non erat at nisl facilisis consectetur. Cras fringilla diam et neque varius sollicitudin. Proin lacinia dui vel quam venenatis, id mollis ante ullamcorper. Vivamus nisl mi, convallis a dolor et, pellentesque congue est. Nulla dictum et massa ut egestas. Nunc porta commodo arcu eu egestas. Nullam ut mollis diam. Mauris vulputate, magna ultricies ullamcorper venenatis, purus elit consectetur ipsum, ac dictum magna ante a ex. Ut posuere fermentum sapien. Mauris accumsan mattis ex quis dictum.
Maecenas at augue eu sem egestas rhoncus vitae at nisi. Proin faucibus tincidunt ipsum at molestie. Praesent et condimentum tortor, id eleifend elit. Fusce interdum congue magna eget dapibus. Pellentesque a odio laoreet arcu tempus venenatis at vitae nisl. In venenatis dapibus velit eu semper. Etiam orci lorem, dignissim et lorem at, malesuada sollicitudin nulla. Sed egestas iaculis metus. Curabitur cursus interdum gravida. Donec ultrices dictum mi vel varius. Nunc ex ante, blandit eu rhoncus sed, volutpat non massa. Nam sed molestie ipsum.

BIN
openssl-hmac/hex Executable file

Binary file not shown.

BIN
openssl-hmac/hmac Executable file

Binary file not shown.

83
openssl-hmac/hmac.c Normal file
View File

@ -0,0 +1,83 @@
#include <stdio.h>
#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/err.h>
#include <string.h>
#define MAXBUF 1024
void handle_errors(){
ERR_print_errors_fp(stderr);
abort();
}
int main(int argc, char **argv){
unsigned char key[] = "keykeykeykeykeykey";
if(argc != 3){
fprintf(stderr,"Invalid parameters. Usage: %s filename filename\n",argv[0]);
exit(1);
}
FILE *f_in1,*f_in2;
if((f_in1 = fopen(argv[1],"r")) == NULL) {
fprintf(stderr,"Couldn't open the first input file, try again\n");
exit(1);
}
if((f_in2 = fopen(argv[2],"r")) == NULL) {
fprintf(stderr,"Couldn't open the second input file, try again\n");
exit(1);
}
//EVP_MD_CTX *EVP_MD_CTX_new(void);
//pedantic mode? Check if md == NULL
EVP_MD_CTX *hmac_ctx = EVP_MD_CTX_new();
//int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
// int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
// Returns 1 for success and 0 for failure.
EVP_PKEY *hkey;
hkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, key, 16);
if(!EVP_DigestSignInit(hmac_ctx, NULL, EVP_sha256(), NULL, hkey))
handle_errors();
size_t n;
unsigned char buffer[MAXBUF];
while((n = fread(buffer,1,MAXBUF,f_in1)) > 0){
// Returns 1 for success and 0 for failure.
if(!EVP_DigestSignUpdate(hmac_ctx, buffer, n))
handle_errors();
}
size_t n2;
unsigned char buffer2[MAXBUF];
while((n2 = fread(buffer2,1,MAXBUF,f_in2)) > 0){
// Returns 1 for success and 0 for failure.
if(!EVP_DigestSignUpdate(hmac_ctx, buffer2, n2))
handle_errors();
}
unsigned char hmac_value[EVP_MD_size(EVP_sha256())];
size_t hmac_len = EVP_MD_size(EVP_sha256());
//int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned size_t *s);
// EVP_DigestSignFinal(hmac_ctx, NULL, &hmac_len);
if(!EVP_DigestSignFinal(hmac_ctx, hmac_value, &hmac_len))
handle_errors();
// void EVP_MD_CTX_free(EVP_MD_CTX *ctx);
EVP_MD_CTX_free(hmac_ctx);
printf("CRYPTO25{");
for(int i = 0; i < hmac_len; i++)
printf("%02x", hmac_value[i]);
printf("}");
return 0;
}