kiến thức Redmi AX6 -Unlock SSH - OpenWRT hướng dẫn

minhnkt

Đã tốn tiền
Có 1 tut hướng dẫn cho AX3600, AX6 và AX9000 rồi, tuy nhiên không được đầy đủ lắm, mà em cũng ko thích làm kiểu mù mờ, nhỡ có gì trục trặc lại khó xử lý. Hơn nữa, script có thể sẽ không tương thích với 1 số phiên bản OpenWRT.

Sau 3 ngày ngồi đọc các thể loại tut, đi xin tài khoản, đi nhờ lấy pass down firmware, mần mò thì em cũng viết lại 1 cái tut cho nó rõ ràng.
xin cảm ơn @babyangelhp đã giúp mình lấy link và pass từ thằng right.com.cn

Tất cả các file sử dụng trong bài, kể cả firmware, file backup ở đây nhé:
Code:
https://drive.google.com/file/d/1mAX4DXP9P58lLEl_Mw8-Ws6i38poI_RG/view?usp=sharing

OpenWRT LEDE cập nhật mới thì em để link ở #3

Tut này em viết cụ thể cho AX6, AX3600 và AX9000 thì chỉ khác nhau ở cái fw OpenWRT flash vào cuối cùng, bắt đầu từ mục 3, còn lại như nhau hết.

Ông nào thích mần bài gốc thì đây:
Code:
www.right.com.cn/forum/thread-4875974-1-1.html
www.right.com.cn/forum/thread-4060726-1-1.html
www.youtube.com/watch?v=xGHCJ6IZ0RA&t=585s
qust.me/post/hong-mi-ax6-jie-suo-ssh-an-zhuang-shi-yong-shellclash-jiao-cheng/
www.right.com.cn/forum/forum.php?mod=viewthread&tid=4686209&extra=page%3D1%26filter%3Dtypeid%26typeid%3D64
www.right.com.cn/forum/forum.php?mod=forumdisplay&fid=171&page=1&filter=typeid&typeid=64

Các bước thì ngắn gọn nó như này:
-Unlock SSH cho firm gốc
-Cài 1 cái backdoor vào, để nếu có bị lock SSH vào, thì dùng telnet vào để unlock lại SSH
-Ông nào ko thích chơi openWRT thì có thể cài thêm 1 cái bashscript là ShellClash để chơi cũng được, link Github
Lưu ý: TOÀN TIẾNG NƯỚC LẠ = )))) vừa dùng vừa GG-Translate.
-Sửa đổi 1 chút các phân vùng để flash được OpenWRT
Lưu ý: tất cả firmware đều là bản snapshot, thấy bảo dùng ko ổn định lắm, cá nhân mình thì thấy ko đến nỗi, bị mỗi 1 cái :LOL:) là quay PPPoE thì modem liên tục reboot khi chạy với openwrt LEDE (đang xài VNPT) - [UPDATE: TẮT IPV6 ĐI LÀ KO BỊ REBOOT], còn chạy với QSDK thì ko sao, nhưng nó nóng vcl, phải chế thêm quạt cho AX6.
-Flash openWRT vào thôi.
-Về FW gốc, éo chơi openWRT nữa.

Note1: Trong các post gốc hướng dẫn, có chỗ nó hướng dẫn dùng script để chạy, mình thuộc trường phái khổ dâm, tự chơi thủ công cho chắc, script các ông viết cũng ghê bỏ mẹ, cái gì thực sự cần thì mới script, còn những bước đơn giản thì làm tay cho chắc.
Note2: Những thứ cần chuẩn bị:
+1 con router đã chạy OpenWRT, hoặc bất cứ cái con mẹ gì có thể chạy OpenWRT mà phát được wifi.
+1 cái máy tính có cổng LAN để cắm dây vào AX6, như mình thì mình cắm mẹ nó dây LAN AX6 vào cục AP cũ, và dùng lap éo có cổng LAN, hơi khổ dâm tí.
+vài câu chửi thề, như mình là để chửi bất cứ đứa nào bén mảng lại gần để quấy, ko thì chửi đổng cũng được nha.
Note3:
Mình éo có con OpenWRT nào khác chạy đc wifi để làm trung gian, nên lấy con Pi4 flash OpenWRT vào cũng đc, ông nào thích dùng docker OpenWRT để build cũng được luôn.


