Weil Jimmer's BlogWeil Jimmer's Blog


Category:Tools

Found 17 records. At Page 1 / 4.

深入淺出 PGP (Pretty Good Privacy) 公私鑰格式

No Comments
-
更新於 2025-09-28 19:16:34

簡單介紹

何謂 PGP?簡言之,就是一款可以方便使用者進行加密、簽署驗證的一個應用。

主要功能涵蓋但不限於:

  1. 用於 Email 或任何通訊軟體,加密傳輸任何機密訊息、檔案。
  2. 建立校驗機制,保證軟體、檔案不被修改。
  3. 對文件實施電子簽名,作為一種身份驗證(簽章)的概念。

PGP 運作原理

首先,要使用 PGP,必須先生成一組公鑰、私鑰。何謂公鑰、私鑰?公鑰,全名公開金鑰,簡單來說就是一個特製的鑰匙,可以放心的散播、外流沒有關係,反之,私鑰就是不可以外洩的機密鑰匙。

假如,Bob 要傳送一個機密訊息給 Alice,它就要把公鑰告訴 Alice,Alice 用那個公鑰把訊息加密後,再把加密後的訊息傳給 Bob,Bob 能用他持有的私鑰進行解密。

相當於,Bob 寄送了一個帶有鎖頭的盒子給 Alice,Alice 收到後,把機密裝在盒子裡,並關上盒子(上鎖),一旦鎖上,連 Alice 也無法打開盒子,因為 Alice 沒有鑰匙,只有 Bob 擁有鑰匙打開盒子。之後 Alice 再把已經裝了機密訊息並鎖上的盒子寄回給 Bob,Bob 收到後,能夠用 Bob 擁有的私鑰解開鎖頭,打開盒子,拿到裡面的機密訊息。

這就是所謂的「非對稱加密」,這裡就不細說原理了,有興趣的讀者可以搜尋一下「RSA」等相關算法。

PGP Key Server(金鑰伺服器)

一旦擁有屬於自己的 PGP 金鑰對後,你就可以把自己的公開金鑰上傳到網路上,有一些專門的伺服器就是用來存放這些公開金鑰的,例如我下面列出的這些網站,Ubuntu 的金鑰伺服器、MIT 的金鑰伺服器等。

這些伺服器都是開放給任何人使用的,你可以把你的公鑰上傳,別人就能透過搜尋你的 Email 找到你上傳的公鑰。

下圖就是搜尋到我上傳的公鑰,身份為 Weil Jimmer <me@weils.net>

如何生成 PGP 金鑰

您可以透過網路上的一些免費軟體來生成金鑰對,例如我做的一個線上生成金鑰的工具。進入網頁後,填入名字 (Name)、電子郵件 (Email)、密碼 (Password),然後按下最左邊的生成金鑰按鈕 (Generate Keypair) 即可。

或是使用其他工具也能生成,我在 Windows 上是安裝 gpg4win & Kleopatra。

公鑰範例

下面這一串亂碼就是生成的「公開金鑰」(Public Key)。

通常由 -----BEGIN PGP PUBLIC KEY BLOCK----------END PGP PUBLIC KEY BLOCK----- 包裹住。

