diff --git a/cmd/crc.c b/cmd/crc.c index 98d4f4c..5466869 100644 --- a/cmd/crc.c +++ b/cmd/crc.c @@ -72,17 +72,60 @@ int update_file_crc(unsigned char *addr, unsigned long offset , unsigned int crc static void random_window_bit_change(unsigned char *data, int width, int rounds, int color_range, size_t length, size_t offset) { size_t random_num = 0; + size_t filter_chunk_byte = 0; + size_t change_num = 0; for (int i = 0; i < rounds; i++) { + random_num = 0; do { random_num = randombytes_uniform(length) + offset; + filter_chunk_byte = (random_num - (random_num % ((width * color_range) + 1))); } while((random_num % ((width * color_range) + 1)) == 0); - - if(data[random_num] == 255) { - data[random_num]--; + if(data[filter_chunk_byte] == 0) { + // None Filter Type Change + if(data[random_num] == 255) { + data[random_num]--; + } else { + data[random_num]++; + } + } else if(data[filter_chunk_byte] == 1) { + // Sub Filter Type Change + if(data[random_num] == 255) { + data[random_num]--; + change_num = 1; + } else { + data[random_num]++; + change_num = -1; + } + // Starting after random change + for(int j = 1; j < 2; j++) { + data[random_num+(color_range * j)] = (data[random_num+(color_range * j)] + change_num) % 256; + } + } else if(data[filter_chunk_byte] == 2) { + printf("2\n"); + if(data[random_num] == 255) { + data[random_num]--; + } else { + data[random_num]++; + } + } else if(data[filter_chunk_byte] == 3) { + printf("3\n"); + if(data[random_num] == 255) { + data[random_num]--; + } else { + data[random_num]++; + } + } else if(data[filter_chunk_byte] == 4) { + printf("4\n"); + if(data[random_num] == 255) { + data[random_num]--; + } else { + data[random_num]++; + } } else { - data[random_num]++; + printf("ERROR ;( %ld\n", filter_chunk_byte); } + } return; } @@ -177,11 +220,6 @@ void *random_data_change_thread_call(void *w) { if (searching == 0 && *data->searching == 1) { *data->searching = searching; printf("CUR MESSAGE: %c\n", cur_message); - for(size_t i = 0; i < data->uncom_data_len; i++) { - if (temp_color_data[i] != data->data[i]) { - printf("LEN: %zu\nDIFF: %zu\nNEW: %02X\nOLD: %02X\n", data->uncom_data_len, i, temp_color_data[i], data->data[i]); - } - } memcpy(data->data, temp_color_data, data->uncom_data_len); pthread_mutex_unlock(&data->mutex_lock); break; @@ -213,7 +251,7 @@ size_t generate_offset(unsigned char *data, size_t data_len, size_t iteration) { void random_data_change(unsigned char *color_data, unsigned char *width, size_t length, char *message) { int searching = 1; - int core_count = 1; + int core_count = 24; unsigned int sliding_window = 0; unsigned int compress_data_length = 0; // Needs to be turned into a variable @@ -535,6 +573,15 @@ int main(int argc, char **argv) { printf("%02X ", uncom_data_buff[i]); } printf("\n"); + //for(int k=0;k<20;k++) { + // printf("%d: %d\n", (0+k), uncom_data_buff[0+k]); + //} + //printf("\n"); + //printf("\n"); + //for(int k=0;k<20;k++) { + // printf("%d: %d\n", (24000+k), uncom_data_buff[24000+k]); + //} + printf("\n"); free(idat_data); free(file_data);