Tiếp tục với quá trình làm việc của YMSG Protocol
2. Quy trình giao dịch
Sơ đồ giao dịch giữa SC có dạng như hình dưới, trong đó các kết nối có kí hiệu “*” có thể tồn tại hoặc không.

1) Bước đầu tiên, Verify:
Nhằm xác thực một kết nối đến Yahoo server, bước này cho biết hệ thống mạng đang hoạt động bình thường.
- Service: Verify (76)
- Status: Default (0)
- Content: Null
2) Authorization:
Xin quyền xác thực tài khoản
- Service: Auth (13)
- Status: Default (0)
- Content: Username
Server sẽ phải tiếp nhận và đáp ứng lại một khoá chứng thực, theo kiểu challenging response (Xem thêm slide An toàn mạng), nếu quá trình chứng thực thành công, Username sẽ được thiết lập một flag Available (Online)
3) Buddies List:
Tiếp tục quá trình đăng nhập, trao đổi danh sách bạn bè, trạng thái
- Service: List (85) / (241)
- Status: Default (0)
4) Ping
Xem xét các nick online và status của nó.
5) Thực hiện chatting và các tuỳ chọn nâng cao khác (Chatroom, đổi giao diện chat, webcam….)
1) Sign In
Đây là bước quan trọng và phức tạp nhất trong mọi ứng dụng Messessger Protocol, cũng là chủ đề chính của các bài viết này. Bước này đòi hỏi sự đồng nhất giữa SC với chuẩn mã hoá tuân theo quy tắc riêng của mỗi ứng dụng tin nhắn.
Thiết lập socket tới csc.msg.yahoo.com:5050
csc.msg.yahoo.com chỉ là địa chỉ CNAME (Canonical name for an alias), DNS server sẽ xác định host cho csc.msg.yahoo.com và trả về các gói tin chứa thông tin cho biết máy chủ sẽ kết nối đến – Host Address (Cho thấy Yahoo có rất nhiều máy chủ phân tán).
scsc.msg.yahoo.com: type A, class IN, addr 66.163.181.167
scsc.msg.yahoo.com: type A, class IN, addr 66.163.181.168
....
scsc.msg.yahoo.com: type A, class IN, addr 66.163.181.193
....

Host có thời gian đáp ứng tốt nhất sẽ được chọn (Lúc này là Addr: 66.163.181.167)
Client gửi string Username cho Server
0000 3a fb 20 00 18 00 08 00 0f 00 00 00 08 00 45 00 :. ..... ......E.
0010 00 48 28 7a 40 00 80 06 a8 8a 0a 10 27 51 42 a3 .H(z@... ....'QB.
0020 b5 a7 0b b1 13 ba ce 6c 9a 63 9b cc e8 02 50 18 .......l .c....P.
0030 70 1c 9f e5 00 00 59 4d 53 47 00 0f 00 00 00 0c p.....YM SG......
0040 00 57 00 00 00 00 00 46 f5 b9 31 c0 80 76 69 65 .W.....F ..1..vie
0050 74 5f 76 71 c0 80 t_vq..
59 4d 53 47 – YMSG : standard header
00 0f - .. : Version 15, với 2 bytes đệm ở sau là 00 00
00 0c - .. : Packet Length, là độ dài của Content (12 bytes)
00 57 - .W : Service, chữ W (57) ra hiệu cho server trả về kí tự xác nhận (challenge command)
00 00 00 00 - …. : Status
00 46 f5 b9 - .F.. : 4 bytes Session, luôn thay đổi ở mỗi lần giao dịch
31 c0 80 76 69 65 74 5f 76 71 c0 80 - 1..viet_vq.. : 12 bytes nội dung. Mỗi phần tử nội dung (Key, Value) được ngăn cách bởi 2 byte c0 80.
31 là mã ASCII trả về chuỗi (String) 1
c0 80
76 69 65 74 5f 76 71 mã ASCII trả về chuỗi viet_vq
c0 80
Server Response to:
0000 08 00 0f 00 00 00 3a fb 20 00 18 00 08 00 45 00 ......:. .....E.
0010 00 a0 3a b5 40 00 31 06 e4 f7 42 a3 b5 a7 0a 10 ..:.@.1. ..B.....
0020 27 51 13 ba 0b b1 9b cc e8 02 ce 6c 9a 83 50 18 'Q...... ...l..P.
0030 ff ff 57 02 00 00 59 4d 53 47 00 0f 00 00 00 64 ..W...YM SG.....d
0040 00 57 00 00 00 01 00 5a a9 a7 31 c0 80 76 69 65 .W.....Z ..1..vie
0050 74 5f 76 71 c0 80 39 34 c0 80 77 5e 28 6f 26 34 t_vq..94 ..w^(o&4
0060 5e 28 6f 7c 28 34 2f 6b 25 31 2a 35 2f 75 2d 61 ^(o|(4/k %1*5/u-a
0070 2f 71 2a 68 2d 6f 25 33 2a 70 26 61 2b 6f 7c 76 /q*h-o%3 *p&a+o|v
0080 5e 33 26 28 78 2f 6f 26 64 2d 69 26 6a 26 28 6c ^3&(x/o& d-i&j&(l
0090 2a 71 2a 77 2f 67 5e 6a 2f 6a 29 7c 28 72 2d 61 *q*w/g^j /j)|(r-a
00a0 29 29 29 29 29 c0 80 31 33 c0 80 32 c0 80 )))))..1 3..2..
Để ý đến một cặp khoá mới được server trả về với key 94 là
w^(o&4^(o|(4/k%1*5/u-a/q*h-o%3*p&a+o|v^3&(x/o&d-i&j&(l*q*w/g^j/j)|(r-a)))))
Nhận xét:
- Cố tình thử lại nhiều lần, kể cả cung cấp thông tin login sai cho server, thấy rằng chuỗi kí tự này luôn luôn xuất hiện và thay đổi trong từng session một.
- Mã trả về luôn có số tags đóng bằng số tags mở, các kí tự $, ^, +, %, *, / có vẻ như các phép toán => chuỗi được biểu thị như một biểu thức đại số.
- Đây chắc chắn là một mã hash (token) chứng thực (authetication).
- This e-mail address is being protected from spambots. You need JavaScript enabled to view it
- 11/12/2010 22:06 - Ngôn ngữ “thuần Web” đang lên?
- 06/12/2009 20:36 - Những điểm cần lưu ý khi học một ngôn ngữ lập trìn…
- 16/09/2009 20:19 - Phân tích quá trình bắt tay giữa hai máy tính
- 10/09/2009 13:50 - Web app Framework (P1)
- 07/06/2009 08:52 - Phân tích Y!M Protocol (Part3)
- 17/05/2009 00:16 - Phân tích Y!M Protocol (Part1)