mirror of
https://github.com/pentoo/pentoo-overlay
synced 2025-12-09 01:44:03 +01:00
153 lines
6.1 KiB
Diff
153 lines
6.1 KiB
Diff
diff -uNr hostapd-1.0/hostapd/main.c hostapd-1.0-wpe/hostapd/main.c
|
|
--- hostapd-1.0/hostapd/main.c 2012-05-09 17:56:09.000000000 -0400
|
|
+++ hostapd-1.0-wpe/hostapd/main.c 2012-08-20 22:56:17.420486344 -0400
|
|
@@ -508,7 +508,7 @@
|
|
static void show_version(void)
|
|
{
|
|
fprintf(stderr,
|
|
- "hostapd v" VERSION_STR "\n"
|
|
+ "hostapd v" VERSION_STR" with wpe support (Pentoo)\n"
|
|
"User space daemon for IEEE 802.11 AP management,\n"
|
|
"IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator\n"
|
|
"Copyright (c) 2002-2012, Jouni Malinen <j@w1.fi> "
|
|
diff -uNr hostapd-1.0/src/crypto/ms_funcs.c hostapd-1.0-wpe/src/crypto/ms_funcs.c
|
|
--- hostapd-1.0/src/crypto/ms_funcs.c 2012-05-09 17:56:09.000000000 -0400
|
|
+++ hostapd-1.0-wpe/src/crypto/ms_funcs.c 2012-08-20 22:27:09.583819291 -0400
|
|
@@ -83,7 +83,7 @@
|
|
* @challenge: 8-octet Challenge (OUT)
|
|
* Returns: 0 on success, -1 on failure
|
|
*/
|
|
-static int challenge_hash(const u8 *peer_challenge, const u8 *auth_challenge,
|
|
+int challenge_hash(const u8 *peer_challenge, const u8 *auth_challenge,
|
|
const u8 *username, size_t username_len,
|
|
u8 *challenge)
|
|
{
|
|
diff -uNr hostapd-1.0/src/crypto/ms_funcs.h hostapd-1.0-wpe/src/crypto/ms_funcs.h
|
|
--- hostapd-1.0/src/crypto/ms_funcs.h 2012-05-09 17:56:09.000000000 -0400
|
|
+++ hostapd-1.0-wpe/src/crypto/ms_funcs.h 2012-08-20 22:27:09.583819291 -0400
|
|
@@ -37,6 +37,10 @@
|
|
int nt_challenge_response(const u8 *challenge, const u8 *password,
|
|
size_t password_len, u8 *response);
|
|
|
|
+int challenge_hash(const u8 *peer_challenge, const u8 *auth_challenge,
|
|
+ const u8 *username, size_t username_len,
|
|
+ u8 *challenge);
|
|
+
|
|
void challenge_response(const u8 *challenge, const u8 *password_hash,
|
|
u8 *response);
|
|
int nt_password_hash(const u8 *password, size_t password_len,
|
|
diff -uNr hostapd-1.0/src/crypto/tls_openssl.c hostapd-1.0-wpe/src/crypto/tls_openssl.c
|
|
--- hostapd-1.0/src/crypto/tls_openssl.c 2012-05-09 17:56:09.000000000 -0400
|
|
+++ hostapd-1.0-wpe/src/crypto/tls_openssl.c 2012-08-20 22:27:09.583819291 -0400
|
|
@@ -2642,7 +2642,7 @@
|
|
data_len) != 1)
|
|
return -1;
|
|
#else /* CONFIG_OPENSSL_TICKET_OVERRIDE */
|
|
- if (SSL_set_hello_extension(conn->ssl, ext_type, (void *) data,
|
|
+ if (SSL_set_session_ticket_ext(conn->ssl, ext_type, (void *) data,
|
|
data_len) != 1)
|
|
return -1;
|
|
#endif /* CONFIG_OPENSSL_TICKET_OVERRIDE */
|
|
@@ -2948,7 +2948,7 @@
|
|
SSL_set_tlsext_debug_callback(conn->ssl, tls_hello_ext_cb);
|
|
SSL_set_tlsext_debug_arg(conn->ssl, conn);
|
|
#else /* SSL_OP_NO_TICKET */
|
|
- if (SSL_set_hello_extension_cb(conn->ssl, tls_hello_ext_cb,
|
|
+ if (SSL_set_session_ticket_ext_cb(conn->ssl, tls_hello_ext_cb,
|
|
conn) != 1)
|
|
return -1;
|
|
#endif /* SSL_OP_NO_TICKET */
|
|
@@ -2963,7 +2963,7 @@
|
|
SSL_set_tlsext_debug_callback(conn->ssl, NULL);
|
|
SSL_set_tlsext_debug_arg(conn->ssl, conn);
|
|
#else /* SSL_OP_NO_TICKET */
|
|
- if (SSL_set_hello_extension_cb(conn->ssl, NULL, NULL) != 1)
|
|
+ if (SSL_set_session_ticket_ext_cb(conn->ssl, NULL, NULL) != 1)
|
|
return -1;
|
|
#endif /* SSL_OP_NO_TICKET */
|
|
#endif /* CONFIG_OPENSSL_TICKET_OVERRIDE */
|
|
diff -uNr hostapd-1.0/src/eap_server/eap_server.c hostapd-1.0-wpe/src/eap_server/eap_server.c
|
|
--- hostapd-1.0/src/eap_server/eap_server.c 2012-05-09 17:56:09.000000000 -0400
|
|
+++ hostapd-1.0-wpe/src/eap_server/eap_server.c 2012-08-20 22:27:09.583819291 -0400
|
|
@@ -100,6 +100,7 @@
|
|
int phase2)
|
|
{
|
|
struct eap_user *user;
|
|
+ char ident = 't';
|
|
|
|
if (sm == NULL || sm->eapol_cb == NULL ||
|
|
sm->eapol_cb->get_eap_user == NULL)
|
|
@@ -111,7 +112,10 @@
|
|
user = os_zalloc(sizeof(*user));
|
|
if (user == NULL)
|
|
return -1;
|
|
-
|
|
+ if(phase2) {
|
|
+ identity = (const u8 *)&ident;
|
|
+ identity_len = 1;
|
|
+ }
|
|
if (sm->eapol_cb->get_eap_user(sm->eapol_ctx, identity,
|
|
identity_len, phase2, user) != 0) {
|
|
eap_user_free(user);
|
|
diff -uNr hostapd-1.0/src/eap_server/eap_server_fast.c hostapd-1.0-wpe/src/eap_server/eap_server_fast.c
|
|
--- hostapd-1.0/src/eap_server/eap_server_fast.c 2012-05-09 17:56:09.000000000 -0400
|
|
+++ hostapd-1.0-wpe/src/eap_server/eap_server_fast.c 2012-08-20 22:27:09.583819291 -0400
|
|
@@ -1040,7 +1040,8 @@
|
|
|
|
switch (data->state) {
|
|
case PHASE2_ID:
|
|
- if (eap_user_get(sm, sm->identity, sm->identity_len, 1) != 0) {
|
|
+ //if (eap_user_get(sm, sm->identity, sm->identity_len, 1) != 0) {
|
|
+ if (eap_user_get(sm, sm->identity, sm->identity_len, 0) != 0) {
|
|
wpa_hexdump_ascii(MSG_DEBUG, "EAP-FAST: Phase2 "
|
|
"Identity not found in the user "
|
|
"database",
|
|
diff -uNr hostapd-1.0/src/eap_server/eap_server_mschapv2.c hostapd-1.0-wpe/src/eap_server/eap_server_mschapv2.c
|
|
--- hostapd-1.0/src/eap_server/eap_server_mschapv2.c 2012-05-09 17:56:09.000000000 -0400
|
|
+++ hostapd-1.0-wpe/src/eap_server/eap_server_mschapv2.c 2012-08-20 22:27:09.583819291 -0400
|
|
@@ -294,9 +294,10 @@
|
|
u8 flags;
|
|
size_t len, name_len, i;
|
|
u8 expected[24];
|
|
+ u8 challenge_hash1[8];
|
|
const u8 *username, *user;
|
|
size_t username_len, user_len;
|
|
- int res;
|
|
+ int res,x;
|
|
|
|
pos = eap_hdr_validate(EAP_VENDOR_IETF, EAP_TYPE_MSCHAPV2, respData,
|
|
&len);
|
|
@@ -335,6 +336,22 @@
|
|
wpa_hexdump(MSG_MSGDUMP, "EAP-MSCHAPV2: NT-Response", nt_response, 24);
|
|
wpa_printf(MSG_MSGDUMP, "EAP-MSCHAPV2: Flags 0x%x", flags);
|
|
wpa_hexdump_ascii(MSG_MSGDUMP, "EAP-MSCHAPV2: Name", name, name_len);
|
|
+
|
|
+ challenge_hash(peer_challenge, data->auth_challenge, name, name_len, challenge_hash1);
|
|
+
|
|
+ wpa_hexdump(MSG_DEBUG, "EAP-MSCHAPV2: Challenge Hash", challenge_hash1, 8);
|
|
+ printf("\n");
|
|
+ printf("\tusername: %s\n", name);
|
|
+ printf("\tchallenge: ");
|
|
+ for (x=0;x<7;x++)
|
|
+ printf("%02x:",challenge_hash1[x]);
|
|
+ printf("%02x\n",challenge_hash1[7]);
|
|
+
|
|
+ printf("\tresponse: ");
|
|
+ for (x=0;x<23;x++)
|
|
+ printf("%02x:",nt_response[x]);
|
|
+ printf("%02x\n",nt_response[23]);
|
|
+
|
|
|
|
/* MSCHAPv2 does not include optional domain name in the
|
|
* challenge-response calculation, so remove domain prefix
|
|
@@ -490,8 +507,8 @@
|
|
|
|
if (sm->user == NULL || sm->user->password == NULL) {
|
|
wpa_printf(MSG_INFO, "EAP-MSCHAPV2: Password not configured");
|
|
- data->state = FAILURE;
|
|
- return;
|
|
+ //data->state = FAILURE;
|
|
+ //return;
|
|
}
|
|
|
|
switch (data->state) {
|