Protocols/OSCAR/Services/BART/Tutorials: Difference between revisions

From NINA Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 100: Line 100:
</td></tr></table>
</td></tr></table>


== Download ==


=== From Aleksandr Shutko: Download icon sequence example dump ===
<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=#4040FF >
<table width=100% cellSpacing=0 cellPadding=0 border=0>
<tr><td><b><font color="white">&nbsp;Download icon sequence example dump&nbsp;</font></b></td>
<td width=20% align=right><b><font color="white">&nbsp;</font></b></td>
</tr></table></td></tr></table>
</td></tr></table>
<table width=640 cellSpacing=0 cellPadding=0 border=0><tr><td><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=610 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td colspan=3 height=4> </td></tr><tr>
<td width=7>&nbsp;</td><td valign=top>
<font size=3><pre style="font-size: 13px">
  // User 348934774 status notification from server with TLV(0x1D)
  2A 02 26 0D 00 CF 00 03  00 0B 00 00 C8 4B 72 3D  *.&..........Kr=
  09 33 34 38 39 33 34 37  37 34 00 00 00 09 00 01  .348934774......
  00 02 00 50 00 0C 00 25  00 00 00 00 00 00 00 00  ...P...%........
  04 00 09 CD A9 3C 4C 00  00 7C 0F 00 00 00 01 00  .....&lt;L..|......
  00 00 00 00 00 00 00 00  00 00 00 00 00 00 0A 00  ................
  04 00 00 00 00 00 06 00  04 10 00 00 00 00 19 00  ................
  08 13 49 13 4C 13 4E 13  44 00 0D 00 40 56 3F C8  ..I.L.N.D...@V?.
  09 0B 6F 41 BD 9F 79 42  26 09 DF A2 F3 17 8C 2D  ..oA..yB&......-
  9B DA A5 45 BB 8D DB F3  BD BD 53 A1 0A 97 B1 27  ...E......S....'
  51 24 3C 43 34 AD 22 D6  AB F7 3F 14 92 1A 09 3C  Q$&lt;C4."...?....&lt;
  6C D7 FD 4E C5 9D 51 A6  47 4E 34 F5 A0 00 0F 00  l..N..Q.GN4.....
  04 00 00 03 AE 00 1D 00  14 00 01 01 10 0B 56 66  ..............Vf
  D6 16 5E 31 75 20 8D 3F  0C 38 38 87 4C 00 03 00  ..^1u .?.88.L...
  04 41 EC 78 5A                                    .A.xZ
  -------------------------------------------------------------------
  // Client request and setup SSBI service connection
  // Client request user 348934774 icon from server - SNAC(10,06)
  2A 02 01 0D 00 29 00 10  00 06 00 00 2A 95 00 06  *....)......*...
  09 33 34 38 39 33 34 37  37 34 01 00 01 01 10 0B  .348934774......
  56 66 D6 16 5E 31 75 20  8D 3F 0C 38 38 87 4C    Vf..^1u .?.88.L
  // User 348934774 icon reply from server - SNAC(10,07)
  2A 02 B9 0B 13 BC 00 10  00 07 00 00 2A 95 00 06  *...........*...
  09 33 34 38 39 33 34 37  37 34 00 01 01 10 0B 56  .348934774.....V
  66 D6 16 5E 31 75 20 8D  3F 0C 38 38 87 4C 00 00  f..^1u .?.88.L..
  01 01 10 0B 56 66 D6 16  5E 31 75 20 8D 3F 0C 38  ....Vf..^1u .?.8
  38 87 4C 13 7D FF D8 FF  E0 00 10 4A 46 49 46 00  8.L.}......JFIF.
  01 01 01 00 60 00 60 00  00 FF DB 00 43 00 01 01  ....`.`.....C...
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 FF DB  ................
  00 43 01 01 01 01 01 01  01 01 01 01 01 01 01 01  .C..............
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  ...........
  50 7F 9B 0A 2A 55 8B 72  A9 5C B6 41 DD F2 37 CA  P...*U.r.\.A..7.
  72 40 5C 83 86 CA 85 6C  8F EF 63 B5 14 F9 E3 7B  r@\....l..c....{
  5F AD BA 2E A9 75 D7 AF  E6 D7 40 51 6D 27 CB 17  _....u....@Qm'..
  EA DF 75 DA 5F D6 BD 8F  FF D9                    ..u._.....
</pre></font>
</font>
</td><td width=7>&nbsp;</td></tr>
<tr><td colspan=3>&nbsp;</td></tr></table>
</td></tr></table>
</td></tr></table>
</td></tr></table>
=== From Aleksandr Shutko: Upload/download server-stored buddy icons (SSBI) sequences ===
<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=#4040FF >
<table width=100% cellSpacing=0 cellPadding=0 border=0>
<tr>
<td><b><font color="white">&nbsp;OSCAR sequences&nbsp;</font></b></td>
<td width=40% align=right><b><font color="white">&nbsp;</font></b></td>
</tr>
</table>
</td></tr>
</table>
</td></tr></table>
<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=100% cellSpacing=0 cellPadding=0 bgcolor="#4040FF" border=0>
<tr>
<td><b><font size=2 color="white">&nbsp;&nbsp;Upload/download server-stored buddy icons (SSBI) sequences</font></b></td>
</tr>
</table>
</td></tr>
<tr><td bgcolor=#E9E9E9>
<table width=100% cellSpacing=0 cellPadding=0 border=0>
<tr><td colspan=3 height=5></td></tr>
<tr><td width=5>&nbsp;</td>
<td>
&nbsp;&nbsp;&nbsp;&nbsp;
SSBI service allows clients to store and retrieve little buddy icons called
ICQ avatars. Icon size is limited by size of flap packet (~8kb). Every icon has
unique combination of id (word), flags (byte) and md5 hash. AOL BOS server
doesn't support [[Protocols/OSCAR/SNAC_10|SSBI]] service so you should
request it and setup as described [[Protocols/OSCAR/SNAC/OSERVICE_SERVICE_REQUEST|here]].
<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;
To upload own icon to server you should calculate icon md5 hash and store it
as ssi type=0x14 item. Then you'll get [[Protocols/OSCAR/SNAC_01_21|SNAC(01,21)]]
with icon flags bit8=1 - this is a command for you to start icon upload.
Here is the sequence description ([[Protocols/OSCAR/Services/BART/Tutorials|example dump]]):
<br><br>
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td width=20></td>
<td>
<table width=580 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#7070D0><b><font size=2 color=white>&nbsp;Upload own icon to server</font></b></td></tr>
<tr><td bgcolor=#E5E5E5>
<table width=580 cellSpacing=1 cellPadding=1 border=0>
<tr>
<td bgcolor=#f9f9f9 width=35 valign=top>&nbsp;&nbsp;<b>&gt;&gt;</b></td>
<td bgcolor=#f9f9f9 width=120 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_13_08|SNAC(13,08)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[BOS] User add icon id/flags/md5 hash to server (ssi type=14)</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>&lt;&lt;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_13_0e|SNAC(13,0E)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[BOS] Server reply command ok (errcode=0x00)</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>&lt;&lt;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_01_21|SNAC(01,21)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[BOS] Server command to upload icon (icon flags bit8=1)</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 colspan=3 height=25 valign=middle><font size=2>&nbsp;&nbsp;Client check/prepare SSBI connection</font></td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>&gt;&gt;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_10_02|SNAC(10,02)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[SSBI] Client sends icon to server</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>&lt;&lt;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_10_03|SNAC(10,03)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[SSBI] Server reply with icon id/flags/md5 hash or with error</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 colspan=3 height=25 valign=middle><font size=2>&nbsp;&nbsp;All your buddies will receive [[Protocols/OSCAR/SNAC_03_0b|SNAC(03,0B)]] with TLV(0x1D) here</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>&lt;&lt;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_01_21|SNAC(01,21)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[BOS] Server ext status notification (icon flags bit8=0)</td>
</tr>
</table>
</td></tr></table>
</td></tr></table>
</td></tr></table>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;To download icon from server you should know user
uin/screenname, icon id, icon flags and its md5 hash. You can get all needed
information from [[Protocols/OSCAR/SNAC_03_0b|SNAC(03,0B)]] containing TLV(0x1D).
Official ICQ clients also use [[Protocols/OSCAR/SNAC_10_06|SNAC(10,06)]] to get
client own icon after receiving [[Protocols/OSCAR/SNAC_01_21|SNAC(01,21)]]. Here
is the sequence ([[Protocols/OSCAR/Services/BART/Tutorials#Download|example dump]]):
<br><br>
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td width=20></td>
<td>
<table width=580 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#7070D0><b><font size=2 color=white>&nbsp;Downloading buddy/own icon from server</font></b></td></tr>
<tr><td bgcolor=#E5E5E5>
<table width=580 cellSpacing=1 cellPadding=1 border=0>
<tr>
<td bgcolor=#f9f9f9 width=35 valign=top>&nbsp;&nbsp;<b>&gt;&gt;</b></td>
<td bgcolor=#f9f9f9 width=120 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_03_0B|SNAC(03,0B)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[BOS] User status notification from server (with TLV(0x1D))</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 colspan=3 height=25 valign=middle><font size=2>&nbsp;&nbsp;Client check/prepare SSBI connection</font></td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>&gt;&gt;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_10_06|SNAC(10,06)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[SSBI] Client sends icon request to server</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>&gt;&gt;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;<b>[[Protocols/OSCAR/SNAC_10_07|SNAC(10,07)]]</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;[SSBI] Server reply with requested icon</td>
</tr>
</table>
</td></tr></table>
</td></tr></table>
</td></tr></table>
<br>
</td><td width=15>
</td></tr></table>
</td></tr></table>
</td></tr></table>
[[Category:With_Contrib]]
[[Category:With_Contrib]]



Latest revision as of 00:19, 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)


Getting a User's Buddy Icon

Step #1 - Finding the icon for a user

First the client will need to discover what the Buddy icon BART ID is for the user. Depending on display, the client will want to look inside the USERINFO for either the ICBM__CHANNEL_MSG_TOCLIENT SNAC or BUDDY__ARRIVED SNAC. The USERINFO will contain an array of BART IDs and the client should select the one with the BART__ID_TYPES Class for which it is looking.

Step #2 - Connecting to BART

If the client is not already connected to the BART server it will need to do so.

  1. Send a OSERVICE__SERVICE_REQUEST to BOSS with the foodgroup of BART.
  2. Wait for a OSERVICE__SERVICE_RESPONSE from BOSS.
  3. Using the RECONNECT_HERE tag, connect to the BART server.
  4. Using the LOGIN_COOKIE tag send a FLAP SIGNON packet, just like connecting to BOSS.
  5. Send a OSERVICE__CLIENT_ONLINE SNAC to the BART server.

Step #3 - Downloading from BART

Once connected to BART, use the BART__DOWNLOAD2_QUERY SNAC to download as many assets as required.

Step #4 - Display Icon

Display the image.


From Aleksandr Shutko: Upload icon sequence example dump

 Upload icon sequence example dump   

 

  // [BOS] Client command: add icon md5 hash item type=0x14 to ssi
  2A 02 12 AA 00 2F 00 13  00 08 00 00 3E C9 00 08  *..../......>...
  00 01 31 00 00 18 13 00  14 00 1A 00 D5 00 12 01  ..1.............
  10 EC 7B 60 67 CF D1 01  99 0C BD 33 F9 00 FC 4B  ..{`g......3...K
  9B 01 31 00 00                                    ..1..

  // [BOS] Server ack - success
  2A 02 26 04 00 14 00 13  00 0E 80 00 3E C9 00 08  *.&.........>...
  00 06 00 01 00 02 00 04  00 00                    ..........

  // [BOS] Server ext status - command to start upload (flags=0x41)
  2A 02 26 05 00 26 00 01  00 21 80 00 C8 48 FF FB  *.&..&...!...H..
  00 06 00 01 00 02 00 04  00 01 41 10 EC 7B 60 67  ..........A..{`g
  CF D1 01 99 0C BD 33 F9  00 FC 4B 9B              ......3...K.

  -------------------------------------------------------------------
  // Client request and setup SSBI service connection

  // [SSBI] Icon upload request
  2A 02 01 0C 16 19 00 10  00 02 00 00 77 C3 00 02  *...........w...
  00 01 16 0B FF D8 FF E0  00 10 4A 46 49 46 00 01  ..........JFIF..
  01 01 00 60 00 60 00 00  FF DB 00 43 00 01 01 01  ...`.`.....C....
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 FF DB 00  ................
  43 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  C...............
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  ...........
  AF 62 78 7B CD DA 35 E2  AE 92 55 27 4A 13 49 72  .bx{..5...U'J.Ir
  2F 7A 0E B5 E3 27 76 DC  5D 9A D9 A4 EE 8C 28 E4  /z...'v.].....(.
  B8 BA 94 A9 CE 58 8C B9  4A 51 8B 92 78 C4 DF 35  .....X..JQ..x..5
  A3 CC EE A9 C9 35 74 DA  92 94 94 92 52 52 69 A6  .....5t.....RRi.
  7F FF D9                                          ...

  // [SSBI] Server upload result reply - success
  2A 02 B9 0A 00 1F 00 10  00 03 00 00 77 C3 00 02  *...........w...
  00 00 01 01 10 EC 7B 60  67 CF D1 01 99 0C BD 33  ......{`g......3
  F9 00 FC 4B 9B                                    ...K.

  -------------------------------------------------------------------

  // [BOS] Server ext status notification
  2A 02 26 07 00 26 00 01  00 21 80 00 C8 49 4C 87  *.&..&...!...IL.
  00 06 00 01 00 02 00 04  00 01 01 10 EC 7B 60 67  .............{`g
  CF D1 01 99 0C BD 33 F9  00 FC 4B 9B              ......3...K.


 
 

Download

From Aleksandr Shutko: Download icon sequence example dump

 Download icon sequence example dump   

 

  // User 348934774 status notification from server with TLV(0x1D)
  2A 02 26 0D 00 CF 00 03  00 0B 00 00 C8 4B 72 3D  *.&..........Kr=
  09 33 34 38 39 33 34 37  37 34 00 00 00 09 00 01  .348934774......
  00 02 00 50 00 0C 00 25  00 00 00 00 00 00 00 00  ...P...%........
  04 00 09 CD A9 3C 4C 00  00 7C 0F 00 00 00 01 00  .....<L..|......
  00 00 00 00 00 00 00 00  00 00 00 00 00 00 0A 00  ................
  04 00 00 00 00 00 06 00  04 10 00 00 00 00 19 00  ................
  08 13 49 13 4C 13 4E 13  44 00 0D 00 40 56 3F C8  ..I.L.N.D...@V?.
  09 0B 6F 41 BD 9F 79 42  26 09 DF A2 F3 17 8C 2D  ..oA..yB&......-
  9B DA A5 45 BB 8D DB F3  BD BD 53 A1 0A 97 B1 27  ...E......S....'
  51 24 3C 43 34 AD 22 D6  AB F7 3F 14 92 1A 09 3C  Q$<C4."...?....<
  6C D7 FD 4E C5 9D 51 A6  47 4E 34 F5 A0 00 0F 00  l..N..Q.GN4.....
  04 00 00 03 AE 00 1D 00  14 00 01 01 10 0B 56 66  ..............Vf
  D6 16 5E 31 75 20 8D 3F  0C 38 38 87 4C 00 03 00  ..^1u .?.88.L...
  04 41 EC 78 5A                                    .A.xZ

  -------------------------------------------------------------------
  // Client request and setup SSBI service connection

  // Client request user 348934774 icon from server - SNAC(10,06)
  2A 02 01 0D 00 29 00 10  00 06 00 00 2A 95 00 06  *....)......*...
  09 33 34 38 39 33 34 37  37 34 01 00 01 01 10 0B  .348934774......
  56 66 D6 16 5E 31 75 20  8D 3F 0C 38 38 87 4C     Vf..^1u .?.88.L

  // User 348934774 icon reply from server - SNAC(10,07)
  2A 02 B9 0B 13 BC 00 10  00 07 00 00 2A 95 00 06  *...........*...
  09 33 34 38 39 33 34 37  37 34 00 01 01 10 0B 56  .348934774.....V
  66 D6 16 5E 31 75 20 8D  3F 0C 38 38 87 4C 00 00  f..^1u .?.88.L..
  01 01 10 0B 56 66 D6 16  5E 31 75 20 8D 3F 0C 38  ....Vf..^1u .?.8
  38 87 4C 13 7D FF D8 FF  E0 00 10 4A 46 49 46 00  8.L.}......JFIF.
  01 01 01 00 60 00 60 00  00 FF DB 00 43 00 01 01  ....`.`.....C...
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 FF DB  ................
  00 43 01 01 01 01 01 01  01 01 01 01 01 01 01 01  .C..............
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01  ................
  ...........
  50 7F 9B 0A 2A 55 8B 72  A9 5C B6 41 DD F2 37 CA  P...*U.r.\.A..7.
  72 40 5C 83 86 CA 85 6C  8F EF 63 B5 14 F9 E3 7B  r@\....l..c....{
  5F AD BA 2E A9 75 D7 AF  E6 D7 40 51 6D 27 CB 17  _....u....@Qm'..
  EA DF 75 DA 5F D6 BD 8F  FF D9                    ..u._.....


 
 


From Aleksandr Shutko: Upload/download server-stored buddy icons (SSBI) sequences

 OSCAR sequences   



  Upload/download server-stored buddy icons (SSBI) sequences
 

     SSBI service allows clients to store and retrieve little buddy icons called ICQ avatars. Icon size is limited by size of flap packet (~8kb). Every icon has unique combination of id (word), flags (byte) and md5 hash. AOL BOS server doesn't support SSBI service so you should request it and setup as described here.

     To upload own icon to server you should calculate icon md5 hash and store it as ssi type=0x14 item. Then you'll get SNAC(01,21) with icon flags bit8=1 - this is a command for you to start icon upload. Here is the sequence description (example dump):

 Upload own icon to server
  >>   SNAC(13,08)   [BOS] User add icon id/flags/md5 hash to server (ssi type=14)
  <<   SNAC(13,0E)   [BOS] Server reply command ok (errcode=0x00)
  <<   SNAC(01,21)   [BOS] Server command to upload icon (icon flags bit8=1)
  Client check/prepare SSBI connection
  >>   SNAC(10,02)   [SSBI] Client sends icon to server
  <<   SNAC(10,03)   [SSBI] Server reply with icon id/flags/md5 hash or with error
  All your buddies will receive SNAC(03,0B) with TLV(0x1D) here
  <<   SNAC(01,21)   [BOS] Server ext status notification (icon flags bit8=0)


    To download icon from server you should know user uin/screenname, icon id, icon flags and its md5 hash. You can get all needed information from SNAC(03,0B) containing TLV(0x1D). Official ICQ clients also use SNAC(10,06) to get client own icon after receiving SNAC(01,21). Here is the sequence (example dump):

 Downloading buddy/own icon from server
  >>   SNAC(03,0B)   [BOS] User status notification from server (with TLV(0x1D))
  Client check/prepare SSBI connection
  >>   SNAC(10,06)   [SSBI] Client sends icon request to server
  >>   SNAC(10,07)   [SSBI] Server reply with requested icon