Protocols/OSCAR/SNAC/BUCP LOGIN REQUEST: Difference between revisions

From NINA Wiki
Jump to navigation Jump to search
(Created page with "{{Protocols/OSCAR}} {{Protocols/OSCAR/SNAC/Stats |origin={{Protocols/OSCAR/SNAC/BUCP__LOGIN_REQUEST/Origin}} |name=BUCP__LOGIN_REQUEST |id=0x0017, 0x0002 |service={{Protocols/...")
 
No edit summary
 
Line 19: Line 19:
=== SNAC Data ===
=== SNAC Data ===
Unconfirmed: This SNAC contains no data
Unconfirmed: This SNAC contains no data
=== From Aleksandr Shutko: SNAC(17,02) BUCP__LOGIN_REQUEST ===
<table width=640 cellSpacing=0 cellPadding=0 border=0>
<tr>
<td>
<br>
Client use this snac to login to server
([[Protocols/OSCAR/Sign_On|md5 login sequence]]). Server should reply via
[[Protocols/OSCAR/SNAC_17_03|SNAC(17,03)]], containing BOS address/cookie or
errorcode. Password hash creating: <br><br>
You'll need password, authkey from [[Protocols/OSCAR/SNAC_17_07|SNAC(17,07)]] and RFC 1321 md5 routines:<br><br>
<font color=blue>
<font size=3><pre style="font-size: 13px">
  <font color=red>#define AUTH_SALT_MD5 "AOL Instant Messenger (SM)"</font>
  <font color=gray>/* calculate md5-hash to send to server */</font>
  md5_init(&state);
  md5_append(&state, (const md5_byte_t *)authkey, strlen(authkey));
  md5_append(&state, (const md5_byte_t *)passwd, strlen(passwd));
  md5_append(&state, (const md5_byte_t *)AUTH_SALT_MD5, strlen(AUTH_SALT_MD5));
  md5_finish(&state, (md5_byte_t *)auth_hash);
  <font color=gray>/* Now we ready send to server auth_hash array (16 bytes long) */</font>
