diff --git a/src/construct_eap_frames.c b/src/construct_eap_frames.c old mode 100644 new mode 100755 index bafbeee..36d9efd --- a/src/construct_eap_frames.c +++ b/src/construct_eap_frames.c @@ -92,11 +92,11 @@ void construct_eapol_start_frame(const uint8_t *frame) const uint8_t eapol_start_dst_MAC[] = {0x01, 0xd0, 0xf8, 0x00, 0x00, 0x03}; const uint8_t eapol_frame_length[] = {0x00, 0x00}; const uint8_t ethernet_padding[] = {0xff, 0xff, 0x37, 0x77, 0xff, 0xaf, /* ....7w.. */ - 0xf7, 0xff, 0xe5, 0x00, 0xff, 0xff, 0xff, 0xaf, /* ........ */ - 0xf7, 0xff, 0x80, 0x01, 0xff, 0xff, 0x53, 0x3e, /* ......S> */ - 0x4a, 0x00, 0x00, 0x13, 0x11, 0x38, 0x30, 0x32, /* J....802 */ + 0xf7, 0xff, 0xe5, 0x00, 0x00, 0x00, 0xff, 0xaf, /* ..!..... */ + 0xf7, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0x5d, /* .......] */ + 0xbf, 0x00, 0x00, 0x13, 0x11, 0x38, 0x30, 0x32, /* .....802 */ 0x31, 0x78, 0x2e, 0x65, 0x78, 0x65, 0x00, 0x00, /* 1x.exe.. */ - 0x00, 0x00, 0x00, 0x00 + 0x00, 0x00, 0x00, 0x00, }; const uint8_t ethernet_trailer[] = {0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ @@ -104,17 +104,17 @@ void construct_eapol_start_frame(const uint8_t *frame) 0x02, 0x00, 0x00, 0x00, 0x13, 0x11, 0x01, 0xb4, /* ........ */ 0x1a, 0x0c, 0x00, 0x00, 0x13, 0x11, 0x18, 0x06, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0e, 0x00, 0x00, /* ........ */ - 0x13, 0x11, 0x2d, 0x08, 0x08, 0x00, 0x27, 0x69, /* ..-...'i */ - 0x25, 0x6a, 0x1a, 0x08, 0x00, 0x00, 0x13, 0x11, /* %j...... */ + 0x13, 0x11, 0x2d, 0x08, 0x08, 0x00, 0x27, 0x8b, /* ..-...'. */ + 0xa5, 0x8a, 0x1a, 0x08, 0x00, 0x00, 0x13, 0x11, /* ........ */ 0x2f, 0x02, 0x1a, 0x08, 0x00, 0x00, 0x13, 0x11, /* /....... */ 0x76, 0x02, 0x1a, 0x09, 0x00, 0x00, 0x13, 0x11, /* v....... */ - 0x35, 0x03, 0x02, 0x1a, 0x18, 0x00, 0x00, 0x13, /* 5....... */ + 0x35, 0x03, 0x01, 0x1a, 0x18, 0x00, 0x00, 0x13, /* 5....... */ 0x11, 0x36, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, /* .6...... */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x1a, 0x18, 0x00, 0x00, 0x13, /* ........ */ 0x11, 0x38, 0x12, 0xfe, 0x80, 0x00, 0x00, 0x00, /* .8...... */ 0x00, 0x00, 0x00, 0x0a, 0x00, 0x27, 0xff, 0xfe, /* .....'.. */ - 0x69, 0x25, 0x6a, 0x1a, 0x18, 0x00, 0x00, 0x13, /* i%j..... */ + 0x8b, 0xa5, 0x8a, 0x1a, 0x18, 0x00, 0x00, 0x13, /* ........ */ 0x11, 0x4e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, /* .N...... */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x1a, 0x88, 0x00, 0x00, 0x13, /* ........ */ @@ -140,9 +140,9 @@ void construct_eapol_start_frame(const uint8_t *frame) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x1a, 0x48, 0x00, 0x00, 0x13, /* ....H... */ - 0x11, 0x54, 0x42, 0x56, 0x42, 0x34, 0x64, 0x39, /* .TBVB4d9 */ - 0x65, 0x62, 0x64, 0x62, 0x65, 0x2d, 0x30, 0x64, /* ebdbe-0d */ - 0x35, 0x64, 0x62, 0x32, 0x39, 0x36, 0x20, 0x00, /* 5db296 . */ + 0x11, 0x54, 0x42, 0x56, 0x42, 0x66, 0x38, 0x34, /* .TBVBf84 */ + 0x65, 0x37, 0x35, 0x66, 0x62, 0x2d, 0x33, 0x66, /* e75fb-3f */ + 0x34, 0x33, 0x30, 0x62, 0x63, 0x38, 0x20, 0x00, /* 430bc8 . */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ @@ -156,7 +156,7 @@ void construct_eapol_start_frame(const uint8_t *frame) 0x53, 0x55, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x4c, /* SU For L */ 0x69, 0x6e, 0x75, 0x78, 0x20, 0x56, 0x31, 0x2e, /* inux V1. */ 0x33, 0x30, 0x00, 0x1a, 0x09, 0x00, 0x00, 0x13, /* 30...... */ - 0x11, 0x79, 0x03, 0x02 /* .y.. */ /* .y.. */ + 0x11, 0x79, 0x03, 0x02 /* .y.. */ }; extern uint8_t *service_name; extern unsigned int midnight_mode_change_tail_data; @@ -276,8 +276,8 @@ void construct_eap_response_identity_frame(const uint8_t *frame) uint8_t *dst_MAC = NULL; // uint8_t eap_id = 0x01; // default 0x01, 详见 RFC 3748 const uint8_t ethernet_padding[] = {0xff, 0xff, 0x37, 0x77, 0xff, 0xaf, 0xf7, 0xff, /* ..7w.... */ - 0xe5, 0x00, 0xff, 0xff, 0xff, 0xaf, 0xf7, 0xff, /* ........ */ - 0x80, 0x01, 0xff, 0xff, 0x53, 0x3e, 0x4a, 0x00, /* ....S>J. */ + 0xe5, 0x00, 0x00, 0x00, 0xff, 0xaf, 0xf7, 0xff, /* !....... */ + 0x80, 0x43, 0x26, 0xb7, 0x87, 0xca, 0x9e, 0x00, /* .....].. */ 0x00, 0x13, 0x11, 0x38 }; @@ -289,17 +289,17 @@ void construct_eap_response_identity_frame(const uint8_t *frame) 0x00, 0x00, 0x13, 0x11, 0x01, 0xb4, 0x1a, 0x0c, /* ........ */ 0x00, 0x00, 0x13, 0x11, 0x18, 0x06, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x1a, 0x0e, 0x00, 0x00, 0x13, 0x11, /* ........ */ - 0x2d, 0x08, 0x08, 0x00, 0x27, 0x69, 0x25, 0x6a, /* -...'i%j */ + 0x2d, 0x08, 0x08, 0x00, 0x27, 0x8b, 0xa5, 0x8a, /* -...'... */ 0x1a, 0x08, 0x00, 0x00, 0x13, 0x11, 0x2f, 0x02, /* ....../. */ 0x1a, 0x08, 0x00, 0x00, 0x13, 0x11, 0x76, 0x02, /* ......v. */ 0x1a, 0x09, 0x00, 0x00, 0x13, 0x11, 0x35, 0x03, /* ......5. */ - 0x02, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, 0x36, /* .......6 */ + 0x01, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, 0x36, /* .......6 */ 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, 0x38, /* .......8 */ 0x12, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ - 0x00, 0x0a, 0x00, 0x27, 0xff, 0xfe, 0x69, 0x25, /* ...'..i% */ - 0x6a, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, 0x4e, /* j......N */ + 0x00, 0x0a, 0x00, 0x27, 0xff, 0xfe, 0x8b, 0xa5, /* ...'.... */ + 0x8a, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, 0x4e, /* .......N */ 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x1a, 0x88, 0x00, 0x00, 0x13, 0x11, 0x4d, /* .......M */ @@ -325,9 +325,9 @@ void construct_eap_response_identity_frame(const uint8_t *frame) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x1a, 0x48, 0x00, 0x00, 0x13, 0x11, 0x54, /* ..H....T */ - 0x42, 0x56, 0x42, 0x34, 0x64, 0x39, 0x65, 0x62, /* BVB4d9eb */ - 0x64, 0x62, 0x65, 0x2d, 0x30, 0x64, 0x35, 0x64, /* dbe-0d5d */ - 0x62, 0x32, 0x39, 0x36, 0x20, 0x00, 0x00, 0x00, /* b296 ... */ + 0x42, 0x56, 0x42, 0x66, 0x38, 0x34, 0x65, 0x37, /* BVBf84e7 */ + 0x35, 0x66, 0x62, 0x2d, 0x33, 0x66, 0x34, 0x33, /* 5fb-3f43 */ + 0x30, 0x62, 0x63, 0x38, 0x20, 0x00, 0x00, 0x00, /* 0bc8 ... */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ @@ -462,7 +462,7 @@ void construct_eap_response_identity_frame(const uint8_t *frame) // void construct_eap_response_md5_challenge_frame(const uint8_t *frame) { - const uint16_t EAP_RESPONSE_MD5_CHALLENGE_LENGTH = 1000; // send to server packet length + const uint16_t EAP_RESPONSE_MD5_CHALLENGE_LENGTH = 571; // send to server packet length extern uint8_t eap_response_md5_challenge[]; const uint8_t eapol_version[] = {0x01}; const uint8_t eapol_type[] = {0x00}; // type: eapol start @@ -482,9 +482,10 @@ void construct_eap_response_md5_challenge_frame(const uint8_t *frame) extern unsigned int username_length; extern unsigned int midnight_mode_change_tail_data; - const uint8_t ethernet_padding[] = { 0xff, 0xff, 0x37, 0x77, 0xff, 0xaf, 0xf7, 0xff, 0xe5, 0x00, 0xff}; - const uint8_t ethernet_trailer[] = { 0xff, 0xff, 0xaf, 0xf7, /* ........ */ - 0xff, 0x80, 0x01, 0xff, 0xff, 0x53, 0x3e, 0x4a, /* .....S>J */ + const uint8_t ethernet_padding[] = {0xff, 0xff, 0x37, 0x77, 0xff, 0xaf, 0xf7, /* 6..7w... */ + 0xff, 0xe5, 0x00, 0x00}; + const uint8_t ethernet_trailer[] = { 0x00, 0xff, 0xaf, 0xf7, /* .!...... */ + 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0x5d, 0xbf, /* ......]. */ 0x00, 0x00, 0x13, 0x11, 0x38, 0x30, 0x32, 0x31, /* ....8021 */ 0x78, 0x2e, 0x65, 0x78, 0x65, 0x00, 0x00, 0x00, /* x.exe... */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ @@ -493,47 +494,47 @@ void construct_eap_response_md5_challenge_frame(const uint8_t *frame) 0xd0, 0x00, 0x00, 0x13, 0x11, 0x01, 0xc4, 0x1a, /* ........ */ 0x0c, 0x00, 0x00, 0x13, 0x11, 0x18, 0x06, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x1a, 0x0e, 0x00, 0x00, 0x13, /* ........ */ - 0x11, 0x2d, 0x08, 0x08, 0x00, 0x27, 0x69, 0x25, /* .-...'i% */ - 0x6a, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, 0x2f, /* j....../ */ - 0x12, 0x58, 0xae, 0xb1, 0x67, 0x19, 0xe5, 0x5f, /* .X..g.._ */ - 0x4f, 0xec, 0x7a, 0xf9, 0xd3, 0xb1, 0x6d, 0xba, /* O.z...m. */ - 0x23, 0x1a, 0x08, 0x00, 0x00, 0x13, 0x11, 0x76, /* #......v */ + 0x11, 0x2d, 0x08, 0x08, 0x00, 0x27, 0x8b, 0xa5, /* .-...'.. */ + 0x8a, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, 0x2f, /* ......./ */ + 0x12, 0xca, 0x73, 0x30, 0x22, 0x5b, 0xdb, 0xba, /* ..s0"[.. */ + 0xe5, 0x46, 0xad, 0xe6, 0xc4, 0x52, 0xe6, 0xbc, /* .F...R.. */ + 0x4a, 0x1a, 0x08, 0x00, 0x00, 0x13, 0x11, 0x76, /* J......v */ 0x02, 0x1a, 0x09, 0x00, 0x00, 0x13, 0x11, 0x35, /* .......5 */ - 0x03, 0x02, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, /* ........ */ + 0x03, 0x01, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, /* ........ */ 0x36, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 6....... */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, /* ........ */ 0x38, 0x12, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, /* 8....... */ - 0x00, 0x00, 0x0a, 0x00, 0x27, 0xff, 0xfe, 0x69, /* ....'..i */ - 0x25, 0x6a, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, /* %j...... */ + 0x00, 0x00, 0x0a, 0x00, 0x27, 0xff, 0xfe, 0x8b, /* ....'... */ + 0xa5, 0x8a, 0x1a, 0x18, 0x00, 0x00, 0x13, 0x11, /* ........ */ 0x4e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* N....... */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x1a, 0x88, 0x00, 0x00, 0x13, 0x11, /* ........ */ - 0x4d, 0x82, 0x66, 0x39, 0x64, 0x63, 0x34, 0x34, /* M.f9dc44 */ - 0x35, 0x37, 0x34, 0x34, 0x66, 0x33, 0x66, 0x62, /* 5744f3fb */ - 0x39, 0x64, 0x33, 0x37, 0x34, 0x34, 0x65, 0x61, /* 9d3744ea */ - 0x31, 0x66, 0x31, 0x39, 0x62, 0x64, 0x35, 0x61, /* 1f19bd5a */ - 0x34, 0x34, 0x64, 0x39, 0x63, 0x36, 0x30, 0x34, /* 44d9c604 */ - 0x31, 0x66, 0x33, 0x64, 0x30, 0x38, 0x64, 0x39, /* 1f3d08d9 */ - 0x38, 0x30, 0x62, 0x62, 0x32, 0x31, 0x39, 0x62, /* 80bb219b */ - 0x61, 0x63, 0x30, 0x30, 0x30, 0x32, 0x35, 0x37, /* ac000257 */ - 0x39, 0x30, 0x38, 0x36, 0x32, 0x63, 0x38, 0x30, /* 90862c80 */ - 0x36, 0x64, 0x62, 0x62, 0x39, 0x34, 0x65, 0x66, /* 6dbb94ef */ - 0x62, 0x30, 0x63, 0x61, 0x64, 0x35, 0x63, 0x32, /* b0cad5c2 */ - 0x35, 0x65, 0x30, 0x64, 0x63, 0x62, 0x32, 0x38, /* 5e0dcb28 */ - 0x39, 0x36, 0x66, 0x34, 0x61, 0x33, 0x65, 0x66, /* 96f4a3ef */ - 0x62, 0x39, 0x33, 0x32, 0x35, 0x64, 0x36, 0x63, /* b9325d6c */ - 0x62, 0x35, 0x33, 0x66, 0x39, 0x62, 0x62, 0x35, /* b53f9bb5 */ - 0x34, 0x35, 0x62, 0x62, 0x66, 0x39, 0x39, 0x39, /* 45bbf999 */ - 0x66, 0x38, 0x1a, 0x28, 0x00, 0x00, 0x13, 0x11, /* f8.(.... */ + 0x4d, 0x82, 0x35, 0x36, 0x31, 0x34, 0x31, 0x66, /* M.56141f */ + 0x38, 0x36, 0x35, 0x34, 0x65, 0x33, 0x33, 0x30, /* 8654e330 */ + 0x39, 0x62, 0x64, 0x64, 0x64, 0x37, 0x30, 0x32, /* 9bddd702 */ + 0x35, 0x33, 0x30, 0x30, 0x61, 0x66, 0x36, 0x66, /* 5300af6f */ + 0x32, 0x61, 0x35, 0x66, 0x32, 0x34, 0x39, 0x33, /* 2a5f2493 */ + 0x65, 0x34, 0x66, 0x65, 0x36, 0x35, 0x66, 0x31, /* e4fe65f1 */ + 0x65, 0x66, 0x32, 0x36, 0x62, 0x66, 0x37, 0x34, /* ef26bf74 */ + 0x34, 0x61, 0x36, 0x34, 0x65, 0x33, 0x33, 0x37, /* 4a64e337 */ + 0x35, 0x34, 0x39, 0x33, 0x35, 0x66, 0x37, 0x30, /* 54935f70 */ + 0x62, 0x31, 0x31, 0x65, 0x37, 0x30, 0x34, 0x65, /* b11e704e */ + 0x35, 0x37, 0x61, 0x63, 0x65, 0x61, 0x62, 0x66, /* 57aceabf */ + 0x30, 0x62, 0x31, 0x36, 0x31, 0x36, 0x35, 0x39, /* 0b161659 */ + 0x32, 0x34, 0x61, 0x63, 0x61, 0x35, 0x39, 0x61, /* 24aca59a */ + 0x61, 0x66, 0x35, 0x33, 0x65, 0x64, 0x35, 0x36, /* af53ed56 */ + 0x64, 0x30, 0x38, 0x37, 0x35, 0x32, 0x38, 0x62, /* d087528b */ + 0x35, 0x39, 0x32, 0x64, 0x64, 0x35, 0x32, 0x62, /* 592dd52b */ + 0x38, 0x63, 0x1a, 0x28, 0x00, 0x00, 0x13, 0x11, /* 8c.(.... */ 0x39, 0x22, 0xd2, 0xc6, 0xb6, 0xaf, 0x00, 0x00, /* 9"...... */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x1a, 0x48, 0x00, 0x00, 0x13, 0x11, /* ...H.... */ - 0x54, 0x42, 0x56, 0x42, 0x34, 0x64, 0x39, 0x65, /* TBVB4d9e */ - 0x62, 0x64, 0x62, 0x65, 0x2d, 0x30, 0x64, 0x35, /* bdbe-0d5 */ - 0x64, 0x62, 0x32, 0x39, 0x36, 0x20, 0x00, 0x00, /* db296 .. */ + 0x54, 0x42, 0x56, 0x42, 0x66, 0x38, 0x34, 0x65, /* TBVBf84e */ + 0x37, 0x35, 0x66, 0x62, 0x2d, 0x33, 0x66, 0x34, /* 75fb-3f4 */ + 0x33, 0x30, 0x62, 0x63, 0x38, 0x20, 0x00, 0x00, /* 30bc8 .. */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ @@ -580,7 +581,7 @@ void construct_eap_response_md5_challenge_frame(const uint8_t *frame) // The start address of // the username array // in eap response md5 challenge frame - const int USERNAME_ADDR = EAP_MD5_VALUE_ADDR + EAP_MD5_VALUE_LENGTH; + const int USERNAME_ADDR = EAP_MD5_VALUE_ADDR + EAP_MD5_VALUE_LENGTH ; // The start address of // the ethernet padding array // in eap response md5 challenge frame @@ -646,10 +647,10 @@ void construct_eap_response_md5_challenge_frame(const uint8_t *frame) memcpy(eap_response_md5_challenge + EAP_MD5_RESPONSE_GATEWAY_ADDR, (uint8_t *)&net_order_gateway, sizeof(uint32_t)); // Filling mentohust code - memcpy(eap_response_md5_challenge + EAP_MD5_RESPONSE_COMPUTE_PASSWORD_ADDR, + memcpy(eap_response_md5_challenge + EAP_MD5_RESPONSE_COMPUTE_PASSWORD_ADDR , computePwd(eap_request_md5_value), 0x10); // Filling V4 algorithm result - memcpy(eap_response_md5_challenge + EAP_MD5_RESPONSE_COMPUTE_V4_ADDR, + memcpy(eap_response_md5_challenge + EAP_MD5_RESPONSE_COMPUTE_V4_ADDR , computeV4(eap_request_md5_value, 16), 0x80); // Filling service name memcpy(eap_response_md5_challenge + EAP_MD5_RESPONSE_SERVICE_NAME_ADDR, diff --git a/src/construct_eap_frames.h b/src/construct_eap_frames.h old mode 100644 new mode 100755