summaryrefslogtreecommitdiff
path: root/extract_decoded_executable/extractor.c
diff options
context:
space:
mode:
Diffstat (limited to 'extract_decoded_executable/extractor.c')
-rw-r--r--extract_decoded_executable/extractor.c18
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;
}