PHẦN 1: UNLOCK SSH

1. Tạo 1 OpenWRT trung gian
Như đã nói, gia đình mình hoàn cảnh khó khăn, ko có con router nào chạy OpenWRT mà có wifi cả :LOL:) có mỗi con Buffalo 1750DHP thì chỉ chạy đc DDWRT.
cài OpenWRT lên Pi 4, setup như bình thường, tạo 1 mạng wifi không pass cho nhanh, đằng nào cũng chỉ dùng 1 lần
Tên WIFI : OpenWRT-Pi4
Pass WIFI : không có pass
Ông nào có router chạy OpenWRT rồi thì quá ngon, tạo luôn 1 cái WiFi có tên: OpenWRT-Pi4 éo cần pass


1.1

SSH vào, tạo 1 file xqsystem.lua/usr/lib/lua/luci/controller/admin/

Lệnh
Code:
vi /usr/lib/lua/luci/controller/admin/xqsystem.lua

với nội dung

Code:
module("luci.controller.admin.xqsystem", package.seeall)
    function index()
        local page   = node("api")
        page.target  = firstchild()
        page.title   = ("")
        page.order   = 100
        page.index = true
        page   = node("api","xqsystem")
        page.target  = firstchild()
        page.title   = ("")
        page.order   = 100
        page.index = true
        entry({"api", "xqsystem", "token"}, call("getToken"), (""), 103, 0x08)
    end

    local LuciHttp = require("luci.http")

    function getToken()
        local result = {}
        result["code"] = 0
        result["token"] = "; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"
        LuciHttp.write_json(result)
    end

Trước khi dùng thì kiểm tra lại 1 phát cho chắc, mở trình duyệt lên vào đây

Code:
http://IP_CỦA_OPENWRT_TRUNG GIAN/cgi-bin/luci/api/xqsystem/token

Kết quả trả về nó như này là Oke

Code:
{"code":0,"token":"; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"}

1.2
Set IP mặc định
cho con OpenWRT trung gian này về 169.254.31.1

1.3

Tắt DHCP của con OpenWRT trung gian này đi.
Note: Do đã tắt DHCP, nên nếu muốn SSH lại vào con OpenWRT trung gian này, thì phải set IP tĩnh cho máy tính về dải 169.254.31.x, rồi SSH vào mới được.



2. Inject AX6 vào con OpenWRT trung gian

2.1
Connect máy tính vào AX6, cắm WAN, đặt pass Wifi, nói chung là setup như bình thường, update FW lên bản 1.0.16 hoặc 1.0.18
Nhớ là bật con OpenWRT trung gian kia lên, và AX6 phải ở trong vùng bắt đc cái Wifi OpenWRT-Pi4 nhé


2.1 update firmware.png

2.1 update firmware 2.png


2.2 Đăng nhập lại vào AX6 (192.168.13.1) lấy STOK code


2.2-1.png

có stock code rồi thì mở trình duyệt lên, thay vào cái URL

Code:
    http://192.168.31.1/cgi-bin/luci/;stok=STOKCODE/api/misystem/extendwifi_connect?ssid=OpenWRT-Pi4&password=
trình duyệt nó trả về kết quả có "code":0 như này là OKE, sang bước tiếp theo
Code:
    {"msg":"connect succces!","code":0}
2.2-2.png



Mở tiếp 1 tab nữa, cho cái URL này vào, nhớ sửa STOKCODE
Code:
    http://192.168.31.1/cgi-bin/luci/;stok=STOKCODE/api/xqsystem/oneclick_get_remote_token?username=xxx&password=xxx&nonce=xxx

Kết quả có "code":0 như này là Voilà ! Xong bước inject để có SSH tạm thời
Code:
    {"token":"; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\u0022debug\u0022/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;","code":0}
2.2-3.png


2.3 Connect SSH (tạm thời) vào thôi
2.3.png



