No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

146 líneas
4.1 KiB

  1. #include <string.h>
  2. #include <assert.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include "src/base64.h"
  6. #include "src/hamming.h"
  7. #include "src/xor.h"
  8. #include "src/common.h"
  9. #include "src/xor_char_finder.h"
  10. void hex_to_base64_test() {
  11. const char test_buff1[] ="49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d";
  12. const char expected_buff1[] ="SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t";
  13. const char test_buff2[] ="4927";
  14. const char expected_buff2[] ="SSH";
  15. const char test_buff3[] ="49";
  16. const char expected_buff3[] ="SB";
  17. const char test_buff4[] ="33";
  18. const char expected_buff4[] ="z";
  19. const char test_buff5[] = "616e79";
  20. const char expected_buff5[] = "YW55";
  21. char output[256];
  22. memset (output,'\0', 256);
  23. hex_to_base64(test_buff1, output, strlen(test_buff1) );
  24. CHECK( memcmp(expected_buff1, output, strlen(expected_buff1)) == 0 );
  25. CHECK( strlen(expected_buff1) == strlen(output));
  26. // test case when there are 2 hex'es
  27. memset (output,'\0', 256);
  28. hex_to_base64(test_buff2, output, strlen(test_buff2) );
  29. CHECK( memcmp(expected_buff2, output, strlen(expected_buff2)) == 0 );
  30. CHECK( strlen(expected_buff2) == strlen(output));
  31. // test case when there is 1 hex
  32. memset (output,'\0', 256);
  33. hex_to_base64(test_buff3, output, strlen(test_buff3) );
  34. CHECK( memcmp(expected_buff3, output, strlen(expected_buff3)) == 0 );
  35. CHECK( strlen(expected_buff3) == strlen(output));
  36. // test case when there is 1 char
  37. memset (output,'\0', 256);
  38. hex_to_base64(test_buff4, output, strlen(test_buff4) );
  39. CHECK( memcmp(expected_buff4, output, strlen(expected_buff4)) == 0 );
  40. CHECK( strlen(expected_buff4) == strlen(output));
  41. memset (output,'\0', 256);
  42. hex_to_base64(test_buff5, output, strlen(test_buff5) );
  43. CHECK( memcmp(expected_buff5, output, strlen(expected_buff5)) == 0 );
  44. CHECK( strlen(expected_buff5) == strlen(output));
  45. }
  46. void convert_string_to_hex_test()
  47. {
  48. const char test_buff1[] = "49276d";
  49. unsigned char out_buff[3];
  50. convert_string_to_hex(test_buff1, strlen(test_buff1), out_buff);
  51. CHECK( out_buff[0] == 0x49
  52. && out_buff[1] == 0x27
  53. && out_buff[2] == 0x6d);
  54. // and back
  55. char out_buf[6];
  56. convert_hex_to_string(out_buff, 3, out_buf);
  57. CHECK( memcmp(out_buf, test_buff1, 6) == 0 );
  58. }
  59. void xor_strings_test()
  60. {
  61. const char i_buf_1[] = "1c0111001f010100061a024b53535009181c";
  62. const char i_buf_2[] = "686974207468652062756c6c277320657965";
  63. char out_buf[36];
  64. unsigned char buf[36/2];
  65. xor_strings(i_buf_1, i_buf_2, buf);
  66. convert_hex_to_string(buf, 36/2, out_buf);
  67. CHECK( memcmp(out_buf, "746865206b696420646f6e277420706c6179", 36) == 0);
  68. }
  69. void hamming_test()
  70. {
  71. unsigned char msg[256];
  72. const unsigned char ch1[]="this is a test";
  73. const unsigned char ch2[]="wokka wokka!!!";
  74. sprintf((char*)msg, "GOT: %d", block_distance(ch1, ch2,14));
  75. CHECK(block_distance(ch1,ch2, 14) == 37, msg);
  76. const unsigned char ch3[]="test1";
  77. const unsigned char ch4[]="test3";
  78. sprintf((char*)msg, "GOT: %d", block_distance(ch3, ch4,5));
  79. CHECK(block_distance(ch3,ch4,5)==1, msg);
  80. const unsigned char ch5[]={0x01, 0x03};
  81. const unsigned char ch6[]={0x02, 0x02};
  82. sprintf((char*)msg, "GOT: %d", block_distance(ch5, ch6,2));
  83. CHECK(block_distance(ch5,ch6,2)==3, msg);
  84. }
  85. void base64_to_hex_test()
  86. {
  87. const unsigned char ch2[]="TWFuTWFu"; // 0x41 0x61 0x6E 0x41 0x61 0x6E
  88. const unsigned char ch3[]="YW55IGNhcm5hbCBwbGVhc3U=";
  89. unsigned char out[6];
  90. unsigned char out3[17];
  91. unsigned char expected[6] = {0x4D, 0x61, 0x6E, 0x4D, 0x61, 0x6E};
  92. unsigned char expected3[] = {0x61, 0x6e, 0x79, 0x20, 0x63, 0x61, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x75};
  93. base64_to_hex(ch2, 8, out);
  94. base64_to_hex(ch3, 17, out3);
  95. CHECK( memcmp(expected, out, 6) == 0 );
  96. CHECK( memcmp(expected3, out3, 6) == 0 );
  97. }
  98. void c2b_test()
  99. {
  100. CHECK( c2b('A') == 0 );
  101. CHECK( c2b('L') == 11 );
  102. CHECK( c2b('Z') == 25 );
  103. CHECK( c2b('a') == 26 );
  104. CHECK( c2b('z') == 51 );
  105. CHECK( c2b('0') == 52 );
  106. CHECK( c2b('5') == 57 );
  107. CHECK( c2b('9') == 61 );
  108. CHECK( c2b('+') == 62 );
  109. CHECK( c2b('/') == 63 );
  110. CHECK( c2b('=') == 64 );
  111. CHECK( c2b('*') == 0xFF );
  112. }
  113. void aes_block_test()
  114. {
  115. }