#ifndef __LIB3_H__ #define __LIB3_H__ #include #include #include #include #include #include #define BLOCKSIZE 16 #define MT_19937_N 624 // needed for initialization #define MT_19937_F 0x6C078965 // word size #define MT_19937_W 32 #define MT_19937_UPPER_MASK 0x80000000 #define MT_19937_LOWER_MASK 0x7fffffff struct mt_19937_state { unsigned int mt[MT_19937_N]; unsigned int index; }; char *challenge17_encrypt(int *length); int cbc_padding_oracle(char *encrypted, int length); int aes_ctr(char *in, int length_in, char *out, char *string_key, char *nonce); void mt_19937_seed(unsigned int seed, struct mt_19937_state *mt_state); unsigned int mt_19937(struct mt_19937_state *mt_state); unsigned int mt_19937_timestamp_orcale(struct mt_19937_state *mt_state); void mt_19937_brute_force_timestamp(); int unshift_left_xor(int number, int shifts, unsigned int mask); int unshift_right_xor(int number, int shifts); int mt_19937_stream_cipher(char *in, int length_in, char *out, int seed); int mt_19937_stream_cipher_oracle(char *in, int length_in, char *out); int crack_mt_19937_stream_cipher_16_bit_seed(char *ciphertext, int length_ciphertext, char *plaintext, char *match); unsigned int mt_19937_password_token(); int mt_19937_password_token_time_based(unsigned int password_token, int time_window); #endif