SRP6 and WoW Authentication Process menu

User Tag List

Page 1 of 3 123 LastLast
Results 1 to 15 of 41
  1. #1
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    SRP6 and WoW Authentication Process

    Hi guys,

    Very happy to join the community !

    I am coding a Wow Server Emulator with C# language. Actually, i'm stuck on the WoW Authentication Process.

    I wrote this code Code

    But i'm not pretty sure about the Verifier algorithm...

    User's password is stored into database with SHA1 algorithm, but SRP6a Protocol mention that the password need to be raw... i looked to the MaNGOS code and it seems that only the username is uppercased and hashed...

    Someone could help me ?

    Thank you !
    Last edited by julienguillot; 07-26-2017 at 11:31 PM.

    SRP6 and WoW Authentication Process
  2. #2
    doityourself's Avatar ★ Elder ★
    Reputation
    1424
    Join Date
    Nov 2008
    Posts
    843
    Thanks G/R
    35/448
    Trade Feedback
    0 (0%)
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    What is the WoW patch you want to use?

  3. #3
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Thank you !

    I would use patch 3.3.5a of Wotlk.

  4. #4
    doityourself's Avatar ★ Elder ★
    Reputation
    1424
    Join Date
    Nov 2008
    Posts
    843
    Thanks G/R
    35/448
    Trade Feedback
    0 (0%)
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    The WoW client uses a combination of the password and the username for p. Both are uppercase

    var p = Encoding.UTF8.GetBytes(userName + ":" + password);

    Also I think mangos uses a static salt and saves the sha1(p) hash to the database which shouldn't be done.

    The passwordverifier + salt (a random one) should be saved to the database. I don't see a reason to save sha1(p) ^^
    Last edited by doityourself; 07-27-2017 at 12:55 AM.

  5. Thanks stoneharry (1 members gave Thanks to doityourself for this useful post)
  6. #5
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Thank you for answer !

    I also store s and v into database but i think we need password just the first time to generate v and then we clear it. If password is changed, we need to generate again v.
    Am I right ?

  7. #6
    doityourself's Avatar ★ Elder ★
    Reputation
    1424
    Join Date
    Nov 2008
    Posts
    843
    Thanks G/R
    35/448
    Trade Feedback
    0 (0%)
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    Yes, he password itself should only be needed at account creation to generate the verifier. Also the salt should be regenerated for each password change.

  8. Thanks julienguillot, stoneharry (2 members gave Thanks to doityourself for this useful post)
  9. #7
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Nice thank you very much !

  10. #8
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Hello,

    Sorry i have one more question.

    When server receive M1 from client, server verifies if M1 equals M (M is the value that server calculates). But how do it do ?

  11. #9
    doityourself's Avatar ★ Elder ★
    Reputation
    1424
    Join Date
    Nov 2008
    Posts
    843
    Thanks G/R
    35/448
    Trade Feedback
    0 (0%)
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    I don't remember if it's the same for wotlk, but this is what I used for wod: WoW-Core/SRP6a.cs at 36e3eebc2501a97b1757c7cad8f49c6deed6e588 * Arctium-Emulation/WoW-Core * GitHub

    You may need to use sha1... and another sessionkey calculation for wotlk^^

  12. Thanks julienguillot (1 members gave Thanks to doityourself for this useful post)
  13. #10
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Thank you !

    Is the hashedIdentifier need to be stored into database too ?

  14. #11
    Glusk's Avatar Contributor
    Reputation
    105
    Join Date
    Apr 2015
    Posts
    33
    Thanks G/R
    7/32
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Last edited by Glusk; 12-28-2020 at 09:49 PM. Reason: Removed broken search link, fixed OP name

  15. Thanks julienguillot, stoneharry (2 members gave Thanks to Glusk for this useful post)
  16. #12
    doityourself's Avatar ★ Elder ★
    Reputation
    1424
    Join Date
    Nov 2008
    Posts
    843
    Thanks G/R
    35/448
    Trade Feedback
    0 (0%)
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by julienguillot View Post
    Thank you !

    Is the hashedIdentifier need to be stored into database too ?
    the passwordverifier and the salt only. the others shouldn't be needed

  17. Thanks julienguillot (1 members gave Thanks to doityourself for this useful post)
  18. #13
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    How can i do generate x if i can't obtain hashedIdentifier from somewhere ? I can't rebuild it because account is created and its password is hashed too

  19. #14
    doityourself's Avatar ★ Elder ★
    Reputation
    1424
    Join Date
    Nov 2008
    Posts
    843
    Thanks G/R
    35/448
    Trade Feedback
    0 (0%)
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    you don't need to rebuild x because it's only used to generate v (passwordverifier). It's not used anywhere else

    //edit
    You don't compare it to v since the user/pw is never send directly to the server. you just exchange information of the srp6 implementation and calculate the 'm' value of the client and compare that one with the value sent by the client. Then you send the calculated 'm2' value to the client so it can verify it.
    Last edited by doityourself; 07-28-2017 at 05:55 AM.

  20. Thanks julienguillot (1 members gave Thanks to doityourself for this useful post)
  21. #15
    julienguillot's Avatar Member
    Reputation
    1
    Join Date
    Jul 2017
    Posts
    23
    Thanks G/R
    9/0
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Thank you !

    I recoded a bit my class with some helpers. But....

    On the Server Logon Challenge, client show an error with wrong password/username 4 once. And sometimes, my ServerPublicEphemeral value is 33 bytes when converted to byte array...

    Something is wrong but i don't know what...

    Here is my SRP6 class :

    [C#] using SharpCore.Framework.DataExtensions; using System; using System.Collectio - Pastebin.com

    When i create an account, i create an instance of SRP6 to generate S and V to store it into database.
    Last edited by julienguillot; 07-28-2017 at 06:05 AM.

Page 1 of 3 123 LastLast

Similar Threads

  1. BNET Authentication and wow login
    By daCoder in forum WoW Memory Editing
    Replies: 15
    Last Post: 05-03-2014, 10:33 PM
  2. Leaving MMOwned and WoW
    By Jones4ever in forum Community Chat
    Replies: 16
    Last Post: 03-19-2007, 09:07 PM
  3. Itunes and WoW
    By Kenidiern in forum Community Chat
    Replies: 5
    Last Post: 03-06-2007, 11:36 AM
  4. Naruto and WoW?
    By Fenarth in forum World of Warcraft General
    Replies: 6
    Last Post: 01-23-2007, 06:15 AM
All times are GMT -5. The time now is 06:45 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search