If you want to create an
GPLed version of the AOL Client, this information could be somewhat useful.. I think.
This is the first layer above TCP/IP.
If you want somewhere to send the packets to, try connecting to americaonline.aol.com port 5190.
Packet Start:
1 byte: Magic start byte: 0x5A
2 bytes: CRC-16 of the following 5+x bytes
2 bytes (short): Length of data + 3
1 byte: Transmit sequence number
1 byte: Receive sequence number
1 byte: packet type
x bytes: data
1 byte: Magic end byte: 0x0D
Packet End.
Transmit sequence number is 0x7F the first time. After that, for the client, use the server's last Receive sequence number + 1 (unless it is a nonstandard packet type, in which case the Transmit sequence = server's receive sequence). If multi-packet, increment it for each packet you send. If you get to 0x7E, don't increment, set it to 0x10 instead.
The same goes for the receive sequence number, except that it should not be incremented, unless you are the server.
As for packet type, for client side packets this is usually 0xA0, unless it is a Heartbeat, ACK, or "error in last packet received" packet.
Special packet types:
0xA0 - client, normal
0xA3 - client, init packet (not standard FDO as data)
0x20 - server, normal
0x26 - server, heartbeat packet ("are you there?")
0xA4 - client, acknowledgement ("yes, I am here")
The
CRC is a standard CRC-16 (polynomial 0xA001).