/images/avatar.png

Hping3 工具使用

hping3

hping 最早來自 Salvatore Sanfilippo (網名 antirez)。沒錯,他就是後來開發了 Redis 的那位傳奇工程師。

根據 AI,他的演進好像是:

  • hping (1998 年):最初版本。它打破了傳統 ping 的限制,允許使用者手動設定 TCP 序號。在當時,這對於研究 TCP 序列預測(Sequence Prediction)攻擊非常有用
  • hping2 (2001-2002 年):這個版本將功能擴展到了 UDP、ICMP 以及更複雜的路徑 MTU 發現。它成為了當時滲透測試工程師的標準配備
  • hping3 (2004 年至今):這是目前最穩定、最廣泛使用的版本

hping3 最核心的整合是,整合了 Tcl (Tool Command Language) 腳本語言。這代表你不再只能下單行指令,你可以寫腳本來定義複雜的封包發送邏輯。但在這邊我們只是看他的指令。

FreeBSD ISO/Image 介紹

基礎知識

  • .iso:最早專為光碟(CD/DVD)設計的標準格式(ISO 9660),適合燒錄成實體光碟、掛載於虛擬機(VMware, VirtualBox, Proxmox)的虛擬光碟機
  • .img:這是磁碟的「位元組對位元組(Byte-by-byte)」複製,包含分割表(Partition Table)和開機引導程式(Bootloader),本質上就是一顆硬碟的縮影,通常使用 dd 指令或 Etcher 燒錄
  • .qcow2:QEMU / KVM (Proxmox) 常用
  • .vhd:Microsoft Hyper-V / Azure 常用
  • .vmdk:VMware 專用
  • .raw:無格式原始檔,通用於各種雲端平台(如 AWS, GCP)

實際案例

我們以 FreeBSD 15.0 stable 為例介紹。

RPI4 在 FreeBSD

正文

紀錄跟 RPI4 有關的 FreeBSD 開發問題。

遇到的坑

USB 鍵盤在 Single user mode 不能運作

請參考 Single user mode on Pi 3

FreeBSD 在進到一般模式,我可以用 USB 鍵盤,但在 OK prompt 打 boot -s 進到 Single user mode 之後無法使用 USB 鍵盤。

C++ Smart Pointer 了解

筆記

使用 make_unique 函式初始化,也可以自己用 unique_ptr 產生,但可能會產生不連續記憶體。

因為他是 unique,所以有一些限制

  • 傳遞時只能用 call by value

相關函式

  • 使 .get() 函式獲得 raw pointer
  • .reset() 函式修改指標指向的類型
  • .release() 釋放變成 raw pointer

Deleter

可以使用 lambda or struct,但建議使用 struct。

使用 QEMU 創建 FreeBSD 16 Current VM

QEMU

基本的操作如下,來是 Gemini:

/qemu-freebsd/image.png

但我們在切換 FreeBSD tty 會用到 Ctrl + Alt 所以反而會切到 Linux host machine 的 TTY,可以在 QEMU Monitor 輸入 sendkey ctrl-alt-f2 手動輸入切換。

VirtIO

在沒有 VirtIO 的年代,虛擬機(Guest)如果要叫宿主機(Host)做事情,必須假裝自己是一台擁有舊硬體的實體機(比如模擬成一張 1990 年代的 Intel 網卡)。這種「演戲」的過程非常消耗 CPU 效能。