Re: ICQ charsets.

Jason Townsend <[email protected]> Sat, 4 Jun 2005 20:36:44 -0700
Newsgroups gmane.network.fire.devel
Message-ID <[email protected]>
On Jun 4, 2005, at 7:11 PM, Elektron wrote:
> snort gives the following dumps when I'm sent "abc", "def", and=20
> "abc<opt-v>" by an Adium user (with my brother's ICQ number blanked=20
> appropriately):
>
> ***AP*** Seq: 0x678EFA8C  Ack: 0xDEAB692F  Win: 0x4000  TcpLen: 20
> 2A 02 CC 63 00 58 00 04 00 07 00 00 91 E3 C1 80  *..c.X..........
> 9B 4D 39 F6 F7 E8 A1 05 00 01 08                 .M9........xxxxx
> 39 38 39 00 00 00 04 00 01 00 02 00 50 00 06 00  989.........P...
> 04 20 03 00 00 00 0F 00 04 00 00 00 9B 00 03 00  . ..............
> 04 42 A2 55 65 00 02 00 11 05 01 00 02 01 06 01  .B.Ue...........
> 01 00 07 00 00 00 00 61 62 63 00 0B 00 00        .......abc....
>
> ***AP*** Seq: 0x678EFAEA  Ack: 0xDEAB692F  Win: 0x4000  TcpLen: 20
> 2A 02 CC 64 00 58 00 04 00 07 00 00 91 E3 C7 E2  *..d.X..........
> D3 FE ED A5 D5 F3 D9 E4 00 01 08                 ...........xxxxx
> 39 38 39 00 00 00 04 00 01 00 02 00 50 00 06 00  989.........P...
> 04 20 03 00 00 00 0F 00 04 00 00 00 9D 00 03 00  . ..............
> 04 42 A2 55 65 00 02 00 11 05 01 00 02 01 06 01  .B.Ue...........
> 01 00 07 00 00 00 00 64 65 66 00 0B 00 00        .......def....
>
> ***AP*** Seq: 0x678EFB6B  Ack: 0xDEAB6975  Win: 0x4000  TcpLen: 20
> 2A 02 CC 66 00 5D 00 04 00 07 00 00 91 E3 E4 0D  *..f.]..........
> 5B FA 6C C3 51 E2 20 AE 00 01 08                 [.l.Q. ....xxxxx
> 39 38 39 00 00 00 04 00 01 00 02 00 50 00 06 00  989.........P...
> 04 20 03 00 00 00 0F 00 04 00 00 00 A4 00 03 00  . ..............
> 04 42 A2 55 65 00 02 00 16 05 01 00 02 01 06 01  .B.Ue...........
> 01 00 0C 00 02 00 00 00 61 00 62 00 63 22 1A 00  ........a.b.c"..
> 0B 00 00                                         ...
>
> It looks like there's a length-prefixed string (two bytes big-endian,=20=

> confirmed with strings longer than 256 chars), and then a four-byte=20
> prefix to the message, which is probably two bytes for the text=20
> encoding and two bytes reserved, followed by the message.
>
> Fire incorrectly interprets the string as a blank line. I assume=20
> something truncates it at the null char. I don't know what the=20
> 'correct' behaviour is, but when the text encoding is set to UTF-16, I=20=

> still get a blank line. It also translates normal text into mostly=20
> chinese characters. It doesn't look at the character set embedded into=20=

> the message.
>
> Now, when I *send* something (anything!) as UTF-8,
>
> ***AP*** Seq: 0xDEAB6AF0  Ack: 0x678F0612  Win: 0xFFFF  TcpLen: 20
> 2A 02 2E 40 00 34 00 04 00 06 00 00 00 00 00 00  *[email protected]..........
> 00 00 00 00 00 00 00 00 00 01 08                 ...........xxxxx
> 39 38 39 00 02 00 0F 05 01 00 01 01 01 01 00 06  989.............
> 00 00 00 00 FE FF 00 06 00 00                    ..........
>
> Obviously, it's truncating everything at the byte prefix. It also=20
> doesn't send the 00020000 prefix to signify big endian UTF8. It's=20
> interpreted as ISO-latin-1 (I suppose, anyway), which gives "latin=20
> small letter thorn", y-umlaut. It's even stranger when I tell him to=20=

> send it back to me:
>
> ***AP*** Seq: 0x678F19F0  Ack: 0xDEAB7009  Win: 0x4000  TcpLen: 20
> 2A 02 CC B8 00 57 00 04 00 07 00 00 91 F3 BF 44  *....W.........D
> 93 B3 73 7E 1B 27 D9 C4 00 01 08                 ..s~.'.....xxxxx
> 39 38 39 00 00 00 04 00 01 00 02 00 50 00 06 00  989.........P...
> 04 20 03 00 00 00 0F 00 04 00 00 04 EA 00 03 00  . ..............
> 04 42 A2 55 65 00 02 00 10 05 01 00 02 01 06 01  .B.Ue...........
> 01 00 06 00 03 00 00 FE FF 00 0B 00 00           .............
>
> I don't know what encoding 00030000 is, but I assume it's iso-latin-1=20=

> or similar, and 00000000 is for plain ASCII only, though it falls back=20=

> to iso-latin-1. This is, of course, Adium's behaviour, but it's bound=20=

> to be closer to the standard than truncating at the first null char.
>
> Something needs to be fixed here. I'm sick of telling him that he's=20
> sending me blank lines.
>
> The exact same message on AIM is similar (except AIM annoyingly forces=20=

> me to send HTML AAAAAARGH):
>
> ***AP*** Seq: 0xAA62E40A  Ack: 0x5F62FE24  Win: 0x4000  TcpLen: 20
> 2A 02 26 DE 00 5D 00 04 00 07 00 00 91 DA 50 0D  *.&..]........P.
> 1F 3C 6D 19 9D 38 DE 10 00 01 08                 .<m..8.....xxxxx
> 39 38 39 00 00 00 04 00 01 00 02 00 50 00 06 00  989.........P...
> 04 20 03 00 00 00 0F 00 04 00 00 07 9F 00 03 00  . ..............
> 04 42 A2 55 65 00 02 00 16 05 01 00 02 01 06 01  .B.Ue...........
> 01 00 0C 00 02 00 00 00 61 00 62 00 63 22 1A 00  ........a.b.c"..
> 0B 00 00                                         ...
>
> This time, however, it correctly shows up as abc=C3. Whether that =
shows=20
> up in your mail client is another story. Maybe using the AIM library=20=

> for ICQ would fix some things.
>
> But then, AIM leaves much to be desired (like all the HTML tags it=20
> sends x.x).
>
> - Purr

In the current TOT CVS code you have the choice of using either=20
libicq2000 or libfaim for ICQ. Which library/Fire version are you=20
using? I'm hoping this problem is specific to libicq2000.

-Jason



-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20