2.4 Backup các phân vùng, vào được 1 phát là backup ngay
chạy lệnh
Code:
    cat /proc/mtd

nó sẽ list ra các phân vùng, để ý các phân vùng này, sẽ cần backup lại
Code:
dev:    size   erasesize  name
mtd1: 00100000 00020000 "0:MIBIB"
mtd9: 00080000 00020000 "bdata"
mtd10: 00080000 00020000 "crash"
mtd12: 023c0000 00020000 "rootfs"
mtd13: 023c0000 00020000 "rootfs_1"

Dùng các lệnh này để backup vào thư mục /tmp

Code:
nanddump -f /tmp/mtd1 /dev/mtd1
nanddump -f /tmp/mtd9 /dev/mtd9
nanddump -f /tmp/mtd10 /dev/mtd10
nanddump -f /tmp/mtd12 /dev/mtd12
nanddump -f /tmp/mtd13 /dev/mtd13

Sau khi backup xong, thì dùng winscp hoặc lệnh mà lôi các file mtd1, mtd9, mtd10, mtd12, mtd13 về cất đi.
Về stock firmware sẽ cần.

2.5.png


2.5
Giờ thì dùng winscp hoặc ông nào dùng mac/linux thì dùng lệnh scp mà đẩy file crash_unlock.img lên /tmp
rồi chạy lệnh
Code:
    mtd write /tmp/crash_unlock.img crash
    reboot
đoạn này quên chụp ảnh mẹ nó r, xem tạm ảnh ở ngay bên trên, mình backup từ trước r nên ko cần nữa.

2.6
2.6.1 Sửa file backup phân vùng bdata

Kéo file backup mtd9(bdata) thả vào cái icon tool XiaoMiMtdModify.exe để nó sửa, xem hình (mình đổi tên file mtd9 sao lưu ở bước trên thành mtd9(bdata) thôi nhé)
zzz.png


Sau khi kéo thả vào như này, thì cái tool kia nó sẽ patch lại file mtd9, trong thư mục này sẽ xuất hiện thêm 1 file nữa có cái đuôi chữ tàu, đây là file backup, kệ mẹ nó đi.

2.6.2 giờ thì đẩy file mtd9 vừa sửa lên /tmp bằng scp
2.6.3.png


rồi chạy lệnh này
Code:
    mtd write /tmp/mtd9\(bdata\) bdata

Kết quả trả về:
Code:
Unlocking bdata ...
Writing from /tmp/mtd9(bdata) to bdata ...
 

Attachments

  • 2.6-1.png
    2.6-1.png
    56.6 KB · Views: 360
Last edited:
2.7 Clear phân vùng crash
chạy lệnh
Code:
    mtd erase crash

Kết quả trả về:

Code:
Unlocking crash ...
Erasing crash ...

2.7.png



2.8 Khởi động lại
reboot

Roài, giờ đến đoạn dùng script để tạo backdoor khi update firmware hoặc reset hay sao đó mà mất SSH, link GITHUB script ở đây, down về rồi dùng scp đẩy 3 file lên /etc:
ax3000.sh
, calc_pwd_from_sn.shfuckax3000

rồi chạy 2 lệnh sau, sau mỗi lệnh, AX6 sẽ tự khởi động lại, cứ chờ đèn nó xanh rồi lại SSH vào gõ tiếp nhé
Code:
    sh /etc/ax3000.sh unlock
AX6 tự khởi động lại
Đợi khởi động xong, SSH vào lại
Code:
    sh /etc/ax3000.sh hack

Lưu ý dòng kết quả, username và password sẽ được đặt lại
Có thể dùng script để xem lại mã này nha

3.0.png



NẾU MẤT SSH sau khi upgrade, vào AX6 lại bằng TELNET và chạy lệnh để lấy lại quyền SSH, mỗi dòng 1 lệnh
Code:
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
Code:
/etc/init.d/dropbear start
Code:
exit

RỒI XONG VỤ UNLOCK SSH.

CÀI SHELLCLASH

Như mình đã nói ở trên, ông nào thích chơi tới openWRT thì quất tiếp, ko thì cài nốt thằng ShellClash này lên, về thằng này thì mình có tgian sẽ nói sau, nó cũng dễ bỏ mẹ, mỗi tội phải thường trực cái google translate bên cạnh, vì nó toàn chữ tàu ><

Sửa file /etc/opkg/distfeeds.conf trước
Code:
vi /etc/opkg/distfeeds.conf

xóa hết đi, thay bằng cái này:
Code:
src/gz openwrt_base http://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/base
src/gz openwrt_luci http://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/luci
src/gz openwrt_packages http://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/packages
src/gz openwrt_routing http://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/routing

Cập nhật opkg, cài curl, wget
Code:
opkg update && opkg install wget --force-overwrite && opkg install curl --force-overwrite

Cài thôi
Code:
export url='https://raw.githubusercontent.com/juewuy/ShellClash/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null

Chọn 1 để cài vào /etc rồi chọn 1 , chọn 1 tiếp để confirm
cài xong thì chạy ShellClass bằng lệnh
Code:
clash


3 TIẾP TỤC CHƠI OPENWRT vào AX6
RÚT dây WAN ra khỏi AX6

SSH vào AX6 và chạy mớ lệnh này
Code:
nvram set flag_last_success=0
nvram set flag_boot_rootfs=0
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram set boot_wait=on
nvram set uart_en=1
nvram set telnet_en=1
nvram set ssh_en=1
nvram commit


3.1 Flash bootfw

scp file xiaomimtd12.bin lên /tmp

rồi ghi vào rootfs bằng lệnh
Code:
    mtd write /tmp/xiaomimtd12.bin rootfs

3.1.png


HARD RESET lại router, phải rút nguồn nhé !!!
Sau khi khởi động lại, chả có đèn đóm gì lên hết đâu, cứ kệ nó, đợi 1 lúc, IP router lúc này nó sẽ về 192.168.1.1, để ý IP ở máy tính nó đổi về dải này thì sửa lại kết nối SSH để kết nối lại với AX6.

3.2.png


SSH vào với username : root, không có pass


3.2 Mở rộng phân vùng


dùng scp đẩy file a6minbib.bin lên /tmp
theo như các pháp sư nước lạ thì phân vùng gốc đc xiaomi chia quá bé nên éo đủ để chơi, trong mấy cái post gốc có đó.

rồi chạy lệnh sau, mỗi dòng 1 lệnh
Code:
cd /tmp
    . /lib/upgrade/platform.sh
    switch_layout boot; do_flash_failsafe_partition a6minbib "0:MIBIB"
Kết quả như bên dưới
3.2-2.png


Ở đây mình thấy có 1 cái lệnh not found mmc_part, thử vài lần và vài fw khác nhau của AX rồi mà vẫn thế, ko biết có phải nguyên nhân khiến mình quay PPPoE toàn xịt không. Sẽ test thêm sau. Còn file a6minbib.bin được ghi vào đủ dung lượng rồi.


3.3 Flash FW mới

OpenWRT thì mình mới thấy có 2 loại, 1 loại là QSDK, 1 loại là LEDE, đều là snapshot cả, không phải bản chính thức từ openWRT, flash cái nào vào cũng được

về cách flash, thì có 2 cách

-flash thẳng qua SSH bằng lệnh ubiformat thì sẽ dùng firmware có .ubi thường là có đuôi *nand-factory.ubi
-flash qua web bằng file .bin thường có đuôi là *nand-sysupgrade.bin

mình thì luôn chọn cách phang vào bằng ubiformat qua SSH, tại vì quen quay tay he he.
scp firmware .ubi lên /tmp và dùng lệnh:

Code:
ubiformat /dev/mtd13 -y -f /tmp/tên_file_firmware.ubi
fw_setenv flag_last_success 1
fw_setenv flag_boot_rootfs 1
reboot

3.3.png

Nhìn các dòng kết quả sau mỗi lệnh mình chạy nhé.

nếu muốn flash lại fw khác thì vẫn scp firmware lên /tmp, làm thêm 1 bước nữa

