Phân tích Y!M Protocol (Part2)

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….)

---------------------------------------
II) VẬN HÀNH (Progressing)


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
 

Add comment


Security code
Refresh


Thăm dò

Bạn quan tâm đến nội dung nào nhất?
 

Hot nhất