int main (int argc, char *argv[]) { unsigned int block_size, ecb_mode; unsigned char *decoded_string; // Block size detection block_size = aes_detect_block_size( (aes_detect_block_size_encrypt) &encrypt); printf("Block size used : %d \n", block_size ); // ECB mode detection ecb_mode = aes_ecb_detection_oracle( (aes_encrypt) &encrypt, block_size ); printf("ECB Encryption mode : %s \n", ecb_mode ? "Yes" : "No" ); // init resulting text buffer size_t secret_padded_len = get_secret_len(); if (secret_padded_len % block_size) secret_padded_len += block_size - (secret_padded_len % block_size); decoded_string = malloc(sizeof(unsigned char)*(secret_padded_len + 1)); if (NULL == decoded_string) return 0x00; plain = malloc(sizeof(unsigned char)*secret_padded_len); if (NULL == plain) return 0x00; memset(plain, 0 , sizeof(unsigned char)*secret_padded_len); memset(decoded_string, 0, sizeof(unsigned char)*(secret_padded_len + 1)); // Decryption unsigned int block_idx; for (block_idx = 0; block_idx*block_size < get_secret_len(); block_idx++) detect_block(decoded_string, block_idx, block_size); printf("Decoded String : %s \n", decoded_string ); free(decoded_string); free(plain); return 0x00; }
static void scan_journal(FILE *out, journal_superblock_t *jsb, char *buf, int len, uint64_t *blocknum, uint64_t *last_unknown) { char *block; char *p; enum dump_block_type type; journal_header_t *header; p = buf; while (len) { block = p; header = (journal_header_t *)block; if (header->h_magic == ntohl(JBD2_MAGIC_NUMBER)) { if (*last_unknown) { dump_jbd_unknown(out, *last_unknown, *blocknum); *last_unknown = 0; } dump_jbd_block(out, jsb, header, *blocknum); } else { type = detect_block(block); if (type == DUMP_BLOCK_UNKNOWN) { if (*last_unknown == 0) *last_unknown = *blocknum; } else { if (*last_unknown) { dump_jbd_unknown(out, *last_unknown, *blocknum); *last_unknown = 0; } dump_jbd_metadata(out, type, block, *blocknum); } } (*blocknum)++; p += gbls.fs->fs_blocksize; len -= gbls.fs->fs_blocksize; } return; }