這一段金鑰必須完整一字不漏的上傳到公開的金鑰伺服器,或是分享給寄件者的。這樣他們才能用你的公鑰加密機密訊息傳給你。

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
Lm9yZyPFkGMOMeVyD7ajCtH3nPwAJ1ABYNC4dd017xWEqlzIApsMFiEExKFq
MWLE1byhQ3LI0CPP3POB6JMAACgrEADFJe3O8HDmOXNqS3nlJZm2dvp0jGk3
mOsHW/EIbjMF2upF+1I5pAgKAkm5Bq4wi1MctazEzqjNyqjBl/YFPId9VLls
Gy6Yknw0LgHuaFdDJgrDv2xe5IxUajJ4JZJUBVgIooFVlDxOgGQa/nIbAvBi
KTztUAvKq/zs/dYqCNVp/hnDqsOtsu5LXhQuNylOIrVEwY5V2je4gsTQ1P4u
L+LuHfKCQ62pgwOezciZZqKZU2pqt8nXk/QSetP+gKais7HuNPpNI137Tb8W
ez4h+YAvxUi6Dzw4GhIPEdnQyLcRUj6/NDkPQk5xcCmuEJdP+C8omUapJYNi
e63INod4JK0vi838HzNTMYEjqyD12cGr6dH9jOawQ2RwWlCfobxnbadjHiDE
gANwTWsSfeMCteyh7Qobr+2GNVcGaO5ksb5b3gIUsntzPdheJaJjlKvDQ+ru
sKwbn/9+NsNy67dx6hCpjak6GigjcO85JXueFyywo+O+sTWCYFr1AwLL7y6r
JXRn06pU0vN21/Q9fMkh1lb+s6jkgfcI9F6u2b/HNfUpAP95F92ZjhQnz4t/
LoDwQb/l+Qv+Bj3mpVqHkxHLBrlS/49eKnQ1jU7j6dp3Ric6Xi+SypiShMjq
5s4ZEIti4d7LoyscfyWKWb7dL2AGUNafHdgmn7Ih3C4QARt6US7vig==
=mU5T
-----END PGP PUBLIC KEY BLOCK-----

私鑰範例

而私鑰通常由 -----BEGIN PGP PRIVATE KEY BLOCK----------END PGP PRIVATE KEY BLOCK----- 夾住。長得像是如下:

-----BEGIN PGP PRIVATE KEY BLOCK-----

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
Jp+yIdwuEAEbelEu74o=
=h6Cl
-----END PGP PRIVATE KEY BLOCK-----

私鑰通常都有密碼保護,並且建議需要密碼保護,不然任何人取得後,都能解密機密訊息。

如果私鑰帶有密碼的話,在解密訊息時,需要輸入密碼才能解密,可以多一層保障。

PGP 金鑰包含的資訊介紹

通常生成的公鑰裡面會夾帶一些資訊:像是 金鑰 ID、Email、姓名、使用的加密方法、用途等。

這是解碼上面的範例後,得到的結果:

[Main-Key]

    Key ID: d023cfdcf381e893
    Fingerprint: c4a16a3162c4d5bca14372c8d023cfdcf381e893
    Algorithm: RSA 4096-bit
    Not-Before: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
    Not-After: Never
    Key Usage: Certify, Sign

[User-ID]

    Alice <alice@weils.net>
    Not-Before: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
    Not-After: Never

    [Self-Certification]

        Issuer Key ID: d023cfdcf381e893
        Issuer Fingerprint: c4a16a3162c4d5bca14372c8d023cfdcf381e893
        Created: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
        Expired: Never
        Key Usage: Certify, Sign

[Sub-Key]

    Key ID: 5c560e520ccfc542
    Fingerprint: 2a7c0cd288b68ae30d6a508b5c560e520ccfc542
    Algorithm: RSA 4096-bit
    Not-Before: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
    Not-After: Never
    Key Usage: Encrypt-Communicate, Encrypt-Files

    [Binding-Signature]

        Issuer Key ID: d023cfdcf381e893
        Issuer Fingerprint: c4a16a3162c4d5bca14372c8d023cfdcf381e893
        Created: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
        Expired: Never
        Key Usage: Encrypt-Communicate, Encrypt-Files

PGP 公鑰除了包含姓名、電子郵件、加密所用的資訊外,還帶有過期時間等內容。其結構並不單純只是使用者資訊和 RSA 加密所用的 e 或 N 。

PGP 公鑰的基礎結構

不論是私鑰或公鑰都會帶有可以被解碼的公開資訊。結構如下:

主金鑰 (Main Key)
   ├─使用者 (User ID)
   │  ├─使用者自簽章 (Self-Certification)
   │  ├─其他使用者簽章 (Other-Certification)
   │  └─撤銷簽章 (Revocation-Certification)
   └─子金鑰 (Sub Key)
      ├─綁定簽章 (Binding-Signature)
      └─撤銷簽章 (Revocation-Signature)

原則上一個 PGP 公鑰,可以包含無數個使用者,不一定一個公鑰只能有一個 Email,可以有很多個 User ID 都綁定到同個公鑰上。

使用者 ID

每個使用者 ID 都由它下面的簽章來認證,也就是 Self-Sign 的部分,也可以由其他使用者認證,你如果有多個聯絡人,而且把那些聯絡人的公鑰設定為信任,那麼由那些聯絡人(簽章)保證的公鑰 User ID 就是有效的。

在通常情況下,只有自簽章(由主金鑰所簽發)的證書是有效的。所以即便其他人保證簽名,但不受信任網允許的話,仍然不可信。

如果這個身份(Name、Email)不再使用了,你也可以使用主金鑰去簽發一個撤銷簽章(Revocation-Certification),完全不用擔心一旦換了 Email 怎麼辦?

當然,如果撤銷了身份 ID,必須要把撤銷後的公鑰上傳到公開的 PGP 金鑰伺服器,向全世界宣告該公鑰上的身份 ID 不再有效。

子金鑰 (Sub-Key)

在 PGP 中,還有所謂的子金鑰隱藏在其中,通常建立 PGP 公鑰都會有至少有兩把鑰匙,其中一把是主金鑰,另一把是子金鑰。

主金鑰負責簽發身份 ID,以及簽發子金鑰,用於將子金鑰關聯到主金鑰上。像是一個群組管理員的概念。就像使用者 ID 一樣,主金鑰可以簽發無數個子金鑰,並把每個子金鑰關聯到主金鑰上。

每個子金鑰都由它之下的綁定簽名(Binding-Signature)所保證合法性。每個綁定簽名的簽發者通常是主金鑰。

為何需要那麼多子金鑰?

在 PGP 中,每個金鑰都有不同的職權,像是主金鑰只擁有簽發能力,不允許用於檔案加密、通訊加密。

你可以為每個子金鑰 (Sub-Key) 設計不同的用途。

在 RFC 4880 中規定了金鑰的用途:


0x01 - This key may be used to certify other keys.
0x02 - This key may be used to sign data.
0x04 - This key may be used to encrypt communications.
0x08 - This key may be used to encrypt storage.
0x10 - The private component of this key may have been split by a secret-sharing mechanism.
0x20 - This key may be used for authentication.
0x80 - The private component of this key may be in the possession of more than one person.

主金鑰擁有的職權為 (0x01) 負責簽發其他金鑰。而通常子金鑰都是用來加密用途 (0x04、0x08)。

在這種設計中,你可以定期地撤銷子金鑰,或添加其他子金鑰用於其他用途,例如認證 (x020) SSH 等。

撤銷簽名 Revocation-Certification

前面提到過,可以自由的撤銷子金鑰、使用者ID,具體如何進行的呢?

其實非常簡單,只需要用主金鑰在 User-ID 或 Sub-Key 建立一個撤銷簽名,這樣就可以讓該 User-ID 或 Sub-Key 不再視為有效。

如果要讓整個主金鑰撤銷怎麼辦?一樣通過主金鑰發布緊急的撤銷聲明,加在主金鑰的簽名區即可。

當然也必須要把這個聲明傳到公開的金鑰伺服器,這樣其他人也能透過專用的軟體去更新他們自己電腦儲存的金鑰。

金鑰被撤銷,在 RFC 4880 甚至還規定了一些理由,可以附加在撤銷簽名的聲明中,像是:沒有理由、金鑰外洩了等,或是自訂理由附在裡面。

 0  - No reason specified (key revocations or cert revocations)
 1  - Key is superseded (key revocations)
 2  - Key material has been compromised (key revocations)
 3  - Key is retired and no longer used (key revocations)
 32 - User ID information is no longer valid (cert revocations)

有效期

不論是 User-ID 或 Sub-Key 都能設定一個過期的時間,像是指定 bob@email.com 這個身份只能使用一年,然後其他身份是永久的。

通常金鑰 (Key) 本身是不包括期限的,不論是主金鑰還是次金鑰,都是由它的簽名帶給他的期限,也就是所謂的期限其實是可以修改的。

而 User-ID 下的 Self-Cert 規定了主金鑰的使用期限,只要延長了自簽章的期限,主金鑰的期限就會跟著增加。

而子金鑰 (Sub-Key) 則是由綁定簽名決定有效期,當然這些都是可以修改的。重複簽發綁定簽名就能替換掉原本的子金鑰期限。

總結:

PGP 作為一個隱私保障的工具,是非常好的傳輸機密訊息的一個方式。不僅可以生成只有本人才能驗證的專屬憑證外,也能建立信任網路,簽發其他人的公鑰,使其他人的公鑰也受信任。

一些人可能以為 PGP 只能針對單個身份驗證其實是錯誤的,PGP 允許多使用者驗證,甚至允許同時使用兩個公鑰加密,使得寄送者、收件者都能解密該機密訊息。

通過釋放自己的公鑰到有一定名氣的公鑰伺服器,可以建立起與陌生人的安全加密通訊的環境。

By Weil Jimmer


This entry was posted in General, Privacy, Tools By Weil Jimmer.

使用 OpenWrt 踩坑經驗與心得 設置虛擬區域網路進行隔離

No Comments
-
更新於 2023-08-27 21:51:49

前言

這次我就不說太多廢話了,接上篇文章的故事。

其實光是搞這個軟路由的所花的精力應該遠遠大於你省下的錢,就純粹是為了自己動手搞事才會弄這個東西,總感覺有點不划算。

在上次的經驗中,光是韌體的選擇就五花八門了,而且我還踩了不少出錯的點,例如,我下載的版本是 openwrt-x64-R23.4.1-squashfs-combined-efi.img,紅字重點。

那就不是常規的安裝方式,在用 PVE 建立虛擬機的時候,就要選 UEFI,當初根本想都沒想,後來上網查,看到別人說使用沒有 EFI 就正常。

可是多數版本都是阿,我也是找好久文章才翻到有篇提到要設定,覺得是知識盲區。

話說回來,你選的版本如果是 squashfs 版本,則是可以自由延伸你的硬碟大小的。例如用 PVE 內建的就可以直接延伸了。

後來我試了好幾套,因為我想設置 VLAN 阿!結果沒想到新版本的 OpenWrt都不支援。被拿掉了。

我還特別去裝了 L大的版本。想說不可能沒有啊。裝完才發現沒有支援 VLAN,白費時間。

安裝

後來,又去查了第二套,結果我也在上面浪費了許久時間。嘗試安裝了 immortalwrt-21.02.6-x86-64 。

這次是有支援 VLAN 功能的,但問題是沒想像中那麼簡單。因為 OpenWrt 似乎在 18 以上的版本就直接拔掉 Switch 的功能,只能用 Bridge 的方式去橋接網路裝置。

而這個正是很大的坑,試滿久最後覺得非常古怪,總感覺不是我的問題。總之,其實也不太推這版本就是。

裝這個版本的時候,看網路上還有透過打指令的方式重新調整硬碟大小的覺得滿奇特的,在這邊附上他用的指令,做為筆記。

#進入資料夾
root@pve1:/var/lib/vz/template/iso#

#填入 2GB 的零資料
dd if=/dev/zero bs=1M count=2048 >> your.img

#讀取 img 到 parted 的工具中
parted your.img 
#列出分區
(parted) print
Model:  (file)
Disk /var/lib/vz/template/iso/immortalwrt-21.02.6-x86-64-generic-squashfs-combined-efi.img: 3004MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                  Flags
128     17.4kB  262kB   245kB                                      bios_grub
 1      262kB   17.0MB  16.8MB  fat16        EFI System Partition  boot, esp
 2      17.3MB  856MB   839MB                                      msftdata

(parted)

#重新調整大小
resizepart 2 100%

最後再匯入至 PVE 虛擬機。


# 100 是你建立的虛擬機 ID。
qm importdisk 100 immortalwrt-21.02.6-x86-64-generic-squashfs-combined-efi.img local-lvm

後來研究了頗久,還是決定直接重裝一版新的,也就是我目前的版本!

現在體驗其實還滿良好的,雖然最終放棄搞那個鬼東西,但我有想到替代方案,頂多就是重新配置一下網路。也許以後有機會再回來研究,暫時先這麼做。

按照慣例,安裝完硬碟,開機,首先原則上,因為網段不一樣,所以沒辦法直接進,除非改網卡,有點麻煩。

所以這邊我都會先用 PVE主控台進去,而且我後來才發現如果在 NoVNC 畫面中按下某些鍵會被擋的話,只要輸入 Ctrl + Q 就可以關閉,接著繼續打指令都不會被干擾到,之前輸入 A或S之類的,都彈出個視窗,害我沒辦法輸入進去,有夠靠杯,我還以為是 bug,看起來是 feature,有夠廢。

root@OpenWrt:~# vim /etc/config/network

進入修改 network 檔案裡面的 interface,把 WAN、LAN 所用的 ETH 接口定義好。

root@OpenWrt:~# vim /etc/config/firewall

默認沒有裝 Nano 有點不爽,只能用 Vim,好險還有 Vim 可以用,不然真的很難改。

config defaults
        option syn_flood '1'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option fullcone '1'
        option flow_offloading '1'
        option flow_offloading_hw '0'

config zone
        option name 'lan'
        list network 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

如果把路由器的 WAN 插到另一台路由器的 LAN 上,就不用改網段,但是預設值都會擋 WAN。所以,只要把 WAN 的 INPUT 改成 ACCEPT 就可以了。

然後別忘記要重啟網路服務,不然配置不會應用,除非重開機。


root@OpenWrt:~# /etc/init.d/network restart
root@OpenWrt:~# /etc/init.d/firewall restart

接著就可以直接訪問 OpenWrt 的管理網頁。

光是看到這介面,就覺得挺不錯的,直接下定決心就用它了。

原本想搞 VLAN 的,後來一直遇到鬼問題,覺得奇怪,有時候啥都沒改重開機就正常了,讓我覺得很訝異,見鬼了,剛好現在農曆七月。

搞到後來,覺得有可能就是硬體和內核方面的問題,乾脆放棄。更改一下網路模式,目前是弄個雙網卡,直接設置兩個網橋不同的 LAN,這樣也算是差不多的概念,而且沒毛病,更好設置,不用管那個 Tag。

設定

第一步就很簡單,直接在設備 (Device) 建立一個網橋,添加 ETH1,非常簡單。

記得關掉 IPv6,很沒意義的功能,通常也不會用到,而且說不定就是因為這東西搞事。

添加完後,再去接口 (Interface) 建立 lan2 接口,設置成靜態 IP。

建立完記得設置 IP 地址,網段,那些東西,然後不要忘記要加入 DHCP,這個沒加的話,LAN 插上去不會配發 IP 自然就沒網路。

數量那些維持預設就好了,基本上沒差,不用動。

然後是坑人的地方,你以為這樣就完了嗎?還有防火牆阿!

要建立一個新規則,比如取名為 lan2,編輯規則,轉發到 WAN,如果是設置 VLAN 其實也是同樣的道理,如果沒有轉發到 WAN,那基本上等於無網際網路的純內網,如果要架設隔離公網的環境是可以考慮這麼做。

總結

基本上你搞完橋接,新增接口,設置 DHCP,防火牆也設定了,你的 WAN 也正常,那理論上就可以 Work。

像我這情況就是 ETH0 (LAN) 和 ETH1 (LAN2),兩邊是互相隔離的。

由於我網孔其實很少,配一配基本上就沒得用了。下面是我的架構圖,只剩下一個孔,QQ。

端口同個顏色代表同個區網,ETH3 是我 PVE 會用到的網路口,暫時不會拔掉,然後交換機也要設定 Port-based 的 VLAN。不然讓我自己建立的虛擬網路和硬路由疊在一起。

同時有兩個 DHCP 伺服器會出錯。

雖然感覺有交換器就夠了。根本不需要軟路由啊!不過軟路由上面的防火牆功能似乎非常強大,我覺得如果會用算是很不錯的工具。

相對於交換器就少得可憐,幾乎沒什麼可以設定的,除了端口隔離之外就沒甚麼有用的東西了。

而且軟路由還有一堆別人做的插件安裝包,可以一鍵下載。用不用得到是一回事,有總比沒有好。(雖然都是大陸貨,要小心後門。)

其他文章:
軟路由初體驗 在 PVE 8.0 上安裝 OpenWrt 22.03
使用 OpenWrt 與 WireGuard 實現 NordVPN、雙層 NAT、特定區域網路 VPN 與 Kill Switch

By Weil Jimmer


This entry was posted in General, Experience, The Internet, OpenWrt, Tools By Weil Jimmer.

軟路由初體驗 在 PVE 8.0 上安裝 OpenWrt 22.03

No Comments
-
更新於 2023-08-27 21:48:25

前言

時隔多年,久違的發了一篇文章,五年來第一篇文章。長久以來一直沒發文的理由很可笑,因為我的圖床死了,然後我懶得修,一直認為寫文章怎麼可以沒有圖片,既然不能上傳圖片那就乾脆不寫。說實話有點後悔,最近肝了好幾天自己網站的code,寫了新的圖床系統,不過這是題外話了。

最近心血來潮,一直想搞個家裡的網路環境,原本想搞 10 Gb/s 的高速網路,但顯然我沒這個摳摳。直接放棄,先弄個 1 Gb/s 出來就很不錯了。

我們的主角登場!

配備

這次我訂購的軟路由,CPU 選用 Intel 的 J4125,看不少人說用 x86 CPU 比較好,我也是看很久才挑這個。記憶體的部分隨便配,RAM 8 GB,SSD 128 GB。有四個 2.5 GbE 的乙太網孔。

插上電和網線後,直連 PVE 的 WebUI,結果令我很意外,一直都進不去阿。心想怪事,為什麼連不上,檢查好幾次,還去看交換器設定頁,應該都沒錯啊。直接插上螢幕和鍵盤,Debug 老半天看不出所以然,直到我又重新檢查網線,看到我接的網路孔上面的小字 ETH3

默默地坐回位子上,修改 /etc/network/interfaces 把網孔換成 enp3s0 。應該插第一個孔,結果插到第四個,我一直以為我是插進 ETH0 阿…

重開機後,在瀏覽器上輸入 PVE 的預先設定好的靜態 IP,果然就成功連上 PVE 管理介面。

https://192.168.0.11:8006/

接著就是開始瞎搞的時刻,網路上很多教學,這裡也不講那麼多了,很簡單。犧牲一點空間安裝 OpenWrt 系統,各種 img 可以使用,我也算是嘗試了滿久。

然後啟動系統!

看到 OpenWrt 字樣就大功告成了!

不過 OpenWrt 預設的靜態 IP 是 192.168.1.1 跟我目前環境的網段不一樣,有點靠北。要先改成同網段才可以連上 SSH 和 WebUI 介面。

改完就可以 ping 通軟路由本身,直接用 putty 連上 SSH,設定防火牆允許 WAN 連上 WebUI 和 SSH。

uci add firewall rule
uci set firewall.@rule[-1].name='Allow-Admin'
uci set firewall.@rule[-1].enabled='true'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='22 80 443'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
service firewall restart

不然原本我這邊的環境很麻煩,我又暫時不想動 LAN 的部分,以後我要拿它當作層三交換機(L3-Switch)阿!

設定完防火牆後,就可以透過我目前的網段連上 WebUI,因為我現在是接 WAN 的環境,以後可能會有兩層 NAT 架構。

想到我現在缺網路線,只能暫時先擱置這個計畫,等我網路線到貨再說。再加上我目前應該是用官方的,想嘗試看看 LEDE 的版本。有空再實驗吧,先告一段落,後續有進展再更新。

最後,使用 iperf3 測試一下內網速度!看到這速度,真棒。

其他文章:
使用 OpenWrt 踩坑經驗與心得 設置虛擬區域網路進行隔離
使用 OpenWrt 與 WireGuard 實現 NordVPN、雙層 NAT、特定區域網路 VPN 與 Kill Switch

By Weil Jimmer


This entry was posted in General, The Internet, OpenWrt, Tools By Weil Jimmer.

白樺閱讀器 Android App 下載

No Comments
-
更新於 2020-02-07 15:50:52

白樺閱讀器,安卓TXT文字閱讀器,免費,無廣告,目前支援文字檔(例如:TXT)與EPUB格式的電子書。主要為TXT文件做分頁閱讀並記憶閱讀進度。可自訂翻頁模式為滑動或點擊或音量鍵翻頁,可設定文字、陰影、背景顏色、行距、文字字型…,可以為TXT文件建立/搜尋目錄、書籤,簡繁轉換,跳轉至特定頁面,可設定文字樣式、封面,直行閱讀…等功能。

※本程式為 Android 手機程式。

最低系統需求:Android 5.0

Google商店:https://play.google.com/store/apps/details?id=org.wbftw.weil.txtreader

下載地址【一】:https://url.weils.net/B

下載地址【二】:https://url.weils.net/C

官網:http://web.wbftw.org/product/baihuayueduqi

By Weil Jimmer


This entry was posted in Android, General, Software, Free, Java, Product, Tools By Weil Jimmer.

白樺查碼程式

No Comments
-
更新於 2018-01-26 19:19:41

本程式主要功能支援 倉頡五代 字碼、倉頡三代 字碼、注音、嘸蝦米、大易 四碼、行列 30鍵 字碼、拼音 查詢,包括這些輸入法的字碼反查,輸入英文字碼反查其他輸入法之字根。其次,還可設定文字顏色、背景顏色、搜尋欄位顏色…等,可調整欄位排序、設定搜尋模式(文字改變時搜尋或Enter鍵搜尋),可設定哪些輸入法可以反查字根,本程式可以調整搜尋之文字數量、調整字碼顯示英文碼還是字根,調整英文大小寫顯示。多字同時查碼。

本程式最新版本:1.0.0.3

本程式需要安裝 .Net Framework 4.6.1 以上 版本。

本程式安全無毒無廣告:檢查報告

下載地址【一】:https://url.weils.net/x

下載地址【二】:https://url.weils.net/y

產品頁面:http://web.wbftw.org/product/baihuachamachengshi

2018.01.26 - 1.0.0.3 - 修復細微Bug - 在查詢字串中,若包含中括號 [ ] 時,將導致程式崩潰。


This entry was posted in C#, Software, Free, Product, Tools By Weil Jimmer.

 1 2 3 4 /4 頁)下一頁 最終頁

Visitor Count

pop
nonenonenone

Note

不要和愚蠢的人發生爭執。

支持網路中立性.
Support Net Neutrality.

支持臺灣實施
無條件基本收入

祝賀今日是中華民國國慶日。

Quotes

我一定會老。

我一定會病。

我一定會死。

人生終須一別。

我們是業的主人。

Search

Music

Life Counter

22969days



Breaths between now and when I die.

Blogging Journey

4788days

since our first blog post.

Words Quiz


Quotes

The strong do what they can and the weak suffer what they must.

Privacy is your right and ability to be yourself and express yourself without the fear that someone is looking over your shoulder and that you might be punished for being yourself, whatever that may be.

It is quality rather than quantity that matters.

I WANT Internet Freedom.

Reality made most of people lost their childishness.

Justice,Freedom,Knowledge.

Without music life would be a mistake.

Support/Donate

This site also need a little money to maintain operations, not entirely without any cost in the Internet. Your donations will be the best support and power of the site.
MethodBitcoin Address
bitcoin1gtuwCjjVVrNUHPGvW6nsuWGxSwygUv4x
buymeacoffee
Register in linode via invitation link and stay active for three months.Linode

Support The Zeitgeist Movement

The Zeitgeist Movement

The Lie We Live

The Lie We Live

The Questions We Never Ask

The Questions We Never Ask

Man

Man

THE EMPLOYMENT

Man

In The Fall

In The Fall

Categories

Android (8)

Announcement (4)

Arduino (2)

Bash (2)

C (3)

C# (5)

C++ (1)

Experience (55)

Flash (2)

Free (13)

Functions (36)

Games (13)

General (65)

Git (3)

HTML (7)

Java (13)

JS (7)

Mood (24)

NAS (2)

Note (35)

Office (1)

OpenWrt (7)

PHP (9)

Privacy (5)

Product (12)

Python (4)

Software (11)

The Internet (27)

Tools (17)

VB.NET (8)

VR (1)

WebHosting (7)

Wi-Fi (5)

XML (4)