
Linux[1]: VM & Python
By 小黑
目錄
- Linux Distros
- Virtual Machine
- Python
Linux Distros
講明之前忽略的事
- Linux 不是一個作業系統
- Linux 只是一個 Kernel (內核)
- Kernel 好比是大腦,負責分配記憶體、CPU 等資源給作業 系統(人)的其他組件(比如手、腿)
- 只有 Kernel (大腦)是完全不夠的,所以才需要其他組件
Linux Distros
- 上次上課提到,Linux 的 Source Code 可以隨意更改
- 因此出現了很多人(或公司)將 Linux Kernel 加上雜七雜 八的組件,設計出新的作業系統
- 這些作業系統統稱為 Linux Distros (Linux 發行版)
- 各個發行版的程式理論上都是通用的(因為用的 Kernel 都 是 Linux)
Distros 之間的區別
- 套件管理器(上堂課教的 apt 為其中一種)
- 設計哲學
- 內建程式
- 更新模式(Stable/Rolling)
- 自由度
- 用途(Desktop/Server)
常見 Distros




Ubuntu
Debian
Linux Mint
Fedora
Arch Linux
EndeavourOS
Ubuntu
- 最多人用的 Distro,預設 App 不少
- Stable release
- 由 Debian 魔改而來,界面算友善
- 很多人罵但還是不少人用
- 套件管理器 為 apt

Debian
- 老但好用,穩定的選擇
- Stable release(可以五年不大更新)
- 偏難裝,但裝好可以很久不動
- 套件管理器 為 apt


Linux Mint
- 新手的好選擇,使用者體驗比 Ubuntu 好
- 由 Ubuntu 魔改而來,坑應該少很多
- Stable Release
- 套件管理器 為 apt


Fedora
- 背後有公司支援,相對坑少
- Rolling Release
- 界面好看,安裝很方便
- 套件管理器 為 dnf


Arch Linux
- 超級大坑,不要碰
- Rolling Release
- 上下限很高,由使用者決定
- 超級難裝,但自訂度超高
- 套件管理器 為 pacman
(這東西很神)

EndeavourOS
- 我推的發行版
- Rolling Release
- 由 Arch 改過來,省掉了麻煩的安裝
- 享有 Arch 的爽度和 Ubuntu 的易用
- 套件管理器 為 pacman


還有這堂要教的 Kali Linux!
Kali Linux
- 資安界神器,駭客挺愛用
- Stable Release
- 由 Debian 改過來,加了很多資安工具
- 裝了就可以自稱駭客
- 套件管理器 為 apt


Virtual Machine
Virtual Machine (VM)
- 一種讓你可以「在作業系統裡再裝一個作業系統」的軟體
- 使用上跟一般電腦差不多,有獨立的網路、硬碟、作業系統
- VM 裡的資料跟作業系統完全隔絕,即使 VM 中毒也沒差
- 一台電腦可以開多個 VM ,甚至可以在 VM 裡開 VM
為什麼需要 VM
- 測試軟體需要不同系統,拿實體電腦太麻煩又太貴
- 想嘗試不同系統,但直接灌太麻煩
- 直接開危險的檔案很危險,所以拿 VM 開
- VM 匿名性高,要搞事比較不容易被抓
常見 VM



VirtualBox
Parallels Desktop
VMWare
- 要錢
- 免費
- 要錢
- 據說有人拿來在 Mac 上裝 Windows
講師沒錢,所以教 VirtualBox
安裝 VirtualBox
- 去 VirtualBox 官網 載你作業系統支援的安裝檔
- 下載完打開無腦按下一步就裝好了
- 如果你遇到比如 Oracle VirtualBox 需要先安裝 Visual C++ 之類的問題,去這裡裝 Visual C++ (選 x64 的版本)
裝好打開會是這個界面:

裝 Kali
- 點 這裡 下載 Kali 做好的 VirtualBox 版
- 下載完後用 7-zip 解壓縮
- 然後直接開啟裡面的 .vbox 檔,會彈出 VirtualBox
- 接著點擊 Start 就可以開始用 Kali 了
- 預設帳號:Kali
- 預設密碼:Kali
打開之後長這樣

Python
Python
- 一種程式語言
- 內建很多方便的 library
- 今天只講最基本的,更多麻煩來聽禮拜三 Python 小社
- 你要去上建北電資聯合 Python 小社
為何教 Python
- 如上,Python Library 很多,所以各種類型的程式都能寫
- 拿來寫工具很方便
搞資安不可能全用別人寫的工具,所以還是得學一門程式語 言
- 你不寫程式的話資安根本沒用
第一個 Python 程式
- 開一個檔案 a.py ,然後複製上面這段 code 存檔
- 在 Bash 裡輸入下列指令:
print("Hello, CKEFGISC")
python3 a.py
Function (函式)
- 一段有名字的 code,可以不斷調用這段 code
print("Hello, CKEFGISC") # print 是一個能印出東西的函式
def hello_ckefgisc(): # 建立一個名叫 hello_ckefgisc 的函式
print("Hello, CKEFGISC")
hello_ckefgisc() # 調用 hello_ckefgisc 這個函式
def print_couple(s, m): # 建立一個可以傳入 s, m 兩個參數的函式
print(s, "is S, and", m, "is M")
print_couple("AaW", "cdbe")
Variable (變數)
- 一個用來存東西的箱子
- 箱子能存不同類型的東西,e.g. 整數、小數、字串、真假值
- 1、2、5 都是 int (整數)
- 2.5、3.14、5.0 是 float (小數)
- "It's MyGO!"、"APCS sucks" 是 string (字串),就是一串文字,前後要用 " 包起來
a = 5 # 宣告 a 這個箱子裡面裝了 5
print(a) # 印出 a 這個箱子裡面裝的東西
b = a # 將 a 這個箱子裡面的東西複製一份到 b 箱子
print(b) # 印出 b 這個箱子裡面裝的東西
a = 4
print(b)
print(a)
Arithmetic (加減乘除)
- * 是乘,/ 是除
- ** 是次方的意思(2 ** 2 代表 2 的 2 次方)
- % 取餘數
print(1 + 2) # 3
print(1 * 3 + 4) # 7
print(2 ** 2) # 4
print(4 / 2) # 2
print(5 % 2) # 1
Input/Output (輸入輸出)
- input 函式可以用來獲得使用者輸入的內容
- input 函式預設的返回值是字串,得用 int 函式才能轉成整 數
name = input()
print("Hello,", name)
age = int(input())
print("You're", age, "years old.")
If/Else (條件判斷)
- == 是等於的意思 (因為 = 被變數宣告佔走了)
- > 大於 < 小於 >= 大於等於 <= 小於等於
if 2 > 1:
print("2 > 1")
is_ian_gay = False
if is_ian_gay == True:
print("Ian is not gay.")
else:
print("Ian is gay.")
Module (模組)
- Module 就是一堆別人已經寫好的函式
import webbrowser # 引入 webbrowser 這個模組
# 使用 webbrowser 裡面的 open 函式
webbrowser.open("https://www.youtube.com/watch?v=oHg5SJYRHA0")
2024 建北電資上學期資安小社[1]——VM & Python
By Aaron Wu
2024 建北電資上學期資安小社[1]——VM & Python
- 498