Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resend M-Messages if AP did not receive last one #736

Open
GoogleCodeExporter opened this issue Mar 19, 2016 · 0 comments
Open

Resend M-Messages if AP did not receive last one #736

GoogleCodeExporter opened this issue Mar 19, 2016 · 0 comments

Comments

@GoogleCodeExporter
Copy link

Ladies and gentlemen (mostly gentlemen probably),

I noticed that the sent M messages are currently not re-sent if the AP did not 
receive them. This is a "practical" feature request, since this does mostly not 
occur in laboratory conditions, but on low signal strength setups (aka. the 
real world).
Example:
Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[+] Received M1 message
[+] Sending M2 message
[+] Received M3 message
[+] Sending M4 message
[+] Received M3 message
[+] Received M3 message
[+] Received M3 message
... timeout ... meh


What I would suggest is a RESEND as soon as a M message is received which has 
been received before (eg. re-send M-4 if another M-3 is received).

Currently this is effectively prevented in exchange.c ll 103ff: 

case M3:
    cprintf(VERBOSE, "[+] Received M3 message\n");
    if(m2_sent && !m4_sent)
...

I have no deeper knowledge of the WPS protocoll, so I don't know if this is 
impossible to work around, so I went just at it:

I hacked around in the code so that this works and it increased the success 
rate massively (from ~200s/key to 20s/key) since not the whole starting 
procedure hast to be repeated and wps cooldown is not activated as much (since 
it seems to be connected to the eapol start for most AP impl.).

Unfortunately the code is written in a way that this is not intended (since 
password and messages are freed from mem as soon as the message is sent). I 
just ignored the freeing for now and created a massive memory leak ... Don't 
care got enogh ram... 
However: This has to be refactored in a way, that the free will only happen if 
the next stage in the wps process has been reached - message M-(n+1) is 
received - or timeout was reached.


Original issue reported on code.google.com by dbu...@mail.ru on 14 Aug 2015 at 2:13

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant