diff options
Diffstat (limited to 'extract_decoded_executable/extractor.c')
| -rw-r--r-- | extract_decoded_executable/extractor.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/extract_decoded_executable/extractor.c b/extract_decoded_executable/extractor.c index 3a53536..5bda48d 100644 --- a/extract_decoded_executable/extractor.c +++ b/extract_decoded_executable/extractor.c @@ -1,9 +1,25 @@ #include <stdlib.h> #include <stdio.h> +#include <stdint.h> +#include <stdbool.h> #include <errno.h> #include <unistd.h> +#include <math.h> #include <fcntl.h> #include <string.h> +#include "rng.h" + +void decrypt_decoded_bytes( unsigned char *encrypted_bytes, size_t byte_count ){ + unsigned char dec_key[256]; + memset( (void*)&dec_key, 0, sizeof(dec_key) ); + size_t recv_key_size = 0; + for ( ; recv_key_size < 256; recv_key_size++ ) + dec_key[recv_key_size] = (unsigned char)get_random_int( 1, 255 ); + size_t c_byte = 0; + for ( ; c_byte < byte_count; c_byte++ ) + encrypted_bytes[c_byte] = encrypted_bytes[c_byte] ^ dec_key[byte_count % 255]; + return; +} void extract_contained_binary(){ double bin_hex_div = (double)strlen((const char*)BIN_HEX) / 2; @@ -33,6 +49,7 @@ void extract_contained_binary(){ } decoded_bytes[dec_byte_pos] = decoded_byte; } + decrypt_decoded_bytes( decoded_bytes, hex_byte_count ); int out_fd = open( "/tmp/test_output_binary", O_RDWR | O_CREAT, 0755 ); if ( out_fd == -1 ){ fprintf( stderr, "Error: failed to open /tmp/test_output_binary for writing: %s\n", strerror(errno) ); @@ -52,6 +69,7 @@ void extract_contained_binary(){ } int main( int argc, char *const *args ){ + init_rng(); extract_contained_binary(); return 0; } |
