Lỗi mms:// not support của WMP11

Số là mình vào mấy trang nhạc nghe online làm tí giải trí, nhưng cái WMP & add-in đang dùng lại không Play được, nó bảo nó không hỗ trợ mms nữa đâu- mms protocol not support. Quái quỷ thay, tháng trước còn nghe trang này ầm ầm…

Google chút, chỉ trong Page1 của trang kết quả, Google nói thằng thì bảo WMP11 đã không còn support mms://, thằng bảo đổi protocol qua rtsp ;) ), có thằng kể lể đã cài lại WMP mà vẫn k được…

Cái dở của cái lỗi là không có cái mã nào để tìm đích xác nên hơi phiền phức, đây là fix http://support.microsoft.com/kb/940029

  • Start -> Run
  • regsvr32 wmnetmgr.dll

Vậy là xong, dĩ nhiên là WMP phải mở các kết nối mặc định (trong tab Network). Còn lỗi này trong máy tớ là do upgrade chú Windows từ Home lên Pro, nên một số component và dll không theo kịp xu thế thời đại. (Upgrade cho oai thôi chứ mấy tính năng cộng thêm dùng của mấy 3rd party thú hơn nhiều) :)

Yahoo! 360 to Shut Down

  • Hãy làm những gì có thể cho entries trước 13/7/2009, đây một số tips-of-the-day của mình
  1. Chuyển sang Y! Plus (http://vn.myblog.yahoo.com) hoặc Y! Profiles (http://profiles.yahoo.com) hoặc download các bài viết (file text + hình ảnh) về máy tính, tất cả đều ở đây http://download.360.yahoo.com
    Note: Y! Plus và Y! Profiles là 2 môi trường blog khác nhau.

    Bước này nhằm mục đích bảo lưu các entries của bạn, tiếc là các quick comment sẽ phải về trời.

  2. Chọn một điểm đến thích hợp (WordPress, MySpace, Facebook, Opera, Blogger…)

  3. Yên vị & chờ đợi một công cụ nhập bài viết cũ vào blog mới của một *cô tiên* nào đó có nhiều freetime lập ra, nếu blog mới đó không hỗ trợ. (Yahoo đang hứa sẽ có công cụ này, hứa sẽ có cho WordPress, nhưng mình đoán chưa chắc đã có cho facebook, cạnh tranh mà)

  4. Có thể khóc thật to nhưng đừng nên chôn cái máy tính của bạn để từ biệt Y! 360.


http://blog.360.yahoo.com/blog-1qCkw2Ehaak.hdNZkEAzDrpa4Q–?cq=1&p=67265

Beautiful Barca

Những cung bậc thăng trầm của cảm xúc, những ngọn lửa vụt cháy khát khao, chỉ tiếc một điều, đội được yêu thích hơn đã không thể bảo vệ ngôi vương. Âu đó là một giá trị mang tính tôn trọng lịch sử, đáng được tôn trọng. :)
Đấu trường UEFA Champions quả là một sân chơi quá lớn cho Ferguson, đội hình của MU cũng hơi thật khó hiểu. Với những cầu thủ tuy cần tôn vinh đáng ra chỉ cần thiết cho hiệp 2. Cái dở của Alex là bảo thủ và quá con người. Còn nhớ một lần gặp lại Bayern, ông đưa ra đa phần những cầu thủ đã từng tham dự trận CK năm 1999, MU thua. Với Gary Neville, MU suýt phải trả giá vì sự non yếu vì tuổi tác của cầu thủ này…

Dĩ nhiên, thắng làm vua, thua làm giặc, Sir Alex cũng không là ngoại lệ.

Với suốt sự nghiệp cầm quân của mình, Fergi không quá lão luyện và tinh quái ở châu Âu.

Giờ đây tất cả đã thuộc về Lionel Messi.

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

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.

ymsg_hsh

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

ymsg_quer

Host có thời gian đáp ứng tốt nhất sẽ được chọn (Lúc đó 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).

  • ViệtQ

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

Giới thiệu chủ đề

Ta đã biết Instance Message là một nguồn thu lợi nhuận khổng lồ trong lĩnh vực Information & Communication Technology (ICT). Bên cạnh đó Yahoo Messenger là chương trình phổ biến ở Việt Nam cũng như trên toàn thế giới.

