Advertisement
madconnor

[c++] basic_fuzzer.cpp

Dec 16th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.77 KB | None | 0 0
  1. //WORK IN PROGRESS
  2. //author : madconnor
  3. //TODO:
  4.     //functions
  5.     //edit finish permutations
  6.     //fix insert fx()
  7. #include <iostream>
  8. #include <string>
  9. #include <vector>
  10. #include <bitset>
  11. #include "permutator.cpp"
  12.  
  13. using namespace std;
  14.  
  15. class basic_fuzzer : permutation {
  16.     //instances
  17.     permutator mutate;
  18.     //binary size
  19. private:
  20.     int bin_mode *= &bin_64;
  21.     int bin_4 = 4;
  22.     int bin_8 = 8;
  23.     int bin_16 = 16;
  24.     int bin_32 = 32;
  25.     int bin_64 = 64;
  26.     //bitsets
  27.     bitset<bin_4> 4_bit *= bitset< bin_4> &4_binary = 0x0;
  28.     bitset<bin_8> 8_bit *= bitset< bin_8> &8_binary = 0x0;
  29.     bitset<bin_16> 16_bit *= bitset<bin_16> &16_binary = 0x0;
  30.     bitset<bin_32> 32_bit *= bitset<bin_32> &32_binary = 0x0;
  31.     bitset<bin_64> 64_bit *= bitset<bin_64> &64_binary = 0x0;
  32.     //bit buffer
  33.     bitset<bin_4> 4_bit_buff *= bitset< bin_4> &4_binary_buffer = 0x0;
  34.     bitset<bin_8> 8_bit_buff *= bitset< bin_8> &8_binary_buffer = 0x0;
  35.     bitset<bin_16> 16_bit_buff *= bitset<bin_16> &16_binary_buffer = 0x0;
  36.     bitset<bin_32> 32_bit_buff *= bitset<bin_32> &32_binary_buffer = 0x0;
  37.     bitset<bin_64> 64_bit_buff *= bitset<bin_64> &64_binary_buffer = 0x0;
  38.     //string values
  39.     string _string = "";
  40.     string v_string *= &mutate._string;
  41.     vector<char> v_string *= &mutate.string_char;
  42.     vector<string> fuzz_out *= &mutate.out;
  43.     //functions
  44. public:
  45.     void input();
  46.     void fuzzer();
  47.     int bin_fuzz();
  48.     void out_table();
  49.     void execute();
  50.     //bin fx()
  51. private:
  52.     int bin_generate();
  53.     int bin_permutate();
  54.     int bin_fx_permute(); // function combination
  55.     int bin_reverse();
  56.     int bin_prepend();
  57.     int bin_append();
  58.     int bin_insert();
  59.     int bin_cut();
  60.     int bin_replace();
  61. };
  62.  
  63. void fuzzer() {
  64.  
  65.     v_string* = _string;
  66.     mutate.convert();
  67.     cout << "Fuzzer generates..." << endl;
  68.     mutate.permutate();
  69.     //add output result fx()
  70.     cout << "Fuzzer finished..." << endl;
  71. }
  72. int bin_fuzz() {
  73. }
  74. void out_table() {
  75. }
  76. void execute() {
  77. }
  78. //bin ops
  79. int basic_fuzzer::bin_fx_permutate(){
  80.  
  81. int fx_option
  82.  
  83. }
  84.  
  85. int basic_fuzzer::bin_generate() {
  86.     for (int i = 0; i <= bin_mode * ^2; i++)
  87.     {
  88.         switch (bin_mode*) {
  89.         case 4:
  90.             bit_4++;
  91.             cout << bit_4 << endl;
  92.                 break;
  93.         case 8:
  94.             bit_8++;
  95.             cout << bit_8 << endl;
  96.             break;
  97.         case 16:
  98.             bit_16++;
  99.             cout << bit_16 << endl;
  100.             break;
  101.         case 32:
  102.             bit_32++;
  103.             cout << bit_32 << endl;
  104.             break;
  105.         case 64:
  106.             bit_64++;
  107.             cout << bit_64 << endl;
  108.             break;
  109.         default:
  110.             cout << "Error: Binary mode invalid!" << endl;
  111.             return 0;
  112.             break;
  113.  
  114.         }
  115.     }
  116. }
  117. int basic_fuzzer::bin_permutate() { // edit
  118.     for (int i = 0; i <= bin_mode * ^2; i++)
  119.     {
  120.         switch (bin_mode*) {
  121.         case 4:
  122.             bit_4++;
  123.             cout << bit_4 << endl;
  124.             break;
  125.         case 8:
  126.             bit_8++;
  127.             cout << bit_8 << endl;
  128.             break;
  129.         case 16:
  130.             bit_16++;
  131.             cout << bit_16 << endl;
  132.             break;
  133.         case 32:
  134.             bit_32++;
  135.             cout << bit_32 << endl;
  136.             break;
  137.         case 64:
  138.             bit_64++;
  139.             cout << bit_64 << endl;
  140.             break;
  141.         default:
  142.             cout << "Error: Binary mode invalid!" << endl;
  143.             return 0;
  144.             break;
  145.  
  146.         }
  147.     }
  148. }
  149. int basic_fuzzer::bin_reverse() {
  150.     switch (bin_mode*) {
  151.     case 4:
  152.         bit_4++ ^ 0x0;
  153.         cout << bit_4 << endl;
  154.         break;
  155.     case 8:
  156.         bit_8++ ^ 0x0;
  157.         cout << bit_8 << endl;
  158.         break;
  159.     case 16:
  160.         bit_16++ ^ 0x0;
  161.         cout << bit_16 << endl;
  162.         break;
  163.     case 32:
  164.         bit_32 ^ 0x0;
  165.         cout << bit_32 << endl;
  166.         break;
  167.     case 64:
  168.         bit_64 ^ 0x0;
  169.         cout << bit_64 << endl;
  170.         break;
  171.     default:
  172.         cout << "Error: Binary mode invalid!" << endl;
  173.         return 0;
  174.         break;
  175.     }
  176. }
  177. int basic_fuzzer::bin_prepend(bitwise<int size1> bit_1, bitwise<int size2> bit_2) {
  178.     bitwise<size1 + size2> bit_result = 0x0;
  179.     long numeric_result = 0;
  180.     bit_result += bit_1;
  181.     bit_1 >> size2;
  182.     bit_result += bit_2;
  183.     cout << bit_result << endl;
  184.     numeric_result = bit_result;
  185.     return numeric_result;
  186. }
  187. int basic_fuzzer::bin_append(bitwise<int size1> bit_1, bitwise<int size2> bit_2) {
  188.     bitwise<size1 + size2> bit_result = 0x0;
  189.     long int numeric_result = 0;
  190.     bit_result += bit_1;
  191.     bit_result += bit_2;
  192.     cout << bit_result << endl;
  193.     numeric_result = bit_result;
  194.     return numeric_result;
  195. }
  196. int basic_fuzzer::bin_insert(int position, bitwise<int size1> bit_in, bitwise<int size2> bit_format) {
  197.     bitwise<size1 + size2> bit_result = 0x0;
  198.     bitwise<size1> front = 0x0; //fix later
  199.     bitwise<size2 + size1> back = 0x0; // fix later
  200.     bitwise<size1> front_and = 0x0 0xFFFFFFFFFFFFFFFFFFFF; //fix later
  201.     bitwise<size2 + size1> back_and= 0x0 + 0xFFFFFFFFFFFFFFFFFFFF; // fix later
  202.     front = bit_in & front_and;
  203.     back = bit_in & back_and;
  204.     bit_result += bit_in;
  205.     bit_result >> size1;
  206.     bit_result += front;
  207.     bit_result += back;
  208.     cout << bit_result << endl;
  209.     long int numeric_result = bit_result;
  210.     return numeric_result;
  211. }  
  212. int basic_fuzzer::bin_cut(int begin, int end,bitwise<int size> cutter) { //fix later
  213.     switch (bin_mode*) {
  214.     case 4:
  215.         bitwise<bin_4-begin> front;
  216.         bitwise<end> back;
  217.         int size_cut = end -begin;
  218.         bitwise<size_cut> cut;
  219.         cut += back;
  220.         cut >> end;
  221.         cut +=front
  222.         break;
  223.     case 8:
  224.         bitwise<bin_8-begin> front;
  225.         bitwise<end> back;
  226.         int size_cut = end -begin;
  227.         bitwise<size_cut> cut;
  228.         cut += back;
  229.         cut >> end;
  230.         cut +=front
  231.         break;
  232.     case 16:
  233.         bitwise<bin_16-begin> front;
  234.         bitwise<end> back;
  235.         int size_cut = end -begin;
  236.         bitwise<size_cut> cut;
  237.         cut += back;
  238.         cut >> end;
  239.         cut +=front
  240.         break;
  241.     case 32:
  242.         bitwise<bin_32-begin> front;
  243.         bitwise<end> back;
  244.         int size_cut = end -begin;
  245.         bitwise<size_cut> cut;
  246.         cut += back;
  247.         cut >> end;
  248.         cut +=front
  249.         break;
  250.     case 64:
  251.         bitwise<bin_64-begin> front;
  252.         bitwise<end> back;
  253.         int size_cut = end -begin;
  254.         bitwise<size_cut> cut;
  255.         cut += back;
  256.         cut >> end;
  257.         cut +=front
  258.         break;
  259.     default:
  260.         cout << "Error: Binary mode invalid!" << endl;
  261.         return 0;
  262.         break;
  263.     }
  264. }
  265. int basic_fuzzer::bin_replace(int position, bitwise<int size2> bit_replace) { //edit
  266.     switch (bin_mode*) {
  267.     case 4:
  268.         bitwise<bin_4-begin> front;
  269.         bitwise<end> back;
  270.         int size_cut = end -begin;
  271.         bitwise<size_cut> cut;
  272.         cut += back;
  273.         cut >> end;
  274.         cut +=front
  275.         break;
  276.     case 8:
  277.         bitwise<bin_8-begin> front;
  278.         bitwise<end> back;
  279.         int size_cut = end -begin;
  280.         bitwise<size_cut> cut;
  281.         cut += back;
  282.         cut >> end;
  283.         cut +=front
  284.         break;
  285.     case 16:
  286.         bitwise<bin_16-begin> front;
  287.         bitwise<end> back;
  288.         int size_cut = end -begin;
  289.         bitwise<size_cut> cut;
  290.         cut += back;
  291.         cut >> end;
  292.         cut +=front
  293.         break;
  294.     case 32:
  295.         bitwise<bin_32-begin> front;
  296.         bitwise<end> back;
  297.         int size_cut = end -begin;
  298.         bitwise<size_cut> cut;
  299.         cut += back;
  300.         cut >> end;
  301.         cut +=front
  302.         break;
  303.     case 64:
  304.         bitwise<bin_64-begin> front;
  305.         bitwise<end> back;
  306.         int size_cut = end -begin;
  307.         bitwise<size_cut> cut;
  308.         cut += back;
  309.         cut >> end;
  310.         cut +=front
  311.         break;
  312.     default:
  313.         cout << "Error: Binary mode invalid!" << endl;
  314.         return 0;
  315.         break;
  316.     }
  317.  
  318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement