--- title: Tutorial SageMath tags: [crypto, SageMath, writeup] --- # Cài Đặt & Sử Dụng SageMath ## Trên Linux Trước tiên bạn có thể tạo 1 thư mục `sagemath` trên `Desktop` hoặc bất kỳ đâu tùy bạn thích. ### Bước 1: Cài đặt Miniforge (trình quản lý môi trường `conda`) #### Tải Miniforge cho hệ thống 64-bit ``` curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" bash Miniforge3-$(uname)-$(uname -m).sh ``` Với uname và uname -m trên máy Linux của bạn. Ví dụ như của mình: ![Ảnh chụp màn hình 2025-07-31 224027](https://hackmd.io/_uploads/HJDcLoFDel.png) Thì ta sẽ có lệnh như sau: ```bash curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh ``` #### Chạy trình cài đặt Sau khi tải Miniforge3 thành công, ta sẽ được 1 file .sh. Tiếp tục chạy trình cài đặt: ```bash bash Miniforge3-Linux-x86_64.sh ``` ![Ảnh chụp màn hình 2025-07-31 224039](https://hackmd.io/_uploads/BktCPjtPle.png) Khi được hỏi `Do you accept the license...`, chọn `yes`. ![Ảnh chụp màn hình 2025-07-31 224121](https://hackmd.io/_uploads/ByYHIiKPge.png) Sau khi cài xong, **đóng terminal và mở lại**, hoặc chạy thủ công: ```bash source ~/.zshrc # nếu dùng Zsh source ~/.bashrc # nếu dùng Bash ``` Kết quả thành công, khi bạn gõ conda sẽ hiển thị như trong ảnh ![Ảnh chụp màn hình 2025-07-31 224221](https://hackmd.io/_uploads/BymGDiYvgl.png) ### Bước 2: Tạo môi trường riêng cho SageMath ```bash conda create -n sage sage python=3.11 ``` ![Ảnh chụp màn hình 2025-07-31 224234](https://hackmd.io/_uploads/rJY_vjYDeg.png) Trong quá trình tạo, các bạn cứ tiếp tục chọn yes nhé ![Ảnh chụp màn hình 2025-07-31 224303](https://hackmd.io/_uploads/SJBpusKwee.png) Sau khi tạo xong, tiến hành activate sage ```bash conda activate sage ``` ![Ảnh chụp màn hình 2025-08-01 093942](https://hackmd.io/_uploads/HynmFotvlx.png) Tới đây thì môi trường ảo `Conda` đã được kích hoạt > ? Vậy "sage" trong dòng đó có nghĩa là gì? > Trong môi trường này, bạn đã cài sage. Nên từ đây bạn có thể chạy lệnh sage để khởi động chương trình SageMath. ### Bước 3: Chạy SageMath #### Dùng dòng lệnh: ```bash sage ``` #### Hoặc mở giao diện Jupyter Notebook: ```bash sage -n ``` Một đường link local sẽ hiện ra trong cmd, ví dụ: ![Ảnh chụp màn hình 2025-07-31 224428](https://hackmd.io/_uploads/SyJg9stPxg.png) ``` http://localhost:8888/tree?token=... ``` → Mở link này trong trình duyệt để sử dụng SageMath qua Jupyter. ![Ảnh chụp màn hình 2025-08-01 095145](https://hackmd.io/_uploads/ryCensFPxg.png) ### Gợi ý (tuỳ chọn) Nếu muốn **tự động kích hoạt** môi trường Sage mỗi khi mở terminal, thêm dòng sau vào cuối `~/.zshrc` hoặc `~/.bashrc`: ```bash conda activate sage ``` ## Trên Windows Trên windows đơn giản ta sẽ thêm 1 bước trước khi cài `conda` thôi ### Bước 1: Mở PowerShell với quyền Administrator 1. Nhấn **Windows** 2. Gõ `powershell` hoặc `cmd` 3. Chuột phải → chọn **"Run as Administrator"** ### Bước 2: Cài đặt WSL (nếu chưa có) ```powershell wsl --install ``` Quá trình này sẽ tự động cài đặt WSL và Ubuntu mặc định. Nếu được yêu cầu, **hãy khởi động lại máy tính** để hoàn tất cài đặt. ### Bước 3: Kiểm tra WSL đã cài chưa ```powershell wsl --version ``` Nếu thấy phiên bản như `WSL version: 2.0.x`, bạn đã cài thành công. ### Bước 4: Xem danh sách bản phân phối Linux có thể cài ```powershell wsl --list --online ``` Danh sách sẽ hiển thị các distro như: Ubuntu-20.04, Ubuntu-22.04, Ubuntu-24.04... ![Ảnh chụp màn hình 2025-08-01 101822](https://hackmd.io/_uploads/rkcHznFwlx.png) ### Bước 5: Cài Ubuntu 24.04 ```powershell wsl --install -d Ubuntu-24.04 ``` Quá trình này sẽ tải và cài Ubuntu 24.04 trên nền WSL. **Ở đây có 1 lưu ý đó là khi gặp lỗi:** > The operation could not be started because a required feature is not installed. > Error code: Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_SERVICE_NOT_AVAILABLE Thì nguyên nhân là do hệ thống của bạn đang **thiếu một số thành phần cần thiết để chạy WSL2** (đặc biệt là Hyper-V hoặc Virtual Machine Platform) hoặc các dịch vụ liên quan chưa hoạt động. **Cách khắc phục** Đảm bảo các tính năng WSL liên quan đã bật: Mở PowerShell với quyền Administrator, lần lượt chạy lệnh: ``` dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` Sau đó khởi động lại máy và cài đặt lại `wsl --install -d <version your choice>` Sau khi cài xong, Ubuntu sẽ tự mở. Bạn cần nhập: - **Username** (ví dụ: `minhduc`) - **Password** (nhập 2 lần để xác nhận) Ở đây các bạn có thể sẽ xuất hiện thêm 1 lỗi về Network nữa (đã xảy ra với mình) đó là > - Kết nối Internet chậm hoặc không ổn định > - Windows đang tải từ server chậm hoặc bị gián đoạn > - Tường lửa hoặc phần mềm diệt virus chặn > - DNS trục trặc khiến việc phân giải domain tải về bị chậm hoặc không thực hiện được. Thì các bạn thử Chuyển DNS sang Google: 1. Vào Control Panel > Network and Internet > Network and Sharing Center 2. Click Change adapter settings 3. Chuột phải vào kết nối đang dùng → Properties 4. Chọn Internet Protocol Version 4 (TCP/IPv4) → Properties 5. Chọn Use the following DNS server addresses và nhập: ``` Preferred: 8.8.8.8 Alternate: 8.8.4.4 ``` ![Ảnh chụp màn hình 2025-08-01 103532](https://hackmd.io/_uploads/HkjVLhFwex.png) Sau đó nhấn OK và tải lại ### Bước 6: Mở lại Ubuntu sau này #### Cách 1: từ CMD/Powershell: ```powershell wsl -d Ubuntu-24.04 ``` #### Cách 2: từ menu Start: Nhấn **Windows** → gõ `Ubuntu 24.04` → Enter ### Một số lệnh quản lý WSL hữu ích | Lệnh | Mục đích | |------|----------| | `wsl --list --verbose` | Xem các distro đã cài & trạng thái | | `wsl --set-default Ubuntu-24.04` | Đặt Ubuntu 24.04 làm mặc định | | `wsl --shutdown` | Tắt toàn bộ WSL, giải phóng RAM | ### Gợi ý sau khi vào Ubuntu lần đầu Chạy lệnh cập nhật và cài đặt công cụ cơ bản: ```bash sudo apt update && sudo apt upgrade sudo apt install git curl python3 python3-pip ``` Sau khi có môi trường Linux trên Windows thì các bạn tiến hành cài đặt như [các bước ở trên Linux](https://hackmd.io/@m1nhd4cc/HJRxEjFPgx#Tr%C3%AAn-Linux) # Kiểm Tra SageMath Sau khi cài đặt và chạy thành công, mình sẽ kiểm tra SageMath bằng 2 challenge CTF Ở đây mình sẽ mượn tạm 2 challenge Crypto của giải [HCMUS-CTF 2025](https://hackmd.io/@YaipbyxZRByK2Qi9Le0t4A/Sk_8Z6c8xx) Các bạn chỉ cần copy Solution của Author và paste vào chương trình với tên file .py là được. Ở đây mình đặt exploit.py ![Ảnh chụp màn hình 2025-07-31 222843](https://hackmd.io/_uploads/Sk2Q1hFPgx.png) Chạy và exploit thành công! Get được flag # Lời kết & Ref SageMath không chỉ là một công cụ mạnh mẽ để hỗ trợ giải các bài toán đại số, hình học và mật mã — mà còn là một người bạn đồng hành đắc lực cho dân chơi CTF, sinh viên ngành khoa học máy tính, và bất kỳ ai đam mê toán học Ref: https://doc.sagemath.org/html/en/installation/index.html#windows