• 0

[VB.NET] Encrypting password in MD5


Question

I'm working on an Oscar client.. basically, I send the server a request for an "auth key" and the server sends the "auth key" which should be used to encrypt the password in MD5.

(to server) auth key please!

(to client) heres your auth key (in decimal): 50 54 49 50 54 48 55 57 55

(to server) here's my encrypted password: xxxxxxxxxx (how do i get this?)

Because there are no official Oscar protocol specs, I don't understand how I'm supposed to use MD5 to encrypt the password with this "auth key".

The reference I'm looking at is here: http://iserverd1.khstu.ru/oscar/snac_17_02.html

  Quote
You'll need password (note: I have that), authkey from SNAC(17,07) (note: I have that) and RFC 1321 md5 routines:

  #define AIM_MD5_STRING "AOL Instant Messenger (SM)"

  /* first we need md5-hash of our password */

  md5_init(&state);

  md5_append(&state, (const md5_byte_t *)passwd, strlen(passwd));

  md5_finish(&state, (md5_byte_t *)pass_hash);

  /* calculate md5-hash to send to server */

  md5_init(&state);

  md5_append(&state, (const md5_byte_t *)authkey, strlen(authkey));

  md5_append(&state, (const md5_byte_t *)pass_hash, sizeof(pass_hash));

  md5_append(&state, (const md5_byte_t *)AIM_MD5_STRING, strlen(AIM_MD5_STRING));

  md5_finish(&state, (md5_byte_t *)auth_hash);

  /* Now we ready send to server auth_hash array (16 bytes long) */

Obviously, this is in C (or c++ .. i dont know).. but appearantly, that's how you create the end result, but I can't make heads or tails of it.. how would I do it in vb.net?

Link to comment
https://www.neowin.net/forum/topic/240845-vbnet-encrypting-password-in-md5/
Share on other sites

5 answers to this question

Recommended Posts

  • 0

An oscar client? You are a brave my friend.

Public Shared Function MD5(ByVal stringIn As String) As Byte()
     ' You will need to make sure this is the encoding the server is expecting
     Dim bytesIn() As Byte = System.Text.Encoding.ASCII.GetBytes(stringIn)
     Dim bytesOut() As Byte = New System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(bytesIn)
     Return bytesOut
End Function

Remember MD5 isnt encryption, it's just a one-way hash algorithm.

  • 0

I was expecting a function that took two parameters (password, authkey).. for the most part, I couldve come up with that.. what I didnt understand in the original code was appending the authkey and password hash (as opposed to just concatenating the two strings), and how that changed the result.. so this doesnt help too much, but thanks anyway :) If you know how to do this though with appending, it will help a lot :yes:

do you have experience with the oscar protocol?

  • 0

Ah I see, you are going to need to do something like:

Dim passwordBytes() As Byte = MD5(myPassword)
Dim authBytes() As Byte = ' However you get this
Dim sendBytes(passwordBytes.Length + authBytes.Length - 1) As Byte
Array.Copy(passwordBytes, 0, sendBytes, 0, passwordBytes.Length)
Array.Copy(authBytes, 0, sendBytes, passwordBytes.Length, authBytes.Length)

  • 0

I don't know if this is correct. I'm not familiar with md5_append. Does it hash what's being stored?

