1
0

AUTHallies.c 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. /*
  2. Fuzzes AuthResp by testing all 256 IEs on overflow in four ways
  3. */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <stdint.h>
  7. #include <string.h>
  8. #include <math.h>
  9. #include "../frameDefinitions.h"
  10. //Creates Auth response frame
  11. u_char *Authallies(u_char *dstAddress, int *packetSize, u_char * radioTapHeader, u_char *myMAC, int step)
  12. {
  13. #define AuthalliesIES (1) //number of information elements
  14. //definition of all info elements
  15. infoElem fuzzie;
  16. switch (step)
  17. {
  18. case 0:
  19. {
  20. fuzzie.id = 0;
  21. fuzzie.len = 0;
  22. fuzzie.len_data = 255*2;
  23. fuzzie.data =
  24. "\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00"
  25. "\x08\x00\x09\x00\x0A\x00\x0B\x00\x0C\x00\x0D\x00\x0E\x00\x0F\x00"
  26. "\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00"
  27. "\x18\x00\x19\x00\x1A\x00\x1B\x00\x1C\x00\x1D\x00\x1E\x00\x1F\x00"
  28. "\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00"
  29. "\x28\x00\x29\x00\x2A\x00\x2B\x00\x2C\x00\x2D\x00\x2E\x00\x2F\x00"
  30. "\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00"
  31. "\x38\x00\x39\x00\x3A\x00\x3B\x00\x3C\x00\x3D\x00\x3E\x00\x3F\x00"
  32. "\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00"
  33. "\x48\x00\x49\x00\x4A\x00\x4B\x00\x4C\x00\x4D\x00\x4E\x00\x4F\x00"
  34. "\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00"
  35. "\x58\x00\x59\x00\x5A\x00\x5B\x00\x5C\x00\x5D\x00\x5E\x00\x5F\x00"
  36. "\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00"
  37. "\x68\x00\x69\x00\x6A\x00\x6B\x00\x6C\x00\x6D\x00\x6E\x00\x6F\x00"
  38. "\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00"
  39. "\x78\x00\x79\x00\x7A\x00\x7B\x00\x7C\x00\x7D\x00\x7E\x00\x7F\x00"
  40. "\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00"
  41. "\x88\x00\x89\x00\x8A\x00\x8B\x00\x8C\x00\x8D\x00\x8E\x00\x8F\x00"
  42. "\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00"
  43. "\x98\x00\x99\x00\x9A\x00\x9B\x00\x9C\x00\x9D\x00\x9E\x00\x9F\x00"
  44. "\xA0\x00\xA1\x00\xA2\x00\xA3\x00\xA4\x00\xA5\x00\xA6\x00\xA7\x00"
  45. "\xA8\x00\xA9\x00\xAA\x00\xAB\x00\xAC\x00\xAD\x00\xAE\x00\xAF\x00"
  46. "\xB0\x00\xB1\x00\xB2\x00\xB3\x00\xB4\x00\xB5\x00\xB6\x00\xB7\x00"
  47. "\xB8\x00\xB9\x00\xBA\x00\xBB\x00\xBC\x00\xBD\x00\xBE\x00\xBF\x00"
  48. "\xC0\x00\xC1\x00\xC2\x00\xC3\x00\xC4\x00\xC5\x00\xC6\x00\xC7\x00"
  49. "\xC8\x00\xC9\x00\xCA\x00\xCB\x00\xCC\x00\xCD\x00\xCE\x00\xCF\x00"
  50. "\xD0\x00\xD1\x00\xD2\x00\xD3\x00\xD4\x00\xD5\x00\xD6\x00\xD7\x00"
  51. "\xD8\x00\xD9\x00\xDA\x00\xDB\x00\xDC\x00\xDD\x00\xDE\x00\xDF\x00"
  52. "\xE0\x00\xE1\x00\xE2\x00\xE3\x00\xE4\x00\xE5\x00\xE6\x00\xE7\x00"
  53. "\xE8\x00\xE9\x00\xEA\x00\xEB\x00\xEC\x00\xED\x00\xEE\x00\xEF\x00"
  54. "\xF0\x00\xF1\x00\xF2\x00\xF3\x00\xF4\x00\xF5\x00\xF6\x00\xF7\x00"
  55. "\xF8\x00\xF9\x00\xFA\x00\xFB\x00\xFC\x00\xFD\x00\xFE\x00\xFF\x00"
  56. ;
  57. break;
  58. }
  59. case 1:
  60. {
  61. fuzzie.id = 0;
  62. fuzzie.len = 1;
  63. fuzzie.len_data = 255*3 + 1;
  64. fuzzie.data =
  65. "\xff"
  66. "\x01\x01\xFF\x02\x01\xFF\x03\x01\xFF\x04\x01\xFF\x05\x01\xFF\x06\x01\xFF\x07\x01\xFF"
  67. "\x08\x01\xFF\x09\x01\xFF\x0A\x01\xFF\x0B\x01\xFF\x0C\x01\xFF\x0D\x01\xFF\x0E\x01\xFF\x0F\x01\xFF"
  68. "\x10\x01\xFF\x11\x01\xFF\x12\x01\xFF\x13\x01\xFF\x14\x01\xFF\x15\x01\xFF\x16\x01\xFF\x17\x01\xFF"
  69. "\x18\x01\xFF\x19\x01\xFF\x1A\x01\xFF\x1B\x01\xFF\x1C\x01\xFF\x1D\x01\xFF\x1E\x01\xFF\x1F\x01\xFF"
  70. "\x20\x01\xFF\x21\x01\xFF\x22\x01\xFF\x23\x01\xFF\x24\x01\xFF\x25\x01\xFF\x26\x01\xFF\x27\x01\xFF"
  71. "\x28\x01\xFF\x29\x01\xFF\x2A\x01\xFF\x2B\x01\xFF\x2C\x01\xFF\x2D\x01\xFF\x2E\x01\xFF\x2F\x01\xFF"
  72. "\x30\x01\xFF\x31\x01\xFF\x32\x01\xFF\x33\x01\xFF\x34\x01\xFF\x35\x01\xFF\x36\x01\xFF\x37\x01\xFF"
  73. "\x38\x01\xFF\x39\x01\xFF\x3A\x01\xFF\x3B\x01\xFF\x3C\x01\xFF\x3D\x01\xFF\x3E\x01\xFF\x3F\x01\xFF"
  74. "\x40\x01\xFF\x41\x01\xFF\x42\x01\xFF\x43\x01\xFF\x44\x01\xFF\x45\x01\xFF\x46\x01\xFF\x47\x01\xFF"
  75. "\x48\x01\xFF\x49\x01\xFF\x4A\x01\xFF\x4B\x01\xFF\x4C\x01\xFF\x4D\x01\xFF\x4E\x01\xFF\x4F\x01\xFF"
  76. "\x50\x01\xFF\x51\x01\xFF\x52\x01\xFF\x53\x01\xFF\x54\x01\xFF\x55\x01\xFF\x56\x01\xFF\x57\x01\xFF"
  77. "\x58\x01\xFF\x59\x01\xFF\x5A\x01\xFF\x5B\x01\xFF\x5C\x01\xFF\x5D\x01\xFF\x5E\x01\xFF\x5F\x01\xFF"
  78. "\x60\x01\xFF\x61\x01\xFF\x62\x01\xFF\x63\x01\xFF\x64\x01\xFF\x65\x01\xFF\x66\x01\xFF\x67\x01\xFF"
  79. "\x68\x01\xFF\x69\x01\xFF\x6A\x01\xFF\x6B\x01\xFF\x6C\x01\xFF\x6D\x01\xFF\x6E\x01\xFF\x6F\x01\xFF"
  80. "\x70\x01\xFF\x71\x01\xFF\x72\x01\xFF\x73\x01\xFF\x74\x01\xFF\x75\x01\xFF\x76\x01\xFF\x77\x01\xFF"
  81. "\x78\x01\xFF\x79\x01\xFF\x7A\x01\xFF\x7B\x01\xFF\x7C\x01\xFF\x7D\x01\xFF\x7E\x01\xFF\x7F\x01\xFF"
  82. "\x80\x01\xFF\x81\x01\xFF\x82\x01\xFF\x83\x01\xFF\x84\x01\xFF\x85\x01\xFF\x86\x01\xFF\x87\x01\xFF"
  83. "\x88\x01\xFF\x89\x01\xFF\x8A\x01\xFF\x8B\x01\xFF\x8C\x01\xFF\x8D\x01\xFF\x8E\x01\xFF\x8F\x01\xFF"
  84. "\x90\x01\xFF\x91\x01\xFF\x92\x01\xFF\x93\x01\xFF\x94\x01\xFF\x95\x01\xFF\x96\x01\xFF\x97\x01\xFF"
  85. "\x98\x01\xFF\x99\x01\xFF\x9A\x01\xFF\x9B\x01\xFF\x9C\x01\xFF\x9D\x01\xFF\x9E\x01\xFF\x9F\x01\xFF"
  86. "\xA0\x01\xFF\xA1\x01\xFF\xA2\x01\xFF\xA3\x01\xFF\xA4\x01\xFF\xA5\x01\xFF\xA6\x01\xFF\xA7\x01\xFF"
  87. "\xA8\x01\xFF\xA9\x01\xFF\xAA\x01\xFF\xAB\x01\xFF\xAC\x01\xFF\xAD\x01\xFF\xAE\x01\xFF\xAF\x01\xFF"
  88. "\xB0\x01\xFF\xB1\x01\xFF\xB2\x01\xFF\xB3\x01\xFF\xB4\x01\xFF\xB5\x01\xFF\xB6\x01\xFF\xB7\x01\xFF"
  89. "\xB8\x01\xFF\xB9\x01\xFF\xBA\x01\xFF\xBB\x01\xFF\xBC\x01\xFF\xBD\x01\xFF\xBE\x01\xFF\xBF\x01\xFF"
  90. "\xC0\x01\xFF\xC1\x01\xFF\xC2\x01\xFF\xC3\x01\xFF\xC4\x01\xFF\xC5\x01\xFF\xC6\x01\xFF\xC7\x01\xFF"
  91. "\xC8\x01\xFF\xC9\x01\xFF\xCA\x01\xFF\xCB\x01\xFF\xCC\x01\xFF\xCD\x01\xFF\xCE\x01\xFF\xCF\x01\xFF"
  92. "\xD0\x01\xFF\xD1\x01\xFF\xD2\x01\xFF\xD3\x01\xFF\xD4\x01\xFF\xD5\x01\xFF\xD6\x01\xFF\xD7\x01\xFF"
  93. "\xD8\x01\xFF\xD9\x01\xFF\xDA\x01\xFF\xDB\x01\xFF\xDC\x01\xFF\xDD\x01\xFF\xDE\x01\xFF\xDF\x01\xFF"
  94. "\xE0\x01\xFF\xE1\x01\xFF\xE2\x01\xFF\xE3\x01\xFF\xE4\x01\xFF\xE5\x01\xFF\xE6\x01\xFF\xE7\x01\xFF"
  95. "\xE8\x01\xFF\xE9\x01\xFF\xEA\x01\xFF\xEB\x01\xFF\xEC\x01\xFF\xED\x01\xFF\xEE\x01\xFF\xEF\x01\xFF"
  96. "\xF0\x01\xFF\xF1\x01\xFF\xF2\x01\xFF\xF3\x01\xFF\xF4\x01\xFF\xF5\x01\xFF\xF6\x01\xFF\xF7\x01\xFF"
  97. "\xF8\x01\xFF\xF9\x01\xFF\xFA\x01\xFF\xFB\x01\xFF\xFC\x01\xFF\xFD\x01\xFF\xFE\x01\xFF\xFF\x01\xFF"
  98. ;
  99. break;
  100. }
  101. case 2:
  102. {
  103. fuzzie.id = 0;
  104. fuzzie.len = 1;
  105. fuzzie.len_data = 255*3 + 1;
  106. fuzzie.data =
  107. "\x00"
  108. "\x01\x01\x00\x02\x01\x00\x03\x01\x00\x04\x01\x00\x05\x01\x00\x06\x01\x00\x07\x01\x00"
  109. "\x08\x01\x00\x09\x01\x00\x0A\x01\x00\x0B\x01\x00\x0C\x01\x00\x0D\x01\x00\x0E\x01\x00\x0F\x01\x00"
  110. "\x10\x01\x00\x11\x01\x00\x12\x01\x00\x13\x01\x00\x14\x01\x00\x15\x01\x00\x16\x01\x00\x17\x01\x00"
  111. "\x18\x01\x00\x19\x01\x00\x1A\x01\x00\x1B\x01\x00\x1C\x01\x00\x1D\x01\x00\x1E\x01\x00\x1F\x01\x00"
  112. "\x20\x01\x00\x21\x01\x00\x22\x01\x00\x23\x01\x00\x24\x01\x00\x25\x01\x00\x26\x01\x00\x27\x01\x00"
  113. "\x28\x01\x00\x29\x01\x00\x2A\x01\x00\x2B\x01\x00\x2C\x01\x00\x2D\x01\x00\x2E\x01\x00\x2F\x01\x00"
  114. "\x30\x01\x00\x31\x01\x00\x32\x01\x00\x33\x01\x00\x34\x01\x00\x35\x01\x00\x36\x01\x00\x37\x01\x00"
  115. "\x38\x01\x00\x39\x01\x00\x3A\x01\x00\x3B\x01\x00\x3C\x01\x00\x3D\x01\x00\x3E\x01\x00\x3F\x01\x00"
  116. "\x40\x01\x00\x41\x01\x00\x42\x01\x00\x43\x01\x00\x44\x01\x00\x45\x01\x00\x46\x01\x00\x47\x01\x00"
  117. "\x48\x01\x00\x49\x01\x00\x4A\x01\x00\x4B\x01\x00\x4C\x01\x00\x4D\x01\x00\x4E\x01\x00\x4F\x01\x00"
  118. "\x50\x01\x00\x51\x01\x00\x52\x01\x00\x53\x01\x00\x54\x01\x00\x55\x01\x00\x56\x01\x00\x57\x01\x00"
  119. "\x58\x01\x00\x59\x01\x00\x5A\x01\x00\x5B\x01\x00\x5C\x01\x00\x5D\x01\x00\x5E\x01\x00\x5F\x01\x00"
  120. "\x60\x01\x00\x61\x01\x00\x62\x01\x00\x63\x01\x00\x64\x01\x00\x65\x01\x00\x66\x01\x00\x67\x01\x00"
  121. "\x68\x01\x00\x69\x01\x00\x6A\x01\x00\x6B\x01\x00\x6C\x01\x00\x6D\x01\x00\x6E\x01\x00\x6F\x01\x00"
  122. "\x70\x01\x00\x71\x01\x00\x72\x01\x00\x73\x01\x00\x74\x01\x00\x75\x01\x00\x76\x01\x00\x77\x01\x00"
  123. "\x78\x01\x00\x79\x01\x00\x7A\x01\x00\x7B\x01\x00\x7C\x01\x00\x7D\x01\x00\x7E\x01\x00\x7F\x01\x00"
  124. "\x80\x01\x00\x81\x01\x00\x82\x01\x00\x83\x01\x00\x84\x01\x00\x85\x01\x00\x86\x01\x00\x87\x01\x00"
  125. "\x88\x01\x00\x89\x01\x00\x8A\x01\x00\x8B\x01\x00\x8C\x01\x00\x8D\x01\x00\x8E\x01\x00\x8F\x01\x00"
  126. "\x90\x01\x00\x91\x01\x00\x92\x01\x00\x93\x01\x00\x94\x01\x00\x95\x01\x00\x96\x01\x00\x97\x01\x00"
  127. "\x98\x01\x00\x99\x01\x00\x9A\x01\x00\x9B\x01\x00\x9C\x01\x00\x9D\x01\x00\x9E\x01\x00\x9F\x01\x00"
  128. "\xA0\x01\x00\xA1\x01\x00\xA2\x01\x00\xA3\x01\x00\xA4\x01\x00\xA5\x01\x00\xA6\x01\x00\xA7\x01\x00"
  129. "\xA8\x01\x00\xA9\x01\x00\xAA\x01\x00\xAB\x01\x00\xAC\x01\x00\xAD\x01\x00\xAE\x01\x00\xAF\x01\x00"
  130. "\xB0\x01\x00\xB1\x01\x00\xB2\x01\x00\xB3\x01\x00\xB4\x01\x00\xB5\x01\x00\xB6\x01\x00\xB7\x01\x00"
  131. "\xB8\x01\x00\xB9\x01\x00\xBA\x01\x00\xBB\x01\x00\xBC\x01\x00\xBD\x01\x00\xBE\x01\x00\xBF\x01\x00"
  132. "\xC0\x01\x00\xC1\x01\x00\xC2\x01\x00\xC3\x01\x00\xC4\x01\x00\xC5\x01\x00\xC6\x01\x00\xC7\x01\x00"
  133. "\xC8\x01\x00\xC9\x01\x00\xCA\x01\x00\xCB\x01\x00\xCC\x01\x00\xCD\x01\x00\xCE\x01\x00\xCF\x01\x00"
  134. "\xD0\x01\x00\xD1\x01\x00\xD2\x01\x00\xD3\x01\x00\xD4\x01\x00\xD5\x01\x00\xD6\x01\x00\xD7\x01\x00"
  135. "\xD8\x01\x00\xD9\x01\x00\xDA\x01\x00\xDB\x01\x00\xDC\x01\x00\xDD\x01\x00\xDE\x01\x00\xDF\x01\x00"
  136. "\xE0\x01\x00\xE1\x01\x00\xE2\x01\x00\xE3\x01\x00\xE4\x01\x00\xE5\x01\x00\xE6\x01\x00\xE7\x01\x00"
  137. "\xE8\x01\x00\xE9\x01\x00\xEA\x01\x00\xEB\x01\x00\xEC\x01\x00\xED\x01\x00\xEE\x01\x00\xEF\x01\x00"
  138. "\xF0\x01\x00\xF1\x01\x00\xF2\x01\x00\xF3\x01\x00\xF4\x01\x00\xF5\x01\x00\xF6\x01\x00\xF7\x01\x00"
  139. "\xF8\x01\x00\xF9\x01\x00\xFA\x01\x00\xFB\x01\x00\xFC\x01\x00\xFD\x01\x00\xFE\x01\x00\xFF\x01\x00"
  140. ;
  141. break;
  142. }
  143. case 3:
  144. {
  145. fuzzie.id = 0;
  146. fuzzie.len = 0;
  147. fuzzie.len_data = -1;
  148. fuzzie.data = "";
  149. break;
  150. }
  151. }
  152. //create array of information elements
  153. infoElem taggedParams[AuthalliesIES] = {
  154. fuzzie
  155. };
  156. //length of all info elements, including id and len field
  157. int len_taggedParams = 0;
  158. for(int i = 0; i < AuthalliesIES; i++)
  159. {
  160. if (taggedParams[i].len_data != -1) //do not include when len_data == -1
  161. {
  162. //+2 to include id and len field size
  163. len_taggedParams = len_taggedParams + taggedParams[i].len_data+2;
  164. }
  165. }
  166. //fill in struct
  167. authResponse authResp = {
  168. 36, radioTapHeader, //RadioTap hdr
  169. 1, "\xb0", //Type
  170. 1, "\x00", //Subtype
  171. 2, "\x3a\x01", //Duration
  172. 6, dstAddress, //DST addr
  173. 6, myMAC, //Source addr
  174. 6, myMAC, //BSS addr
  175. 2, "\x00\x00", //Seq nr (overwritten by firmware)
  176. 2, "\x00\x00", //Auth alg
  177. 2, "\x02\x00", //Auth seq
  178. 2, "\x00\x00", //Status code
  179. len_taggedParams,
  180. taggedParams, //Information elements
  181. 4, "\x00\x00\x00\x00" //FSC (overwritten by firmware)
  182. };
  183. //calculate size of final packet
  184. *packetSize = authResp.len_radioTapHdr
  185. + authResp.len_type
  186. + authResp.len_flags
  187. + authResp.len_duration
  188. + authResp.len_destAddr
  189. + authResp.len_sourceAddr
  190. + authResp.len_bssAddr
  191. + authResp.len_seqNr
  192. + authResp.len_authAlg
  193. + authResp.len_authSeq
  194. + authResp.len_status
  195. + authResp.len_taggedParams
  196. + authResp.len_fsc;
  197. //define packet
  198. u_char *authRespPacket = malloc(*packetSize);
  199. if(!authRespPacket)
  200. {
  201. printf("Memory allocation error!\n");
  202. exit(-1);
  203. }
  204. //copy all struct fields into packet
  205. int copyOffset = 0;
  206. memcpy(authRespPacket + copyOffset, authResp.radioTapHdr, authResp.len_radioTapHdr);
  207. copyOffset = copyOffset + authResp.len_radioTapHdr;
  208. memcpy(authRespPacket + copyOffset, authResp.type, authResp.len_type);
  209. copyOffset = copyOffset + authResp.len_type;
  210. memcpy(authRespPacket + copyOffset, authResp.flags, authResp.len_flags);
  211. copyOffset = copyOffset + authResp.len_flags;
  212. memcpy(authRespPacket + copyOffset, authResp.duration, authResp.len_duration);
  213. copyOffset = copyOffset + authResp.len_duration;
  214. memcpy(authRespPacket + copyOffset, authResp.destAddr, authResp.len_destAddr);
  215. copyOffset = copyOffset + authResp.len_destAddr;
  216. memcpy(authRespPacket + copyOffset, authResp.sourceAddr, authResp.len_sourceAddr);
  217. copyOffset = copyOffset + authResp.len_sourceAddr;
  218. memcpy(authRespPacket + copyOffset, authResp.bssAddr, authResp.len_bssAddr);
  219. copyOffset = copyOffset + authResp.len_bssAddr;
  220. memcpy(authRespPacket + copyOffset, authResp.seqNr, authResp.len_seqNr);
  221. copyOffset = copyOffset + authResp.len_seqNr;
  222. memcpy(authRespPacket + copyOffset, authResp.authAlg, authResp.len_authAlg);
  223. copyOffset = copyOffset + authResp.len_authAlg;
  224. memcpy(authRespPacket + copyOffset, authResp.authSeq, authResp.len_authSeq);
  225. copyOffset = copyOffset + authResp.len_authSeq;
  226. memcpy(authRespPacket + copyOffset, authResp.status, authResp.len_status);
  227. copyOffset = copyOffset + authResp.len_status;
  228. //copy all information elements
  229. for(int i = 0; i < AuthalliesIES; i++)
  230. {
  231. if (taggedParams[i].len_data != -1) //if id == -1, we do not want to include the information element
  232. {
  233. memcpy(authRespPacket + copyOffset, &taggedParams[i].id, 1);
  234. copyOffset = copyOffset + 1;
  235. memcpy(authRespPacket + copyOffset, &taggedParams[i].len, 1);
  236. copyOffset = copyOffset + 1;
  237. memcpy(authRespPacket + copyOffset, taggedParams[i].data, taggedParams[i].len_data);
  238. copyOffset = copyOffset + taggedParams[i].len_data;
  239. }
  240. }
  241. memcpy(authRespPacket + copyOffset, authResp.fsc, authResp.len_fsc);
  242. copyOffset = copyOffset + authResp.len_fsc;
  243. //send packet
  244. return authRespPacket;
  245. }