Code:
fw_setenv flag_last_success 0
fw_setenv flag_boot_rootfs 0
reboot

SSH vào lại rồi mới chạy

Code:
ubiformat /dev/mtd13 -y -f /tmp/tên_file_firmware.ubi
fw_setenv flag_last_success 1
fw_setenv flag_boot_rootfs 1
reboot


NOTE 1:
Đoạn này mình giải thích qua, router sẽ có 2 phân vùng rootfs và rootfs_1 (xem lại bảng chỗ backup phân vùng ấy) cài đc 2 firmware cùng lúc vào 2 phân vùng này, cái MiTV nó cũng y chang :LOL:, việc chọn phân vùng nào để khởi động, sẽ bằng việc set 2 tham số env
flag_last_successflag_boot_rootfs0 hoặc 1, xong khởi động lại

muốn ghi vào mtd13(rootfs_1) thì set về 0 (khởi động bằng rootfs)
muốn ghi vào mtd12(rootfs) thì set về 1 (khởi động bằng rootfs_1)


xem lại bước 3.1, ghi 1 cái firmware QSDK vào mtd12(rootfs) đó


NOTE 2:
Như cái Note 1 vừa xong thì thấy là ta có thể hoàn toàn chơi 2 FW khác nhau trên 2 phân vùng,
để mtd12 firmware OpenWRT, để mtd13 stock chẳng hạn, hoặc như mình bây giờ để stock trên mtd13, QSDK ở mtd12, muốn xài cái nào thì chỉ cần vào SSH, set khởi động bằng rootfs hay rootfs_1 là xong.

---------------------------------------------------

CUỐI CÙNG, về lại stock từ OpenWRT

SSH vào, tất nhiên rồi, như mình vừa nói bên trên, để về stock, thì ta cần ghi firmware gốc vào mtd12, chứ ko phải mtd13. Cho khởi động bằng rootfs_1

Code:
fw_setenv flag_boot_rootfs 1
fw_setenv flag_last_success 1
reboot

Đợi nó lên thì SSH vào, dùng scp đẩy firmware gốc lên /tmp, hoặc file backup mtd12 cũng được, ở đây mình chọn fw gốc 1.1.4.ubi và dùng lệnh ubiformat để ghi vào
đồng thời mình cũng phải khôi phục mtd1, scp nó lên /tmp nốt

Code:
ubiformat /dev/mtd12 -y -f /tmp/AX6_1.1.4.ubi
mtd write /tmp/mtd1  /dev/mtd1
fw_setenv flag_boot_rootfs 0
fw_setenv flag_last_success 0

Cuối cùng là rút điện và cắm lại, hard reset, lần này khởi động sẽ hơi đầu lâu, cứ mặc kệ nó, đến khi nào thấy các đèn xanh là xong.
---------------------------------------------------
 
Last edited:
Thớt update FW lede cho AX6, AX3600, AX9000 có vẻ nhận đc nhiều quan tâm với chăm chỉ update, file cập nhật, bên dưới là mật khẩu vào mà down các fw, xin đội ơn cụ @babyangelhp đã xem giúp.

Code:
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4875974&extra=page%3D1%26filter%3Dtypeid%26typeid%3D64&page=1

https://wwr.lanzoui.com/b02c8p8ta p4$sw0rd 777s <---- FW cho AX6
https://wwr.lanzoui.com/b02cafd6j
p4$sw0rd 8jle <----- FW cho AX3600 và AX9000

Sau 3 ngày vọc vạch thì em về cmn stock và chấp nhận cắn răng chơi với thằng ShellClash.

Thứ 1 là mệt mỏi với mấy quả chữ nghĩa tiếng mẫu quốc vcl, làm cái đéo gì cũng phải dịch vừa CN-EN-VN, rồi đến quả script, tool tủng, ngứa mắt.