</pre></font>
</font>
<br>
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td  bgcolor=#E9E9E9 >
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr>
<td width=23%>&nbsp;00 17</td>
<td width=5>&nbsp;</td>
<td>word</td>
<td width=5>&nbsp;</td>
<td width=58%>SNAC family</td>
</tr>
<tr>
<td>&nbsp;00 02</td>
<td>&nbsp;</td>
<td>word</td>
<td>&nbsp;</td>
<td>SNAC subtype</td>
</tr>
<tr>
<td>&nbsp;00 00</td>
<td>&nbsp;</td>
<td>word</td>
<td>&nbsp;</td>
<td>SNAC flags</td>
</tr>
<tr>
<td>&nbsp;xx xx xx xx</td>
<td>&nbsp;</td>
<td>dword</td>
<td>&nbsp;</td>
<td>SNAC request-id</td>
</tr>
</table>
</td></tr>
<tr><td bgcolor=#E9E9E9>
<!-- TLV 0x01 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 01</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x01) - screen name</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx ..</td>
  <td width=5>&nbsp;</td>
  <td>string</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Screen name</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x03 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 03</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x03) - client id string</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx ..</td>
  <td width=5>&nbsp;</td>
  <td>string</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client id string (name, version)</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x25 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 25</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x25) - password md5 hash</td>
  </tr>
  <tr>
  <td>&nbsp;00 10</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>
      &nbsp;xx xx xx xx<br>
      &nbsp;xx xx xx xx<br>
      &nbsp;xx xx xx xx<br>
      &nbsp;xx xx xx xx<br>
  </td>
  <td width=5>&nbsp;</td>
  <td>array</td>
  <td width=5>&nbsp;</td>
  <td width=60%>password md5 hash</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x16 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 16</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x16) - client id</td>
  </tr>
  <tr>
  <td>&nbsp;00 02</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client id number</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x17 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 17</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x17) - client major version</td>
  </tr>
  <tr>
  <td>&nbsp;00 02</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client major version</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x18 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 18</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x18) - client minor version</td>
  </tr>
  <tr>
  <td>&nbsp;00 02</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client minor version</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x19 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 19</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x19) - client lesser version</td>
  </tr>
  <tr>
  <td>&nbsp;00 02</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client lesser version</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x1A -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 1A</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x1A) - client build number</td>
  </tr>
  <tr>
  <td>&nbsp;00 02</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client build number</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x14 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 14</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x14) - distribution number</td>
  </tr>
  <tr>
  <td>&nbsp;00 04</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Distribution number</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x0f -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 0F</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x0F) - client language (2 symbols)</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx ..</td>
  <td width=5>&nbsp;</td>
  <td>string</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client language</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x0E -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 0E</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x0E) - client country (2 symbols)</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx ..</td>
  <td width=5>&nbsp;</td>
  <td>string</td>
  <td width=5>&nbsp;</td>
  <td width=60%>Client country</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x4A -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;00 0F</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Type(0x4A) - SSI use flag</td>
  </tr>
  <tr>
  <td>&nbsp;00 01</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=60%>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=20%>&nbsp;xx</td>
  <td width=5>&nbsp;</td>
  <td>char</td>
  <td width=5>&nbsp;</td>
  <td width=60%>SSI flag: 1 - SSI only, 0 - family 0x03</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
  <table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
  <table width=100% cellSpacing=2 cellPadding=0 align=center border=0>
  <tr><td bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0 class=corr>
    <tr><td>&nbsp;May contain other tlv from the [[Protocols/OSCAR/TLV#Common_TLVs|following    list]]</td></tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
</td></tr></table>
</td></tr></table>
</td></tr></table>
<br>Example SNAC dump with flap header:
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr>
<td bgcolor=#E9E9E9>
<font size=3><pre style="font-size: 13px">
  2A 02 50 0F 00 95 00 17  00 02 00 00 00 00 00 00 *.P.............
  00 01 00 07 36 32 31 38  38 39 35 00 25 00 10 77 ....6218895.%..w
  D2 88 A0 1B 2E 22 D0 8A  75 A6 34 DD 7C 7C A9 00 ....."..u.4.....
  4C 00 00 00 03 00 2D 41  4F 4C 20 49 6E 73 74 61 L.....-AOL Insta
  6E 74 20 4D 65 73 73 65  6E 67 65 72 2C 20 76 65 nt Messenger, ve
  72 73 69 6F 6E 20 35 2E  31 2E 33 30 33 36 2F 57 rsion 5.1.3036/W
  49 4E 33 32 00 16 00 02  01 09 00 17 00 02 00 05 IN32............
  00 18 00 02 00 01 00 19  00 02 00 00 00 1A 00 02 ................
  0B DC 00 14 00 04 00 00  00 D2 00 0F 00 02 65 6E ..............en
  00 0E 00 02 75 73 00 4A  00 01 01                ....us.J...
</pre></font>
</td></tr></table>
</td></tr></table>
[[Category:With_Contrib]]


=== BUCP SNACs ===
=== BUCP SNACs ===

Latest revision as of 00:24, 14 February 2021

OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Origin Name Foodgroup Service Status Version
0x0017, 0x0002 Client BUCP__LOGIN_REQUEST Unspecified BUCP Active 1.15

Client login request.

SNAC Header

Foodgroup uint16 (word) 00 17
Subgroup uint16 (word) 00 02
Flags uint16 (word) 00 00
Request ID uint32 (dword) 00 00 00 00

SNAC Data

Unconfirmed: This SNAC contains no data

From Aleksandr Shutko: SNAC(17,02) BUCP__LOGIN_REQUEST


Client use this snac to login to server (md5 login sequence). Server should reply via SNAC(17,03), containing BOS address/cookie or errorcode. Password hash creating:

You'll need password, authkey from SNAC(17,07) and RFC 1321 md5 routines:

   <font color=red>#define AUTH_SALT_MD5 "AOL Instant Messenger (SM)"</font>

   <font color=gray>/* calculate md5-hash to send to server */</font>
   md5_init(&state);
   md5_append(&state, (const md5_byte_t *)authkey, strlen(authkey));
   md5_append(&state, (const md5_byte_t *)passwd, strlen(passwd));
   md5_append(&state, (const md5_byte_t *)AUTH_SALT_MD5, strlen(AUTH_SALT_MD5));
   md5_finish(&state, (md5_byte_t *)auth_hash);

   <font color=gray>/* Now we ready send to server auth_hash array (16 bytes long) */</font>


 00 17   word   SNAC family
 00 02   word   SNAC subtype
 00 00   word   SNAC flags
 xx xx xx xx   dword   SNAC request-id
 00 01   word   TLV.Type(0x01) - screen name
 xx xx   word   TLV.Length
 xx ..   string   Screen name
 00 03   word   TLV.Type(0x03) - client id string
 xx xx   word   TLV.Length
 xx ..   string   Client id string (name, version)
 00 25   word   TLV.Type(0x25) - password md5 hash
 00 10   word   TLV.Length
      xx xx xx xx
 xx xx xx xx
 xx xx xx xx
 xx xx xx xx
  array   password md5 hash
 00 16   word   TLV.Type(0x16) - client id
 00 02   word   TLV.Length
 xx xx   word   Client id number
 00 17   word   TLV.Type(0x17) - client major version
 00 02   word   TLV.Length
 xx xx   word   Client major version
 00 18   word   TLV.Type(0x18) - client minor version
 00 02   word   TLV.Length
 xx xx   word   Client minor version
 00 19   word   TLV.Type(0x19) - client lesser version
 00 02   word   TLV.Length
 xx xx   word   Client lesser version
 00 1A   word   TLV.Type(0x1A) - client build number
 00 02   word   TLV.Length
 xx xx   word   Client build number
 00 14   word   TLV.Type(0x14) - distribution number
 00 04   word   TLV.Length
 xx xx xx xx   dword   Distribution number
 00 0F   word   TLV.Type(0x0F) - client language (2 symbols)
 xx xx   word   TLV.Length
 xx ..   string   Client language
 00 0E   word   TLV.Type(0x0E) - client country (2 symbols)
 xx xx   word   TLV.Length
 xx ..   string   Client country
 00 0F   word   TLV.Type(0x4A) - SSI use flag
 00 01   word   TLV.Length
 xx   char   SSI flag: 1 - SSI only, 0 - family 0x03
 May contain other tlv from the following list


Example SNAC dump with flap header:


  2A 02 50 0F 00 95 00 17  00 02 00 00 00 00 00 00 *.P.............
  00 01 00 07 36 32 31 38  38 39 35 00 25 00 10 77 ....6218895.%..w
  D2 88 A0 1B 2E 22 D0 8A  75 A6 34 DD 7C 7C A9 00 ....."..u.4.....
  4C 00 00 00 03 00 2D 41  4F 4C 20 49 6E 73 74 61 L.....-AOL Insta
  6E 74 20 4D 65 73 73 65  6E 67 65 72 2C 20 76 65 nt Messenger, ve
  72 73 69 6F 6E 20 35 2E  31 2E 33 30 33 36 2F 57 rsion 5.1.3036/W
  49 4E 33 32 00 16 00 02  01 09 00 17 00 02 00 05 IN32............
  00 18 00 02 00 01 00 19  00 02 00 00 00 1A 00 02 ................
  0B DC 00 14 00 04 00 00  00 D2 00 0F 00 02 65 6E ..............en
  00 0E 00 02 75 73 00 4A  00 01 01                ....us.J...


BUCP SNACs

SNAC List
Subgroup Origin Name
0x0001 Any BUCP__ERR
This is the error SNAC for the BUCP foodgroup.
0x0002 Client BUCP__LOGIN_REQUEST
Client login request.
0x0003 Host BUCP__LOGIN_RESPONSE
Host login response, will contain reconnect information with login cookie or an error code and/or URL.
0x0004 Client BUCP__REGISTER_REQUEST
Client registration for legacy ICQ clients.
0x0005 Host BUCP__REGISTER_RESPONSE
Host response to BUCP__REGISTER_REQUEST. May contain confirmation of registration or an error code and/or URL.
0x0006 Client BUCP__CHALLENGE_REQUEST
Request challenge for login request.
0x0007 Host BUCP__CHALLENGE_RESPONSE
Response to BUCP__CHALLENGE_REQUEST with challenge.
0x0008 Client BUCP__ASASN_REQUEST
AOL Suggest A Screenname Request, suggests screennames based on other parameters.
0x0009 Host BUCP__ASASN_RESPONSE
Response to BUCP__ASASN_REQUEST with a list of suggestions
0x000A Host BUCP__SECURID_REQUEST
Host SecurID request for client to continue logging in.
0x000B Client BUCP__SECURID_RESPONSE
Client response to BUCP__SECURID_RESPONSE with SecurID code.
0x000C Client BUCP__REGISTRATION_IMAGE_REQUEST
Request registration image, or CAPTCHA
0x000D Host BUCP__REGISTRATION_IMAGE_REPLY
Response to BUCP__REGISTRATION_IMAGE_REQUEST containing image information