看到了這篇文章 想搞 PGP 智慧卡玩,但是 yubikey 死貴 還涉及到某些傻逼政治問題 於是就想找找有無開源實現什麼的。
然後就看見了 smartcard 的製作教學,可惜能找到的便宜 javacard 都是需要讀卡器的。
本來死心了,但是看見 ST-link v2 刷 GNUK 教學 突然就想折騰了,不得不說,還是 GNU 牛逼。專案由 $\stackrel{\textsf{Free Software Initiative of Japan}}{\textsf{FSIJ}}$ 維護。
這玩意比 yubikey 牛逼,支援最新的 x448 橢圓曲線加密演演算法(但是已經棄用 RSA 了)
一般 ST-Link v2 及其仿品都只提供 SWDIO SWCLK 而無 RXD TXD 這種直接串列埠就能刷的口,所以最好再買個 ST-Link v2 當燒錄器(買別的也行,主要是這個便宜),我買的是 PowerWriter Lite 2。本來想刷這個的,結果外殼都拆不開
所以:
我採用了 Arch Linux,其他系統編譯韌體的教學在這裡有[2]
首先 GNUK 支援 STM32F103 系列。
然後 GNUK 需要 128KB 快閃記憶體容量。
最後 STM32F103C8T6 和 STM32F103CBT6 用了一套東西,後者官方給定容量 128KB,前者雖然標了 64KB 但是實際上有 128KB 的空間可用。恰好,ST-Link 2 官方使用的主控就是前者。仿品中可能出現後者。
GD32F103 能 pin2pin 替換 STM32F103 自然也能用。但是需要換燒錄方式。
pacman -S arm-none-eabi-gcc
官網:In 2.5, we added GD32VF103 support. Please note that default libc is now picolibc (instead of newlib).
老教學會教你安裝 newlib,但是現在需要安裝 picolibc。但是這個東西不僅只在 aur 裡,而且過期了。實測直接更改 pkgver 也可以正常構建新版本。
所以:
git clone https://aur.archlinux.org/arm-none-eabi-picolibc.git
cd arm-none-eabi-picolibc.git
vim PKGBUILD # 將 pkgver 改成最新版本號,可以在上面 picolibc 專案 release 頁面看
makepkg -sif
git clone --recursive https://salsa.debian.org/gnuk-team/gnuk/gnuk.git gnuk
cd gnuk/src
./configure --vidpid=234b:0000 --target=ST_DONGLE
make build/gnuk-vidpid.bin
然後 build/gnuk-vidpid.bin
就是待燒錄的韌體檔案,我們把它單獨取出來待用。
pacman -S openocd inetutils
inetutils
用來提供 telnet
支援。putty
用不了,不知道是不是不相容 XWayland 的問題。
ST-Link v2 連線系統板教學挺多的,直接搜就行。這個裡面也有[2:1]。
PW Lite 2 的話官方檔案有接線教學。
我的是這樣
如果像[2:2]裡面這樣是非常好的,直接插進去隨便固定一下就行。但是我不是這種情況。我買的 ST-Link 只提供了四個焊盤!!!
這意味著你需要用偵錯排針湊合連線一下,連線刷寫過程中需要用手按住!偵錯排針...就是四根杜邦線粘成一排