Tài liệu tham khảo công nghệ thông tin Xây dựng hệ thống dịch vụ giá trị gia tăng trên nền dịch vụ nhắn tin tức thì qua hệ thống tin nhắn tức thì
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trương Lê Thành
XÂY DỰNG HỆ THỐNG DỊCH VỤ GIÁ TRỊ GIATĂNG TRÊN NỀN DỊCH VỤ NHẮN TIN TỨC THÌ
QUA HỆ THỐNG TIN NHẮN TỨC THÌ
HÀ NỘI - 2009
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trương Lê Thành
XÂY DỰNG HỆ THỐNG DỊCH VỤ GIÁ TRỊ GIATĂNG TRÊN NỀN DỊCH VỤ NHẮN TIN TỨC THÌ
QUA HỆ THỐNG TIN NHẮN TỨC THÌ
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
HÀ NỘI - 2009
Trang 3LỜI CẢM ƠN
Lời đầu tiên, chúng tôi xin chân thành cảm ơn quý thầy cô giáo khoa Công nghệ thôngtin đã dạy dỗ chúng tôi suốt bốn năm học vừa qua và tạo điều kiện cho phép chúngtôi được thực hiện khoá luận tốt nghiệp này.
Đặc biệt, chúng tôi xin được bày tỏ lòng kính trọng và biết ơn sâu sắc tới cô giáohướng dẫn: ThS Đào Minh Thư và thầy giáo ThS Hồ Đắc Phương đã tận tình hướngdẫn và giúp đỡ chúng tôi trong quá trình hoàn thành công trình này.
Xin chân thành cảm ơn tới công ty ViettelMedia đã giúp đỡ chúng tôi hoàn thành tốtkhóa luận.
Xin cảm ơn gia đình và bạn bè đã giúp đỡ, động viên tôi trong thời gian thực hiện đềtài
Cảm ơn bạn Nguyễn Thị Thu Thảo đã cùng tôi hoàn thành khóa luận này.
Với trình độ và kiến văn còn hạn chế của người viết, khoá luận chắc chắn không tránhkhỏi khiếm khuyết Chúng tôi hy vọng sẽ nhận được những ý kiến nhận xét, góp ý củacác nhà khoa học, các thầy cô giáo và bạn bè về những vấn đề được triển khai trongkhoá luận Xin trân trọng cảm ơn!
Hà Nội, tháng 5 năm 2009Sinh viên
Trương Lê Thành
Trang 4TÓM TẮT NỘI DUNG
Khóa luận của chúng tôi trình bày tổng quan về một chương trình mà chúng tôi gọi làTCat Đây là một chương trình có thể gửi tin nhắn cho điện thoại di động cũng nhưcho một số mạng nhắn tin tức thì (Yahoo, Google) Ngoài khả năng gửi tin nhắn,TCat còn cho phép viết thêm một số dịch vụ khác cắm vào mà không cần thay đổitoàn bộ code Vì thế TCat có tính mở rộng cao Các dịch vụ viết thêm vào có khảnăng tương tác trực tiếp với người sử dụng Ngoài ra chúng tôi còn cung cấp thêm giaodiện Web giúp người sử dụng giao tiếp với hệ thống dễ dàng.
Do hạn chế về thời gian cho nên trong phạm vi khóa luận này chúng tôi chỉ xây dựngcác tính năng cơ bản và một số dịch vụ.
Trang 5MỤC LỤC
LỜI MỞ ĐẦU 1
CHƯƠNG 1 ĐẶT VẤN ĐỀ 2
1.1 Cuộc sống hiện đại 2
1.1.1 Internet toàn cầu hóa 2
1.1.2 Sống gấp 3
1.2 Giải pháp 3
1.3 Nội dung của khóa luận 3
CHƯƠNG 2 TỔNG QUAN VỀ TCAT 6
CHƯƠNG 3 GIAO DIỆN IM 15
3.1 Tổng quan giao thức Yahoo Messenger (YMSG) 15
3.1.1 Sự khác nhau giữa các phiên bản 16
3.1.2 Cấu trúc một gói tin của YMSG 17
Trang 63.2.8 Xóa nick trong danh sách bạn 31
3.3 Phân tích thiết kế module Yahoo bot 32
Trang 75.1 Tổng quan về SMS 50
5.1.1 Định nghĩa SMS 50
5.1.2 Ưu điểm của SMS 51
5.2 Gửi tin SMS từ máy tính đến điện thoại di động 52
5.2.1 SMS Gateway kết nối trực tiếp tới SMSC 55
5.2.2 SMS Gateway kết nối SMSC thông qua GSM modem 57
Trang 86.5.3 Hoạt động 73
CHƯƠNG 7 PHỤ LỤC 74
7.1 Cấu hình NowSMS kết nối trực tiếp tới SMSC của Viettel 75
7.2 Tạo kết nối Giữa NowSMS với GSM Modem 78
TÀI LIỆU THAM KHẢO 79
Trang 9THUẬT NGỮ VIẾT TẮT
GSM Global System for Mobilecommunications
Hệ thống toàn cầu chotruyền thông di độngHTTP Hypertext Transfer Protocol Giao thức truyền siêu văn
bảnHTTPS Hypertext Transfer Protocol Secure HTTP an toàn
SMPP Short Message Peer-to-peerProtocol
Giao thức tin nhắn ngắnngang hàngSMS Short Message Service Dịch vụ tin nhắn ngắnSMSC Short Message Service Center Trung tâm tin nhắnTCP/IP Transmission Control Protocol /
Internet Protocol
Giao thức truyền tin tin cậytrên nền Internet
Trang 10Hình 3 2: Cấu trúc gói tin YMSG phiên bản 12 16
Hình 3 3: Cấu trúc gói tin YMSG phiên bản 9 17
Hình 3 4: Cấu trúc gói tin YMSG phiên bản 15 17
Hình 3 5: Cấu trúc trường Data 19
Hình 3 6: Giao thức YMSG 22
Hình 3 7: Cấu trúc gói tin Verify 22
Hình 3 8: Gói tin Verify hồi đáp từ Server 23
Hình 3 10: Ảnh chụp gói tin Authentication 24
Hình 3 9: Gói tin Authentication 24
Hình 3 12: Ảnh chụp gói tin Authentication ACK 25
Hình 3 11: Gói tin trả lời Authenticaion ACK 25
Hình 3 14: Ảnh chụp gói tin Authentication Response 26
Hình 3 13: Gói tin Authentication Response 26
Hình 3 15: Gói tin Message 27
Hình 3 16: Ảnh chụp gói tin Message 28
Hình 3 17: Cấu trúc gói tin Notify 29
Hình 3 18: Ảnh chụp gói tin Notify 29
Hình 3 20: Ảnh chụp gói tin Logoff 30
Hình 3 19: Gói tin Logoff 30
Hình 3 21: Cấu trúc gói tin Add Buddy 30
Hình 3 22: Ảnh chụp gói tin Add Buddy 31
Trang 11Hình 3 23: Cấu túc gói tin Remove Buddy 31
Hình 3 24: Ảnh chụp gói tin Remove Buddy 32
Hình 3 25: Cấu trúc module Yahoo Bot 33
Hình 3 26 Cấu trúc module Gtalk bot 36
Hình 4 1 Mối liên hệ giữa các bảng trong CSDL 43
Hình 4 2 Sơ đồ cấu trúc module WEB 47
Hình 5 1 SMS Gateway kết nối trực tiếp với SMSC 55
Hình 5 2 Mô hình gửi tin SMS với SMS Gateway kết nối với SMSC thông qua GSMModem 57
Hình 5 3 Kết nối của Module SMS với SMS Gateway 59
Hình 6 1: Mối quan hệ Friend - User 63
Hình 6 2: Mối quan hệ User và Udef 65
Hình 6 3: Mối quan hệ CSDL trong dịch vụ nhắc việc theo thời gian 71
Hình 6 4: Mối quan hệ CSDL trong dịch vụ nhắc việc theo sự thay đổi của trang web 72
Hình 7 1 Giao diện của NowSMS 74
Hình 7 2 Lựa chọn kết nối tới SMSC 75
Hình 7 3 Cấu hình kết nối 76
Hình 7 4 Chạy dịch vụ 77
Hình 7 5 Kết nối tới modem 78
Hình 7 6 Lựa chọn thiết bị GSM để kết nối 78
Trang 12LỜI MỞ ĐẦU
Internet đang ngày càng phát triển nhằm đáp ứng nhu cầu của con người Nhờ sự tiếnbộ của khoa học nói chung và công nghệ thông tin nói riêng, diện mạo của Internetđang ngày càng rõ rệt và "có hình hài" Internet là kết quả tất yếu của nhu cầu cầnđược đáp ứng của con người, đó là tập hợp các nhu cầu cực kỳ phong phú và đa dạngcủa mọi người khắp nơi trên thế giới Điều đó tạo nên sự phức tạp, sức hấp dẫn vàcuốn hút của Internet
Ngày nay, Internet được sử dụng rộng rãi trên toàn thế giới Những ứng dụng trênInternet đã có bước phát triển bùng nổ, với nhiều loại hình dịch vụ mới như thươngmại điện tử, giải trí trực tuyến, đào tạo trực tuyến,…Sự ra đời của các dịch vụ trênInternet đã giúp ích rất nhiều cho cuộc sống của mọi người thuận tiện, thoải mái, tốtđẹp hơn.
Vì những lý do trên chúng tôi đã nảy ra ý định xây dựng lên chương trình có thể nhắntin tự động, trả lời tự động đến nick Yahoo, GoogleTalk hay số điện thoại của ngườisử dụng với những nội dung đã được đăng ký với chúng tôi như giá chứng khoán, giángoại tệ, thời tiết,…
Chương trình của chúng tôi xây dựng được gọi là TCat.
TCat có tính ứng dụng thực tiễn cao Chúng tôi đã đưa vào thực tiễn một số dịch vụcủa TCat như dịch vụ Phiên dịch, Nhắc việc Dịch vụ Phiên dịch là dịch vụ giúpngười sử dụng dịch một đoạn văn bản, một từ hoặc thậm chí cả một tài liệu Dịch vụnày của chúng tôi sử dụng lại dịch vụ miễn phí của Google là Google Translate Dịchvụ Nhắc việc là dịch vụ dịch vụ cho phép người sử dụng có thể đăng ký nhận tin nhắntự động (nhắc việc) tới chính nick Yahoo, GoogleTalk hoặc số điện thoại của mình vàomột thời điểm nào đó, hoặc khi một trang Web có sự thay đổi,…
Trang 13CHƯƠNG 1 ĐẶT VẤN ĐỀ
1.1 Cuộc sống hiện đại
1.1.1 Internet toàn cầu hóa
Toàn cầu hóa (Globalization) là “một xu hướng làm các mối quan hệ trở nên ít bị ràngbuộc bởi địa lý lãnh thổ”, là khái niệm dùng để miêu tả các thay đổi trong xã hội vàtrong nền kinh tế thế giới, tạo ra bởi mối liên kết và trao đổi ngày càng tăng giữa cácquốc gia, các tổ chức hay các cá nhân ở góc độ văn hoá, kinh tế, v.v trên quy mô toàncầu Về bản chất thì toàn cầu hóa là sự mở rộng thị trường ra ngoài biên giới quốc gia.Internet đang ngày càng phát triển nhằm đáp ứng nhu cầu của con người Nhờ sự tiếnbộ của khoa học nói chung và công nghệ thông tin nói riêng, diện mạo của Internetđang ngày càng rõ rệt và "có hình hài" Internet là kết quả tất yếu của nhu cầu cầnđược đáp ứng của con người, đó là tập hợp các nhu cầu cực kỳ phong phú và đa dạngcủa mọi người khắp nơi trên thế giới Điều đó tạo nên sự phức tạp, sức hấp dẫn vàcuốn hút của Internet
Internet được sử dụng ngày càng rộng rãi Và giờ đây Internet đã trở thành mạng toàncầu.
Và tại Việt Nam, việc sử dụng Internet ngày phổ biến Điều này thể hiện rõ ở số lượngngười dùng gia tăng nhanh chóng, số lượng dịch vụ Internet ngày càng nhiều và thờigian truy cập Internet trong mỗi ngày cũng dài thêm Theo kết quả khảo sát gần đâycủa công ty nghiên cứu thị trường TNS Public & Social Research Việt Nam tiến hànhở bốn thành phố lớn của Việt Nam gồm Thành phố Hồ Chí Minh, Hà Nội, Đà Nẵng vàCần Thơ với 1,200 người tham gia trả lời ý kiến, thì hiện nay người sử dụng Internet ởViệt Nam đang ngày càng dành nhiều thời gian trên mạng hơn, với thời lượng trungbình mỗi ngày là 43 phút trong năm 2008, thời lượng này gần gấp đôi so với hồi năm2006.[1]
Theo đó, có đến 72% số người trong độ tuổi 18 - 30 sử dụng Internet thường xuyên đểtán gẫu (chat); và 81% số người trong độ tuổi 41-50 thường xuyên đọc tin tức trênInternet.
Trang 141.1.2 Sống gấp
Ngày nay, mọi người ai cũng bận rộn với công việc hàng ngày, với cuộc sống gia đình,với những quan hệ xã hội Cuộc sống có quá nhiều điều khiến con người phải lo toan,phiền muộn Bản thân mỗi con người bị cuốn vào vòng xoay của công việc, học tập vànhững toan tính hàng ngày Cuộc sống thật bộn bề những lo toan, suy nghĩ.
Đôi khi mọi người cảm thấy mệt mỏi khi phải suy nghĩ quá nhiều thứ trong đầu và đểsắp xếp mọi thứ cho tốt đẹp.
Và thời gian rảnh trong cuộc sống giúp cho con người thư thái, giải trí cũng ít đi.
1.2 Giải pháp
Hiện nay, có những người truy cập hàng giờ trên Internet chỉ để xem giá chứng khoánthay đổi, xem bài viết của mình trên diễn đàn đã được trả lời chưa, xem đã có thông tinmới thật lãng phí thời gian Hay việc không để ý đến thời tiết hàng ngày làm ai đó bịsốt, bị ốm, làm hại cho sức khỏe Hay một việc gì đó quan trọng bị lãng quên,… làmảnh hưởng không tốt đến công việc cuộc sống của mọi người.
Từ những lý do trên chúng tôi đã nảy ra ý định xây dựng lên chương trình có thể nhắntin tự động, trả lời tự động đến nick Yahoo, GoogleTalk hay số điện thoại của ngườisử dụng với những nội dung đã được đăng ký với chúng tôi như giá chứng khoán, giángoại tệ, thời tiết,…sẽ giúp ích một phần cho cuộc sống.
Chương trình của chúng tôi xây dựng được gọi là TCat.
TCat là một chương trình mở, không chỉ có các dịch vụ đã cung cấp mà còn cho phépngười sử dụng thêm các dịch vụ vào.
1.3 Nội dung của khóa luận
Khóa luận của chúng tôi gồm có bảy chương cụ thể sau:
Chương 1 Đặt vấn đề và cách giải quyết
Chương này nhằm nói tới nguyên nhân khách quan, mục đích khi xây dựng TCat, tínhứng dụng thực tiễn, những lợi ích của TCat và những nội dung chính của khóa luận.
Chương 2 Tổng quan về TCat, các giao diện của TCat và thiết kế cơ sở dữ liệu củaTCat
Trang 15Nội dung chủ yếu của chương này là nói về tổng quan TCat TCat gồm có ba modulechính đó là IM, Web và SMS với một số dịch vụ như Phiên dịch, Nhắc việc,…Module
IM là module giúp người sử dụng giao tiếp với hệ thống thông qua các dịch vụ tinnhắn tức thì miễn phí Người sử dụng chỉ cần đăng ký một nick chat miễn phí từ nhà
cung cấp dịch vụ chat, sau đó dùng nick chat của mình (có thể là nick Yahoo,GoogleTalk, Skype ) yêu cầu một dịch vụ từ TCat Module Web đảm nhận công việclà giao diện giao tiếp với người sử dụng, đọc cơ sở dữ liệu nếu như các module haydịch vụ khác yêu cầu và trả về kết quả Module SMS là module gửi tin nhắn từ máytính tới số điện thoại của người sử dụng mà đã đăng ký với TCat.
Chương 3 Giao thức Yahoo Messenger với module Yahoo Bot và Giao thức Google
Talk với module Gtalk Bot
Trong chương này gồm có hai phần:
Phân tích, mô tả giao thức của Yahoo Messenger, phân tích thiết kế và xây dựngmodule Yahoo Bot.
Tổng quan về giao thức của Google Talk, phân tích thiết kế và xây dựng module GtalkBot
Chương 4 Tổng quan giao diện Web của TCat
Nội dung của chương viết về tổng quan, phân tích thiết kế giao diện Web Web làmodule cung cấp cho người dùng những tính năng nâng cao, giúp TCat quản lý ngườidùng một cách dễ dàng hơn
Chương 5 Module SMS với các mô hình kết nối để gửi tin nhắn từ máy tính tới điện
thoại di động
Chương này với nội dung trình bày về các cách kết nối để có thể gửi tin nhắn từ máytính tới điện thoại di động và phân tích thiết kế, cấu trúc module SMS.
Có hai cách kết nối được đề cập trong chương này:
Cách thứ nhất là kết nối trực tiếp SMS Gateway tới SMSC của nhà cung cấp dịch vụViettel.
Cách thứ hai là kết nối tới SMS Gateway với GSM Modem và sau đó GSM Modem sẽgiao tiếp với SMSC trên mạng di động.
Trang 16Các dịch vụ của chúng tôi gồm có: Phiên dịch, Chấp nhận/từ chối, Nhắc việc, Thời tiếtvà dịch vụ người dùng tự định nghĩa
Trong đó dịch vụ Phiên dịch là dịch vụ khi người dùng gõ lệnh theo cú pháp mặc định.TCat sẽ trả về cho người dùng nghĩa của từ mà người dùng muốn tra.
Dịch vụ Chấp nhận/Từ chối được kích hoạt khi một người sử dụng thêm một ai đó vàodanh sách bạn bè (Friend) Dịch vụ này có ý nghĩa đơn giản là khi một người nhậnđược những tin nhắn của một người sử dụng TCat của chúng tôi để gửi tin thì ngườinhận đó có thể chấp nhận hoặc là từ chối nhận các tin nhắn sau.
Dịch vụ Thời tiết cũng giống như dịch vụ Phiên dịch Khi muốn biết thời tiết của mộtvùng nào đó trong nước Việt Nam thì người sử dụng sẽ gõ một câu lệnh theo cú phápmặc định sau đó dịch vụ sẽ gửi lại thông tin thời tiết về vùng nhận được.
Dịch vụ người dùng tự định nghĩa là dịch vụ cho phép một người sử dụng dễ dàngthêm các dịch vụ vào TCat.
Còn bạn Thảo đã phân tích xây dựng module SMS, xây dựng module Web, xây dựngcác dịch vụ: Nhắc việc theo thời gian, thời tiết
Trang 17CHƯƠNG 2 TỔNG QUAN VỀ TCAT
TCat là sự kết hợp của các module IM, SMS, WEB Mỗi module đảm nhiệm mộtchức vụ khác nhau trong toàn bộ hệ thống TCat cung cấp cho người dùng các dịch vụdựa trên việc nhắn tin qua nick Yahoo, GoogleTalk hoặc Mobile.
Các module ghép lại đảm nhiệm vị trí khung chương trình (framework) Bộ khungchương trình này chịu trách nhiệm gửi và nhận tin nhắn qua Yahoo, GoogleTalk hoặcMobile TCat được thiết kế là chương trình mở Điều này có nghĩa là TCat được thiếtkế sao cho việc thêm các dịch vụ là hoàn toàn đơn giản Vì có khung chương trình rồilập trình viên hoặc bất kì một người sử dụng nào cũng có thể thêm vào các dịch vụkhác Đối với những dịch vụ phức tạp thì ngưởi sử dụng cần nghiên cứu các hàm, giaodiện do khung chương trình cung cấp
Chúng tôi đưa vào hai loại dịch vụ.
Loại dịch vụ thứ nhất: dịch vụ gửi tin nhắn thụ động Điều này có nghĩa là dịch vụ chỉđược kích hoạt khi nào có yêu cầu Ví dụ như các dịch vụ Phiên dịch, Nhắc việc Dịchvụ Phiên dịch là dịch vụ giúp người sử dụng dịch một đoạn văn bản, một từ hoặc thậmchí cả một tài liệu Dịch vụ này của chúng tôi sử dụng lại dịch vụ miễn phí của Googlelà Google Translate Dịch vụ Nhắc việc là dịch vụ dịch vụ cho phép người sử dụng cóthể đăng ký nhận tin nhắn tự động (nhắc việc) tới chính nick Yahoo, GoogleTalk hoặcsố điện thoại của mình vào một thời điểm nào đó, hoặc khi một trang Web có sự thayđổi,…Mỗi khi yêu cầu dịch vụ, người sử dụng chỉ cần viết lệnh và gửi cho một nickYahoo hoặc Google Talk tự động của chúng tôi Khi khung chương trình nhận đượcthông điệp sau đó sẽ gọi dịch vụ tương ứng, phân tích các tham số truyền vào, sau đólấy kết quả trả về cho người sử dụng.
Loại dịch vụ thứ hai: dịch vụ gửi tin nhắn chủ động (hay còn gọi là dịch vụ tự động).Dịch vụ được kích hoạt khi có một sự kiện nào đó xảy ra Sự kiện này được ngườidùng đăng ký trước, có thể là gửi một nội dung tin nhắn vào một thời điểm nào đó,thông báo sự thay đổi của một trang web (giá vàng, chứng khoán thay đổi, có bài trả
Trang 18là một tiến trình tự động chạy Cứ mỗi có sự kiện xảy ra tiến trình sẽ lấy các nick cầnliên lạc thông qua truy vấn vào cơ sở dữ liệu, sau đó gửi thông điệp cho họ.
Đối với việc thêm dịch vụ của bên thứ ba Chúng tôi đưa ra hai phương án giải quyết.Thứ nhất: dịch vụ bên thứ ba cung cấp khá phức tạp và có liên quan một phần đến hệthống Với loại dịch vụ như thế này thì chỉ có cách duy nhất cần những người biết vềchuyên môn (ví dụ như lập trình viên) viết các dịch vụ tương ứng rồi đưa vào hệthống.
Thứ hai: đối với các dịch vụ đơn giản và không liên quan đến TCat Bên thứ ba có thểsử dụng một dịch vụ gọi là “Dịch vụ người dùng tự định nghĩa” Dịch vụ này mỗi lầncó yêu cầu sẽ kết nối đến một liên kết, lấy các thông tin cần thiết về, sau đó đưa trả lạicho người sử dụng Các thông tin trả về phải được đưa theo một chuẩn đã thống nhấttrước.
Người sử dụng cũng như bên thứ ba cần phải đăng ký một tài khoản để sử dụng hoặctạo ra các dịch vụ.
Ngoài việc cung cấp khung chương trình của TCat, chúng tôi còn cung cấp thêm mộtsố dịch vụ kèm theo, chi tiết các dịch vụ được mô tả ở chương 6.
Trong luận văn này, chúng tôi đưa vào thuật ngữ bot với ý nghĩa là một chương trìnhmáy tính, thực hiện một số nhiệm vụ tự động Thuật ngữ WEB để chỉ một trong những
module của chúng tôi (khác với web).
Người sử dụng dùng nick chat của mình chat với nick Yahoo hoặc nick Google Talk
trả lời tự động của chúng tôi (các nick trả lời tự động thực ra là một chương trìnhchúng tôi tạm gọi là con bot) yêu cầu nhắc việc, tra từ điển, xem tỷ giá chứng khoán,xem tin tức, xem dự báo thời tiết, gửi tin cho điện thoại di động, thu thập ý kiến …
Con bot sẽ đưa ra các hồi đáp ứng với yêu cầu của người sử dụng.
Trang 19Nhìn chung về phía IM thì người sử dụng giao tiếp khá hạn chế với con bot Người sửdụng chỉ có thể yêu cầu dịch vụ bằng cách gửi tin đến con bot theo một cú pháp nhất
định nào đó (Chẳng hạn muốn xem dự báo thời tiết thì gõ /weather HANOI ) Vì thếmột số tính năng nâng cao sẽ rất khó sử dụng hoặc không được cài đặt vì khá phức tạp.Ví dụ với dịch vụ nhắc việc cho một danh sách dài Nhắc việc vào lúc 8h của thứ sáuhàng tuần Nội dung của nhắc việc là tin dự báo thời tiết Với một yêu cầu khá phức
tạp như vậy thì cấu trúc lệnh sẽ rất phức tạp, người sử dụng sẽ rất lúng túng khi sử
dụng dịch vụ vì không thể nhớ hết cấu trúc lệnh.
Ngoài ra, chúng tôi còn cung cấp các dịch vụ do người dùng tự định nghĩa Tất nhiên,
để sử dụng dịch vụ này, người sử dụng phải tuân thủ một số chuẩn do chúng tôi đề ra.Và sẽ khá phức tạp cho người sử dụng nếu chỉ có duy nhất một cổng giao tiếp qua IM.Người sử dụng cấu hình dịch vụ của họ rất khó khăn qua dòng lệnh (không có giao
diện đồ họa), tính bảo mật của phương thức này cũng không cao.
Để đảm bảo công việc không bị tắc nghẽn, và tiện cho quá trình mở rộng sau này.
Chúng tôi thiết kế sao cho module IM có thể có nhiều thể hiện (instance) Nói một
cách khác, nếu coi module IM như một chương trình thì có thể chạy nhiều chươngtrình như thế Trong tương lai, để phục vụ nhiều người thì một nick (Yahoo, Gtalk) làkhông đủ cần phải mở rộng ra nhiều nick Có thể thuê những máy khách hàng nếu máychủ không đủ tài nguyên để chạy các ứng dụng IM (có băng thông mạng cao, máy cấuhình mạnh) Khách hàng khi chạy ứng dụng IM cần có Username và Password, mỗilần chạy sẽ được tính thời gian online sau đó qui đổi ra tiền (hoặc cái gì đó có giá trị)để tặng lại khách hàng.
2.2 WEB
Như đã nói ở phần trên, người sử dụng có thể tự mình cài đặt dịch vụ và sử dụng các
chức năng nâng cao của TCat Nhưng việc sử dụng được chức năng nâng cao thôngqua IM sẽ rất khó khăn Vì thế, chúng tôi đưa thêm vào module WEB Thông qua giao
diện WEB thì chúng tôi sẽ quản lý người sử dụng dễ dàng hơn (tiện cho việc thương
mại hóa)
Trang 20Giao diện WEB hỗ trợ một số tính năng nâng cao cho người dùng Người dùng có thểtự mình thêm vào một dịch vụ thông qua hai bước là: đăng ký từ khóa và cài đặt dịchvụ Một từ khóa cho phép chỉ đến một dịch vụ Sau khi có từ khóa, người dùng muốncài đặt dịch vụ phải cấu hình các tham số cho phù hợp (thông điệp trả về, các args).WEB dễ dàng sử dụng các dịch vụ nâng cao ví dụ như dịch vụ Nhắc việc, nếu muốnnhắc việc theo chu kỳ, hoặc khi một sự kiện nào đó xảy ra Việc cấu hình cho dịch vụtrên thông qua IM sẽ phức tạp Tuy nhiên nếu thông qua giao diện WEB thì mọi việcrất dễ dàng.
Ngoài việc giúp quản lý người sử dụng dễ dàng và giúp người sử dụng quản lý công
việc dễ dàng hơn, module WEB còn kết nối trực tiếp đến CSDL, thực hiện các côngviệc giúp giảm tải cho các module khác.
Lấy ví dụ về dịch vụ nhắc việc
Với module IM, ý tưởng đơn giản ban đầu là module IM sẽ trực tiếp kết nối đếnCSDL, và cứ mỗi X phút (X là một số nào đó, có thể 1,2,3 ) sau đó lấy danh sách cácnick cần nhắc việc Sẽ rất trôi chảy nếu chỉ có vài chục đến vài trăm nick Nhưng sẽ làthảm họa nếu có tới vài trăm đến vài nghìn nick Thảm họa ở chỗ Yahoo sẽ khóa(block) nick nếu trong thời gian 1-3 giây nick đó gửi đi quá nhiều tin nhắn (Không cầnbiết gửi đến nhiều nick hay không, chỉ cần biết là gửi nhiều tin nhắn Yahoo làm việcnày để ngăn chặn việc spim tin nhắn)
Ý tưởng cải tiến trong trường hợp này là sẽ đưa vào nhiều con bot làm nhiệm vụ nhắn
tin Con bot có thể hiểu là các thể hiện (instance) của module IM Tuy nhiên cùng với
ý tưởng trên, một bài toán khó đặt ra là vấn đề đồng bộ giữa các con bot Làm sao chocác con bot không lấy dữ liệu trùng nhau, phân chia công việc, giảm tải một cách cóhiệu quả nhất Đây là một bài toán khó, liên quan đến CSDL phân tán Tuy nhiên nếutư duy theo một cách khác thì sẽ tránh được bài toán khó này mà vẫn đạt được mụctiêu như ban đầu.
Ý tưởng của chúng tôi rất đơn giản Chúng tôi sẽ giảm tải cho module IM Đưa vàomodule WEB ở giữa module IM và CSDL Nói cách khác, Module IM bây giờ khôngthao tác trực tiếp với CSDL nữa Mọi thao tác đều thông qua WEB Như vậy moduleIM không mất tài nguyên kết nối CSDL, cũng không cần giải quyết bài toán khó về
việc đồng bộ hóa giữa các con bot Con bot chỉ cần yêu cầu kết nối đến WEB, WEB sẽ
xử lý hết tất cả các công việc phức tạp, sau đó đưa lại cho con bot một danh sách cácnick Yahoo cần nhắc việc Việc xử lý đồng bộ bây giờ đưa về việc xử lý tuần tự ở
Trang 21WEB Ở phía WEB việc xử lý rất đơn giản WEB chỉ cần thống kê số lượng các conbot online trên mạng, sau đó chia đều công việc cho chúng Nếu số lượng nick cần
nhắc việc quá nhiều so với số lượng đáp ứng được của mỗi con bot thì WEB chỉ trả lại
số lượng nick nhắc việc mà mỗi con bot có thể làm được.
Để bảo mật thì mỗi con bot có một chuỗi khóa bí mật Khi lấy thông tin từ WEB thìcon bot phải cung cấp chuỗi khóa đó cho WEB kiểm tra Mọi kết nối đến WEB đềudựa trên giao thức HTTPS.
2.3 SMS
Không phải lúc nào mọi người cũng có thể online Tuy nhiên nhu cầu kết nối là điềukhông thể thiếu Module SMS được đưa vào để hoàn thiện thêm cho TCat Sử dụngdịch vụ SMS có thể gửi tin nhắn cho số điện thoại nào đó, nạp tiền vào tài khoản (nếuthương mại hóa)
Ví dụ sử dụng dịch vụ Nhắc việc trong việc coi thi: văn phòng khoa của nhà trườngmuốn nhắc nhở các các thầy cô giáo là đúng 8h hôm nay bắt đầu coi thi học kỳ Tấtnhiên văn phòng khoa có thể gọi điện hoặc nhắn tin đến từng thầy cô một Tuy nhiênsẽ là lãng phí cả về tài chính, thời gian và công sức nếu có quá nhiều Văn phòng khoacó thể sử dụng dịch vụ Nhắc việc thông qua giao diện WEB Chỉ cần upload lên danhsách các thầy cô và số điện thoại tương ứng Sau đó là việc chọn thời gian và thôngđiệp và các tin nhắn sẽ được gửi đến các số điện thoại ở trên Vậy là mọi việc đã xong.Thông qua dịch vụ này người sử dụng không cần phải nhớ quá nhiều lịch làm việc vàan tâm rằng mình sẽ không quên một việc gì đó.
Trang 22CSDL
Trang 23Trên Hình 2 1: Mô hình tổng quan là hình vẽ khái quát về mô hình tổng quan của
TCat TCat gồm ba Module chính là WEB, IM, SMS.
Moudle IM gồm hai module con là Yahoo Bot và Gtalk Bot Cả hai đều có thể cónhiều thể hiện (instance) Module SMS cũng như vậy Cả hai module đều kết nối vớicác dịch vụ PyService thông qua giao diện I Giao diện I giúp các module IM và SMSkết nối với các dịch vụ dễ dàng hơn.
PyService là các dịch vụ được viết bằng Python Các dịch vụ này được viết theo tiêuchí càng đơn giản càng tốt, sẽ không tự xử lý dữ liệu mà chuyển sang một nơi nào đóxử lý dữ liệu rồi nhận kết quả trả về Trong các moudle IM, SMS có thể thấy còn cóthêm CSDL Đây là những CSDL của riêng các module đó, các module này sử dụngCSDL với mục đích tăng tốc, giảm chi phí về tài nguyên mạng.
Các module IM, SMS kết nối dịch vụ PyService thông qua giao diện I Điều này cónghĩa là các dịch vụ PyService chỉ cần viết một lần, sẽ chạy được trên cả hai moudleIM và SMS Muốn có được điều này thì khi viết code các dịch vụ PyService phải tuânthủ một số chuẩn.
Các dịch vụ PyService sẽ không tự xử lý dữ liệu mà kết nối đến nơi khác để lấy kếtquả trả về Nơi khác ở đây có thể là một nguồn từ Internet hoặc là nhưng dịch vụ doWEB cung cấp (WService) Những dịch vụ mang tính đặc trưng (ví dụ như nhắc việc),có liên quan đến CSDL của TCat thì PyService sẽ kết nối đến WService, còn nhữngdịch vụ chung chung (chẳng hạn như Thời tiết, Phiên dịch …) thì PyService sẽ kết nốiđến nguồn dữ liệu từ Internet.
Ở đây có một dịch vụ đặc biệt được cung cấp ở bên phía WEB, đó là dịch vụ cho phépngười sử dụng tự định nghĩa (WAService) Dịch vụ này cho phép người sử dụng cóthể tự mình thiết kế, tạo nên một dịch vụ Để làm được điều này, người sử dụng cầntuân thủ theo một số chuẩn đã đề ra trước Thực chất của dịch vụ này rất đơn giản,người sử dụng chỉ cần khai báo một liên kết (link) đến trang cung cấp thông tin và xửlý dữ liệu của họ Tiếp theo người sử dụng cần khai báo các tham số đầu vào cần thiết.Khi một người dùng khác muốn sử dụng dịch vụ này, chỉ cần đánh đúng cú pháp thìTCat sẽ tự động kết nối đến dịch vụ đó, lấy thông tin trả về, xuất thông tin đó ra theomẫu do người sử dụng thiết kế.
Trang 24Người sử dụng
Nhà cung
cấp dịch
vụY/C dịch vụ
Hồi đáp
Thông điệp
Truy vấn
Kết quả
Trang 25vụ này có cần phải liên kết đến nhà cung cấp dịch vụ để lấy kết quả không Nếu cần thìTCat mở một kết nối truy vấn đến nhà cung cấp dịch vụ để lấy kết quả trả về Sau đóTCat sẽ phân tích kết quả trả về, lấy các thông tin cần thiết sau đó trả lại cho người sửdụng dưới dạng một hồi đáp.
2.4.2 Cơ sở dữ liệu
Cơ sở dữ liệu của TCat tập trung hầu hết ở phần WEB Nói cách khác, chỉ có phầnWEB mới được quyền tương tác trực tiếp với CSDL, các module khác không đượcphép tương tác trực tiếp với CSDL vì lý do bảo mật CSDL sẽ được nói rõ ở phầnWEB Ở chương hai này, chúng tôi chỉ giới thiệu tóm tắt.
CSDL được chia làm hai phần chính, phần khung chương trình và phần dịch vụ.
Trang 26Hình 2 3 CSDL của TCat
Phần khung chương trình sẽ bao gồm các bảng Friend, User, GroupACL, Service, Bot,Group là phần lõi của chương trình Các bảng này sẽ được xây dựng sẵn từ đầu Mốiliên hệ giữa các bảng cũng như mô tả chi tiết sẽ được nói rõ ở phần chương bốn.
Các bảng còn lại thuộc phần dịch vụ Các bảng thuộc phần dịch vụ được xây dựngthêm sau này, tùy theo mỗi dịch vụ ta lại xây dựng các bảng cho phù hợp Vì các bảngthuộc phần dịch vụ được xây dựng sau nên chúng phải tương thích với các bảng thuộcphần khung chương trình.
Trang 27CHƯƠNG 3 GIAO DIỆN IM
3.1 Tổng quan giao thức Yahoo Messenger (YMSG)
Yahoo Messenger hiện nay là một chương trình chat khá phổ biến của người Việt Namcũng như trên thế giới Theo thống kê thì có khoảng 248 triệu người đăng ký sử dụngdịch vụ chat của Yahoo[2] Ở Việt Nam thì Yahoo Messenger đã chiếm ưu thế hơn rấtnhiều so với các loại khác (Skype, GoogleTalk, AIM, Windows Live Messenger),mặc dù trên thế giới thì tỷ lệ khá cân bằng
Mô hình của giao thức Yahoo theo kiểu Client – Server Theo đó Client là chươngtrình Yahoo Messenger chat bình thường người sử dụng hay chạy trên máy tính.Server là một số máy chủ của Yahoo Khi đăng nhập Client gửi yêu cầu đến Server.Server có quyền từ chối yêu cầu hoặc xác thực yêu cầu Sau khi đã được Server chấpnhận cho phép kết nối Client sẽ lấy toàn bộ danh sách bạn bè, các tùy chọn cá nhân,vv từ Server Không có một kết nối trực tiếp nào được mở khi một Client muốn kếtnối để trò chuyện với một Client khác (hai người trên hai máy tính, chạy hai chươngtrình Yahoo Messenger, chát với nhau) thì, mọi kết nối đề thông qua Server[3] Serversẽ đóng vài trò là người điều khiển cuộc trò chuyện này.
Giao thức của Yahoo Messenger là giao thức đóng Chương trình chát YahooMessenger là chương trình mã đóng (closed source) do vậy chúng tôi sẽ không nhậnđược bất cứ sự hỗ trợ nào của Yahoo Mọi thông tin chúng tôi có ở dưới đây đều dựatheo tài liệu tìm kiếm được trên internet và dựa vào việc bắt các gói tin của chươngtrình Yahoo Messenger Việc bắt gói tin tôi sử dụng chương trình WireShak[4] Banđầu tôi sử dụng chương trình WireShark phiên bản cũ (phiên bản 0.99.0) đã có hỗ trợgiao thức YMSG nhưng chưa đầy đủ, việc bắt gói tin và lọc gói tin gặp khá nhiều khókhăn Tuy nhiên sang đến phiên bản mới (phiên bản hiện tại tôi đang sử dụng là phiênbản 1.0.7) việc lọc gói tin đã đơn giản hơn khá rất nhiều
Khi thực hiện việc lọc gói tin thì giao thức hiện tại của Yahoo là giao thức phiên bản15 (phù hợp với Client là Yahoo Messenger phiên bản 8.13) Trên mạng có một sốmiêu tả về giao thức Yahoo phiên bản 9, mới nhất là phiên bản 12 Nhìn chung haiphiên bản có khá nhiều điểm khác biệt rõ rệt Tuy nhiên vẫn có một số điểm chung (vềcấu trúc, một số mã dịch vụ vv ).
Trang 28Hình 3 1: Ảnh chụp màn hình chương trình Wireshark
3.1.1 Sự khác nhau giữa các phiên bản
Giao thức YMSG là giao thức đóng, và mỗi phiên bản của giao thức thì cấu trúc củagói tin lại bị thay đổi chút ít Ví dụ với giao thức phiên bản 9 có trường phiên bản giaothức (version dài 4 byte) trong khi ở giao thức phiên bản 12 thì trường version này chỉcó độ dài là 2 byte.
Hình 3 2: Cấu trúc gói tin YMSG phiên bản 12
Trang 29Hình 3 3: Cấu trúc gói tin YMSG phiên bản 9
Như đã thấy ở hai hình trên, YMSG phiên bản 9[5] và phiên bản 12[6] có sự khác nhauvề cấu trúc gói tin Tuy cả 2 đều 20 byte tiêu đề nhưng ý nghĩa và vị trí thì có sự khácbiệt.
Đó là chưa kể sự khác nhau về dịch mã dịch vụ cũng như mã trạng thái…
Sự khác nhau này phải qua khá nhiều lần chúng tôi mới nhận thấy được Vì ban đầuchúng tôi quyết định viết chương trình với giao thức YMSG phiên bản 15 (trên mạngvẫn chưa có miêu tả cụ thể về giao thức YMSG phiên bản 15) Tuy nhiên cấu trúc củaYMSG phiên bản 15 lại khác với phiên bản 9 và phiên bản 12 Sau khá nhiều lần bắtgói tin và phân tích , chúng tôi mới đưa ra kết luận về cấu trúc của gói tin YMSGphiên bản 15.
3.1.2 Cấu trúc một gói tin của YMSG
Trang 30Trong hình trên tất cả các trường số đều chứa theo kiểu network byte order Tiêu đề của một gói tin gồm có 20 byte đầu tiên:
Session id
Khi Client gửi gói tin đầu tiên thì `là 0, Server hồi đáp với session id được sử dụng bởiclient và Server trong tất cả các gói sau này Server có thể thay đổi session id, trongtrường hợp này thì Client phải sử dụng session id mới.
Data section có độ dài là pkg_len và chứa một chuỗi khóa/giá trị Tất cả khóa là chuỗi
số Gói chứa giá trị số của các kí tự ASCII VD: 1 == 0x31, 21 == 0x32 0x31 Số lớnnhất của khóa là không biết tuy nhiên độ dài lớn nhất của khóa hiện nay là 3 kí tự Mọi
khóa và giá trị bị ngăn bởi 2 byte liên tiếp là 0xc0 0x80 Một vài khóa có thể có giá trị
rỗng Nghĩa của một khóa khi gửi được quyết định bởi dịch vụ sử dụng Hình dưới môtả cấu trúc của trường DATA.
Trang 31VD: gói dữ liệu được gửi sẽ như sau:
0x30 0xc080 Yahoo_id 0xc080 0x31 0xc080 active_id 0xc080 0x35 0xc080 recipient_id 0xc080 0x3134 0xc080 message_text 0xc080
0xc080 byte là một chuỗi ngăn cách
Các giá trị 0x30, 0x31, 0x35 và 0x3134 là các khóa Chuyển sang mã ASCII sẽ tương
ứng với các giá trị sau: 0, 1, 5, 14 (0x3134 == 0x31 0x34).
3.1.3 Dịch vụ
Có 45 dịch vụ được biết đến trong version 9[8], mặc dù có thể tồn tại nhiều hơn Tất cảcác dịch vụ được biết đến được liệt kê trong danh sách phía dưới với các giá trị hexcủa chúng
YAHOO_SERVICE_LOGON = 0x01 YAHOO_SERVICE_IDLE = 0x05 YAHOO_SERVICE_USERSTAT = 0x0a YAHOO_SERVICE_NEWCONTACT = 0x0f YAHOO_SERVICE_ADDIDENT = 0x10 YAHOO_SERVICE_SYSMESSAGE = 0x14 YAHOO_SERVICE_PASSTHROUGH2 = 0x16
Hình 3 5: Cấu trúc trường Data
Trang 32YAHOO_SERVICE_CHATMSG = 0x20 YAHOO_SERVICE_GAMELOGON = 0x28 YAHOO_SERVICE_GAMEMSG = 0x2a YAHOO_SERVICE_FILETRANSFER = 0x46 YAHOO_SERVICE_VOICECHAT = 0x4a YAHOO_SERVICE_NOTIFY = 0x4b YAHOO_SERVICE_P2PFILEXFER = 0x4d YAHOO_SERVICE_PEERTOPEER = 0x4f YAHOO_SERVICE_AUTHRESP = 0x54 YAHOO_SERVICE_LIST = 0x55 YAHOO_SERVICE_AUTH = 0x57 YAHOO_SERVICE_ADDBUDDY = 0x83 YAHOO_SERVICE_REMBUDDY = 0x84 YAHOO_SERVICE_IGNORECONTACT = 0x85 YAHOO_SERVICE_REJECTCONTACT = 0x86 YAHOO_SERVICE_VERIFY =0x4c
3.1.4 Status codes (mã trạng thái)
Mã trạng thái là một giá trị 4 byte Hầu hết các mã trạng thái có độ dài 2 byte Các mãtrạng thái:
YAHOO_STATUS_AVAILABLE = 0 YAHOO_STATUS_NOTINOFFICE = 5 YAHOO_STATUS_STEPPEDOUT = 9 YAHOO_STATUS_INVISIBLE = 12 YAHOO_STATUS_CUSTOM = 99 YAHOO_STATUS_IDLE = 999
YAHOO_STATUS_OFFLINE = 0x5a55aa56 YAHOO_STATUS_TYPING = 0x16
Có thể chọn AVAILABLE hoặc INVISIBLE là trạng thái ban đầu lúc login vào nick.TYPING chỉ được sử dụng khi đang gửi 1 gói chú ý.
Trang 33Messaging
Sau khi xác thực thành công, phiên sẽ chuyển sang trạng thái messaging Server sẽ gửilại danh sách bạn bè, danh sách định danh, danh sách ignore và một danh sách cookiestới client Tất cả các danh sách này có thể được gửi trong một gói duy nhất Và sau đóserver sẽ gửi danh sách bạn bè online cùng với mã trạng thái của chúng Tất cả nhữngdanh sách trên sẽ được gửi mà không cần một yêu cầu nào từ phía Client.
Trong lúc này, mọi offline messages sẽ được gửi tới Client.
Trong trạng thái messaging, Client có thể gửi/ nhận các tin nhắn (messages), tham giavào các cuộc thảo luận, gửi/nhận các file, thay đổi trạng thái,…
Trạng thái messaging sẽ kết thúc khi người sử dụng chuyển sang offline và gửi góiLOGOFF.
3.2 Mô tả chi tiết giao thức YMSG
Tuy có thay đổi theo phiên bản giao thức, nhưng thứ tự thực hiện trong giao thứcYMSG vẫn được giữ nguyên (từ phiên bản 9 đến phiên bản 15) theo Hình 3 6: Giao
thức YMSG dưới đây:
Trang 34Hình 3 6: Giao thức YMSG
3.2.1 Verify
Đây là tính hiệu đầu tiên của client (Yahoo Messenger) gửi cho server Cấu trúc của gói tin như sau:
Trang 35Hình 3 7: Cấu trúc gói tin Verify
4 byte đầu luôn là YMSG
2 byte tiếp là phiên bản 0x000F = 15
4 byte tiếp là độ dài trường DATA (hiện tại bằng 0) 2 byte tiếp là mã dịch vụ 0x004C là dịch vụ Verify
4 byte tiếp là mã trạng thái (0x00000000 tương ứng available) 4 byte tiếp là session, lúc này server chưa gửi session
Gói tin hồi đáp từ server`
Trang 36Hình 3 8: Gói tin Verify hồi đáp từ Server
4 byte đầu luôn là YMSG
2 byte tiếp là phiên bản 0x000F = 15
4 byte tiếp là độ dài trường DATA (hiện tại bằng 0) 2 byte tiếp là mã dịch vụ 0x004C là dịch vụ Verify
4 byte tiếp là mã trạng thái (0x00000001 tương ứng mã trả lời của server) 4 byte tiếp là session, lúc này server chưa gửi session
3.2.2 Xác thực (Authentication )
Gói tin tiếp theo gửi từ Client là gói tin yêu cầu xác thực Nội dung gói tin gồm cóuser’s Yahoo id, hoặc thông tin định danh tới Yahoo id này Gói xác thực có một cặpkhóa/ giá trị.
`Y M S G
2 Byte2 Byte2 Byte2 Byte2 Byte
0x00000000
Trang 37Server trả lời lại một challenge string Client sẽ băm username và password vớichallenge string và gửi lại cho Server trong gói tin AUTH_RESP.
Và dưới là hình ảnh chụp màn hình gói tin Authentication được bắt bởi chương trìnhWireshark
Hình 3 10: Ảnh chụp gói tin Authentication
4 byte đầu luôn là YMSG
2 byte tiếp là phiên bản 0x000F = 15
4 byte tiếp là độ dài trường DATA (hiện tại bằng 0x0A = 10) 2 byte tiếp là mã dịch vụ 0x0057 là dịch vụ Authentication 4 byte tiếp là mã trạng thái (0x00000000)
4 byte tiếp là session, lúc này session chưa có Trường Data lúc này có 1 cặp key:value 1:yb_v1 (nick yahoo)
Server sẽ trả lời bằng gói tin sau:Y M S G
2 Byte2 Byte2 Byte2 Byte2 Byte
Trang 38Bên dưới là ảnh chụp màn hình gói tin Authentication ACK được bắt bởi chương trìnhWireshark
Hình 3 12: Ảnh chụp gói tin Authentication ACK
4 byte đầu luôn là YMSG
2 byte tiếp là phiên bản 0x000F = 15
4 byte tiếp là độ dài trường DATA (hiện tại bằng 0x64 = 100) 2 byte tiếp là mã dịch vụ 0x0057 là dịch vụ Authentication 4 byte tiếp là mã trạng thái (0x000000001 là mã server hồi đáp) 4 byte tiếp là session, 0x00542FCA
Trường Data lúc này có 3 cặp key:valueo 1:yb_v1 (nick yahoo)
o 94:8*p/n+a/z+j^(l-(x/p&p)*4%t&(z/r&… (chuỗi challenge)
o 13:2 (một giá trị vô nghĩa ?)
Hình 3 11: Gói tin trả lời Authenticaion ACK
Trang 39Sau khi bắt được gói tin AuthenticationACK, sẽ thực hiện việc băm mật khẩu vớichuỗi challenge mà server vừa gửi Thuật toán băm mật khẩu cũng là một thuật toánđóng Rất may là đã có sẵn một thư viện viết về thuật toán này.
Ảnh dưới là gói tin Authentication Response được bắt bởi Wireshark
Hình 3 14: Ảnh chụp gói tin Authentication Response
4 byte đầu luôn là YMSG
2 byte tiếp là phiên bản 0x000F = 15
4 byte tiếp là độ dài trường DATA (hiện tại bằng 0xB0 = 176)Y M S G
2 Byte2 Byte2 Byte2 Byte2 Byte
1:Yahoo id244:524223
135:8.1.0.249 (phiên bản Yahoo client)148:300
Hình 3 13: Gói tin Authentication Response
Trang 40 Trường Data lúc này có 7 cặp key:value
o 6:A=6p;J=ad;J=8n,X=68,V=7B,V=Em,Z=j6;M=jm;E=A8;L=ae, (giá trị bămthứ nhất)
o 96:R=hh;h=g0,K=fF,F=9b,W=m9,V=eh,r=59,Q=F3;K=0j,A=pc; (giá trị bămthứ 2)
o 0:yb_v1
o 2:1 (không hiểu ý nghĩa)
o 1:yb_v1
o 244:524223 (không hiểu ý nghĩa)
o 135:8.1.0.249 (Phiên bản Client Nếu thay bằng phiên bản client 7.1.0.249 thìquá trình này cũng không thành công)
o 148:300 (không hiểu ý nghĩa)
Trên thực tế, gói tin Authentication Response có thể chứa nhiều thông tin Tùy theotừng phiên bản mà những thông tin gửi kèm là khác nhau Những thông tin đưa lênđây là những thông tin bắt buộc phải có, và đủ để cho quá trình đăng nhập thành công.Có một số trường trong giao thức Yahoo không có ý nghĩa, hoặc mang một ý nghĩasâu xa nào đó, tuy nhiên nếu thiếu thì server sẽ từ chối gói tin khi nhận được.
Hình 3 15: Gói tin Message