Please note that this is just an example, not a full solution. I don't do those, unless I'm getting paid. ;)

	 Dim authkey_hash As Byte() =  {50, 54, 49, 50, 54, 48, 55, 57, 55}
 	 Const AIM_MD5_STRING As String = "AOL Instant Messenger (SM)"
 	 Dim data As Byte() = ASCIIEncoding.ASCII.GetBytes(textBox1.Text)
 	 Dim md5 As MD5 = New MD5CryptoServiceProvider
 	 Dim pass_hash As Byte() = md5.ComputeHash(data)
 	 Dim AIM_MD5_HASH As Byte() = ASCIIEncoding.ASCII.GetBytes(AIM_MD5_STRING)
 	 Dim auth_hash(pass_hash.Length + authkey_hash.Length + AIM_MD5_HASH.Length) As Byte
 	 Array.Copy(authkey_hash, 0, auth_hash, 0, authkey_hash.Length)
 	 Array.Copy(pass_hash, 0, auth_hash, authkey_hash.Length - 1, pass_hash.Length)
 	 Array.Copy(AIM_MD5_HASH, 0, auth_hash, (authkey_hash.Length - 1) + (pass_hash.Length - 1), AIM_MD5_HASH.Length)
 	 md5 = New MD5CryptoServiceProvider
 	 Dim send_hash As Byte() = md5.ComputeHash(auth_hash)
 	 textBox2.Text = ASCIIEncoding.ASCII.GetString(send_hash)

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Last I checked, their "support clock" runs for five years. So EOL at end of 2028 for this model? Roll your own looks better all the time. I do understand that's not for everyone. I think the least they could do is offer you six months of free cloud so you could migrate to new hardware when the time comes. Assuming you stick with them as your hardware vendor, of course.
    • Music Collection 3.9.1.1 by Razvan Serea Music Collection is a free tool to archive and manage your music library. Add CDs, LPs, tapes, or digital files manually or via the Internet. Retrieve album data by artist, title, barcode, catalog number, or CD scan. Auto-import metadata from audio files. Browse, sort, filter, export, import, and generate reports effortlessly. Music Collection features: The program creates the collection's database in a Microsoft Access format, so if you want later, you can use it, without the help of the program. The user can create as many as different collections wants. Accepts all kinds of musical media (cd, lp, dvd-a, audio files etc.). Specially customized to add and edit classical music albums. Retrieves data from the Internet, such as cd info, album cover, artist information, tracks, and the lyrics of each track etc. For every album the program saves all media contained, every medium tracks and the lyrics for every track. Displays albums using filters or the advanced search feature. Lists selected albums in a grid or using images (default setting). Presents all items contained in the album, in one page for an easy album overview. The details that are shown there are: album cover, album artists, notes, the tracks of each medium, the lyrics of each track and the duration of each one, as well as the total duration of the album. Exports album information to html file. Exports collection albums to html,txt,csv,excel files. Imports album information from text files exported by another program. Manages all program data, such as a list of singers, composers, etc. Manages artist information (biography, best albums). Prints all the data shown in each table.. Creates reports, which you can configure by your preference.. Manages album loans. Shows collection statistics. Searches for tracks and opens the album medium that contains them. Skinable. The user can select from 30 different skins. Multi-language support. Music Collection 3.9.1.1 changelog: Added: Show selected group item total duration. Added: Option to show only the checked albums. Added: Save the checked album property. Added: Play checked tracks. Fixed: Some minor bugs. Download: Music Collection 3.9.1.1 | 8.0 MB (Freeware) Download: Portable Music Collection 3.9.1.1 View: Music Collection Home page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Well, the interface is horrible. PST isn't fully functional. Can't properly import Thunderbird contacts into it. All that showed up are names.
    • "all the way down" by 33 whole dollars. Amazing. You shouldn't have.
    • If they make a portable version, I might give it a try, but I will always prefer hotkeys to that approach
  • Recent Achievements

    • Conversation Starter
      Kavin25 earned a badge
      Conversation Starter
    • One Month Later
      Leonard grant earned a badge
      One Month Later
    • Week One Done
      pcdoctorsnet earned a badge
      Week One Done
    • Rising Star
      Phillip0web went up a rank
      Rising Star
    • One Month Later
      Epaminombas earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      529
    2. 2
      ATLien_0
      207
    3. 3
      +FloatingFatMan
      168
    4. 4
      Michael Scrip
      150
    5. 5
      snowy owl
      125
  • Tell a friend

    Love Neowin? Tell a friend!