Bài viết này sẽ tìm hiểu Protocol của Y!M, nhằm phục vụ cho việc thiết kế các chương trình có khả năng tuỳ biến nội dung chat (Ví dụ: Center Tra cứu thông tin, các công cụ tinh chỉnh, ngăn quảng cáo phiền phức, hoặc dựa vào đó để viết ứng dụng trên nền mobile J2ME. …).
Các tài liệu liên quan hiện có từ nguồn Internet đều thuộc dạng “Không chính quy” (Unofficial documentation) do những nhóm người đi đầu trong việc “mổ xẻ” Yahoo biên soạn (Yahoo! chỉ chính thức phát hành các tài liệu cho việc thiết kế plugin đi kèm sản phẩm Y!M của họ). Dĩ nhiên Yahoo không hề mong chờ kiểu tài liệu unofficial này- một điều rất dễ hiểu là các ứng dụng “không chính quy” đã không hiển thị các hợp đồng quảng cáo của Yahoo!Inc, mà còn làm điều ngược lại: tự quảng cáo bằng hình tức tin nhắn quảng bá (spam – broadcast msgs).

image003

YMSG Protocol

Yahoo Messenger Protocol (YMSG) là một Protocol tầng Application chạy trên nền TCP, hoặc HTTP, SOCKS. (Tham khảo thêm các định nghĩa về TCP, HTTP, SOCKS nếu muốn tìm hiểu thêm)

Với YMSG Protocol, Yahoo có 3 kiểu kết nối chính đến server:

- Kết nối trực tiếp (Direct connection)
- Kết nối qua Http
- Kết nối qua Socks (Socks 4, Socks 5)

Chúng ta sẽ tìm hiểu kiểu kết nối trực tiếp (Direct connection) đến server cn.csc.msg.yahoo.com csc.msg.yahoo.com [port 5050] – sẽ trình bày chi tiết ở các phần sau.

Mô hình phân tích & Công cụ:

+ Một máy client sử dụng modem ADSL, default config, nghĩa là kết nối được Internet :)

+ Yahoo Messenger version 8.x (Thời điểm mình bắt đầu thực hiện thì bản mới nhất là 9.0 chỉ đang là thử nghiệm- beta test)

+ Wireshark version 1.0.2 (Dùng để bắt gói tin)

I) GIỚI THIỆU CHUNG

1. YMSG Packet

Qua quá trình capture Y!M packets từ phía client, ta thấy được YMSG luôn có cấu trúc gói tin (Packet) như sau:
[ YMSG || Version || Packet Length || Service || Status || Session ID || Content ]

Trong đó:
YMSG:

Độ dài: 4 bytes (2 words)
Giá trị: Tên của protocol, luôn có ở đầu mọi Packets liên lạc giữa server-client (SC)

Version:

Độ dài: 4 bytes
Giá trị: Chỉ rõ version của giao thức kết nối
Ví dụ: version 15 là: 0×00, 0x0f, 0×00, 0×00 (thường thấy với bản client 8.x) Các bye 00 chỉ là các byte đệm.

Packet Length:

Độ dài: 2 bytes
Giá trị: Chỉ rõ số bytes của section Content gửi đi. Về lý thuyết giá trị tối đa là 0xffff = 65535 (2 bytes long) nhưng thực tế độ dài các gói tin chỉ nhỏ hơn 1000.

Service:

Độ dài: 2 bytes
Giá trị: Nói rõ cho SC biết dịch vụ nào cần được request/respond

Status:

Độ dài: 4 bytes
Giá trị: Chỉ rõ mã trạng thái của dịch vụ đang thực hiện (success/ failure/ ack/ etc..)

Session ID:

Độ dài: 4 bytes
Giá trị: Cho biết mã hiệu của kết nối SC đang thực hiện, giá trị do server khởi tạo, và đôi lúc có sự thay đổi trong 1 phiên làm việc (hiếm gặp), lúc đó client cũng phải thay đổi session ID theo giá trị mới này.
(Giá trị này cho thấy 1 server phục vụ được tối đa 0xff ff ff ff lượt truy cập)

Content

Độ dài: Bằng độ dài được chỉ rõ ở section Packet Length
Giá trị: Đây là một chuỗi các giá trị đi theo cặp như kiểu vertor (key/value). Key có định dạng String, Value có các kí tự thuộc kiểu ASCII, đôi lúc có giá trị là null. VD: 1 == 0×31; 21 == 0×32 0×31;
Các cặp trong trường Content này được phân cách nhau bởi cặp dấu “phẩy” theo chuẩn Yahoo {0×30 0xc080}

Ví dụ 1 đoạn Packet đã Decoded ra mã text (ASCII):

Version: 15

Packet Length: 12

Service: Authentication (87)

Status: Default (0)

Session ID: 0xb9f54600

Content: 1300200viet_vq300200

Kết luận:

+ Tổng độ dài phần header của 1 đoạn Packet luôn là 20bytes

+ Giá trị version luôn là 15 (0x0F) cho Y!M 8.x

  • ViệtQ

Part 1

Part 2

Part 3