This commit is contained in:
Pin
2021-10-07 10:42:55 -04:00
parent 33514e461d
commit 75a6c790d2

38
crc.c
View File

@@ -14,16 +14,18 @@
const long idat_signature = 1229209940;
const long iend_signature = 1229278788;
FILE *zlib_decompress_data(unsigned char *data_chunk, size_t file_length) {
FILE *zlib_decompress_data(unsigned char *data_chunk, size_t file_length, char *buff) {
int ret;
unsigned int have;
z_stream strm;
unsigned char out[CHUNK];
unsigned char in[CHUNK];
size_t sz;
errno=0;
FILE *data_stream = fmemopen(data_chunk, file_length, "r");
FILE *of = open_memstream(NULL, NULL);
FILE *of = NULL;
of = open_memstream(&buff, &sz);
if(data_stream == NULL) {
perror("F MEM OPEN");
}
@@ -71,10 +73,12 @@ FILE *zlib_decompress_data(unsigned char *data_chunk, size_t file_length) {
(void)inflateEnd(&strm);
fclose(data_stream);
return of;
}
FILE *zlib_compress_data(unsigned char *data_chunk, size_t file_length) {
FILE *zlib_compress_data(unsigned char *data_chunk, size_t file_length, char *buff) {
int ret, flush;
unsigned int have;
z_stream strm;
@@ -86,9 +90,11 @@ FILE *zlib_compress_data(unsigned char *data_chunk, size_t file_length) {
int memLevel = 9;
//int strategy = Z_DEFAULT_STRATEGY;
int strategy = Z_FILTERED;
size_t sz;
FILE *data_stream = fmemopen(data_chunk, file_length, "r");
FILE *out_data_stream = open_memstream(NULL, NULL);
FILE *out_data_stream = NULL;
out_data_stream = open_memstream(&buff, &sz);
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
@@ -124,6 +130,8 @@ FILE *zlib_compress_data(unsigned char *data_chunk, size_t file_length) {
} while(flush != Z_FINISH);
assert(ret == Z_STREAM_END);
fclose(data_stream);
(void)deflateEnd(&strm);
return out_data_stream;
}
@@ -197,10 +205,16 @@ void random_data_change(unsigned char *color_data, int width, int length) {
} else {
temp_color_data[random_num]++;
}
FILE *check_data = zlib_compress_data(temp_color_data, length);
char *check_data_buff = NULL;
FILE *check_data = zlib_compress_data(temp_color_data, length, check_data_buff);
size_t check_data_length = 0;
unsigned char *check_data_array = file_to_char_array(check_data, &check_data_length);
fflush(check_data);
fclose(check_data);
free(check_data_buff);
unsigned char full_data[check_data_length+4];
full_data[0] = 0x49;
full_data[1] = 0x44;
@@ -210,10 +224,11 @@ void random_data_change(unsigned char *color_data, int width, int length) {
full_data[i+4] = check_data_array[i];
}
unsigned int temp_crc = crc(full_data, check_data_length);
if ((temp_crc >> (8*3)) == 61 ) {
if ((temp_crc >> (8*3)) == 10 ) {
printf("Found in %zu rounds!\n", rounds);
searching = 0;
}
free(check_data_array);
}
@@ -275,13 +290,18 @@ int change_idat_content(unsigned char *addr, char *message, int accuracy, unsign
// TO STOP DECOMPRESSION CORRUPTION
//temp_idat_data[j] = addr[offset+8+j];
// Decompressing Data
FILE *uncom_data = zlib_decompress_data(temp_idat_data, idat_byte_length);
char *uncom_data_buff = NULL;
FILE *uncom_data = zlib_decompress_data(temp_idat_data, idat_byte_length, uncom_data_buff);
size_t uncom_data_size = 0;
unsigned char *uncom_data_array = file_to_char_array(uncom_data, &uncom_data_size);
printf("UnCom: %zu\n", uncom_data_size);
random_data_change(uncom_data_array, 16, uncom_data_size);
fflush(uncom_data);
fclose(uncom_data);
free(uncom_data_buff);
//printf("Found %d in %d rounds\n", checked_crc ,rounds);
//printf("Full CRC: %08X\n", crcnum);
//printf("Original: %02X\n", idat_data[j]);
@@ -299,7 +319,7 @@ int main() {
FILE *fp;
size_t i = 0;
unsigned long offset = 0;
char message[1];
char message[1] = "";
if(sodium_init() == -1) {
return EXIT_FAILURE;