Thứ 2 là chỉ cái fw QSDK là em có thể quay đc PPPoE để xài, thực ra là em ko thiếu thiết bị để làm router, nhưng cái chính là k muốn cắm quá nhiều, đhs LEDE vào các thể loại phiên bản từ thấp đến cao, ko quay đc pppoe thì ko sao, connected phát là 10-30s sau tự khởi động lại (???)
Mà cái QSDK thì nó nóng vãi lìn, trong lúc đợi down firmware tùm lum với đi xin đi nhờ tài khoản, em đã phải lôi 2 cái quạt coolmoon ra để chế, card wifi chạy kiểu đéo gì mà toàn 80-90 độ (???) :-s, ơn giời cho quạt vào thì nó giảm xuống còn 54 độ :-ss

Thứ 3 là em hết mẹ nó kiên nhẫn để ngồi test fw rồi, có gì nhờ anh em chuột bạch thêm, xong có cụ nào confirm đc cho em fw nào quay pppoe với vnpt được thì em ngàn đời đội ơn.

UPDATE: tắt IPv6 đi là quay PPPoE okê !!!! tất cả mọi thứ ngon hết r nha.

20218f4018a7-5270-4dc3-8ae6-195893ac150d.png
 
Last edited:
Chất lượng bác ơi. Tụi Mi khóa boot các kiểu làm cực thiệt. Con ax6 ngoài con CPU thì nhìn phần cứng nó làm sơ sài quá. Kể cả con Ax3600 vỉ mạch nhìn gọn hơi bẩn không sáng sạch như đám Netgear, Linksys.
 
Bài quá chất lượng. Đánh dấu khi nào có openwrt bản chính thức cho mấy con này thì mua về xài :D
 
cái này chơi đc cho AX5 ko thím ơi
Cách làm thì nó y hệt :LOL: bồ chuẩn bị đồ đi r mình lấy file về cho. Mà mình giờ éo chơi cái kiểu hack SSH này nữa rồi, mệt vliz, mua mẹ nó cái mạch USB->TTL CP2102 có 40k về chấm hàn có 3 sợi dây, flash luôn qua máy tính khỏi lo brick, từ stock qua lại openWRT chắc 1 phút :LOL:

Thích đọc thì đây:
Code:
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4032490&highlight=ax5&mobile=2
https://www.right.com.cn/forum/thread-4039512-1-1.html
https://www.right.com.cn/forum/thread-4211134-1-1.html
https://www.right.com.cn/forum/search.php?mod=forum&searchid=4256&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=AX5+SSH
 
Cách làm thì nó y hệt :LOL: bồ chuẩn bị đồ đi r mình lấy file về cho. Mà mình giờ éo chơi cái kiểu hack SSH này nữa rồi, mệt vliz, mua mẹ nó cái mạch USB->TTL CP2102 có 40k về chấm hàn có 3 sợi dây, flash luôn qua máy tính khỏi lo brick, từ stock qua lại openWRT chắc 1 phút :LOL:

Thích đọc thì đây:
Code:
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4032490&highlight=ax5&mobile=2
https://www.right.com.cn/forum/thread-4039512-1-1.html
https://www.right.com.cn/forum/thread-4211134-1-1.html
https://www.right.com.cn/forum/search.php?mod=forum&searchid=4256&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=AX5+SSH
Sẵn hướng dẫn luôn đí bác cho nó full ốp sền.
 
Sao không thử tự build 1 bản Openwrt từ source bác mình thấy nó hỗ trợ chip IPQ80XX rồi. Wifi thì từ từ tính nữa. Chủ yếu tận dụng sức mạnh con chip
 
Sao không thử tự build 1 bản Openwrt từ source bác mình thấy nó hỗ trợ chip IPQ80XX rồi. Wifi thì từ từ tính nữa. Chủ yếu tận dụng sức mạnh con chip
Mình cũng đag mần cái actions openwrt để build thử đây, trc mỗi lần build local lâu vãi đái, mỗi lần test ngại vliz, giờ dùng thằng github build luôn cũng đỡ, mà lười quá.

via theNEXTvoz for iPhone
 
Bản openwrt cho AX6 có giao diện tiếng Anh không bác, mình muốn up lên mà ngại cái giao diện nửa Tây nửa Tàu của mấy phiên bản tụi Trung build
 
Back
Top