分類
软件

使用GnuPG加密文件

GnuPG加密情景

42想發送一條消息給55,並且這條消息只有55能看到。首先42和55都用GnuPG生成自己的公鑰和私鑰。然後55把公鑰交給42,公鑰怎麼傳遞都行,不需要保密。42使用自己的私鑰和55的公鑰來把消息加密,生成加密的消息發給55。55拿到加密的消息後用自己的私鑰解密即可看到原始消息。

安卓使用OpenKeychain

F-Droid或Google Play下載OpenKeychain,導入已有證書(公鑰私鑰均可導入)或生成新的證書。然後通過二維碼或你喜歡的其他方式分享公鑰。發送者使用接收者的公鑰和自己的私鑰加密文件,然後發送加密文件給接收者,接收者用自己的私鑰解開文件。使用OpenKeychain,不僅可以方便的加密與解密文件和文本,更可與K-9 Mail搭配實現加密的郵件。

命令行使用GnuPG

Fedora似乎時預裝了GnuPG和GnuPG2,我們可以用gpg和gpg2來使用它。Termux可以使用pkg install gunpg,用法是一樣的,而且版本是最新版。Fedora26比最新版還差一個小版本。我樂於追新,所以這裡都用gpg2。順便提一下,GnuPG念做“格努皮即”。關於GNU有興趣的朋友可以到GNU作業系統與自由軟體運動了解下。

把證書從OpenKeychain導出並導入Fedora的GnuPG2

#手機上選擇要備份的證書,右上角菜單,備份證書
#抄下來44位密碼,勾選已抄下,按一下保存備份
#然後把生成的文件backup_YYYY-MM-DD.pgp傳送的Fedora
#在Fedora上備份文件的所在目錄執行
gpg2 --decrypt backup_YYYY-MM-DD.pgp | gpg2 --import
#按照提示輸入剛剛抄下來44位密碼
#列出已有的密鑰,最長那串就是ID
gpg2 --list-keys
#編輯密鑰
gpg2 --edit-key [ID]
#由於我們是物理傳輸過來的,所以不用對比指紋了,直接trust
trust
5
y
save
#這樣就可以了

使用 GnuPG2 加密和解密文件

#將 A.txt 加密
gpg2 --encrypt -r [email protected] A.txt
#可選參數還有
# --sign 加密者信息
# --armor 把文件加密成 ASCII 文件

#解密 A.txt.gpg
gpg --decrypt A.txt.gpg > A.txt

其他GnuPG2常用命令

##生成一對密鑰
gpg2 --full-generate-key
#密鑰種類默認RSA和RSA即可
#RSA密鑰長度默認2048即可
#過期日期默認0即永久,後面會講撤銷方法
#繼續輸入名字、郵箱和注釋
#然後就開始生成密鑰了,這時可以做些移動鼠標敲擊鍵盤的動作幫助程序獲取隨機數
#Termux可能要一兩分鐘,Fedora貌似20秒就搞定了
##導入導出刪除撤銷密鑰
#列出已有的密鑰
gpg2 --list-keys
#列出密鑰的指紋
gpg2 --fingerprint
#為密鑰生成撤銷證書
gpg2 --gen-revoke fred42 > revoke_fred42.txt
#導出一把公鑰,-a表示轉換為可打印字符
gpg2 --export -a fred42 > public.key
#導出一把私鑰,-a表示轉換為可打印字符
gpg2 --export-secret-key fred42 > private.key
#導入一把密鑰
gpg2 --import public.key
#刪除一把公鑰
gpg2 --delete-key fred42
#刪除一把私鑰
gpg2 --delete-secret-key fred42
##使用密鑰服務器上傳搜索與下載公鑰
#Please blame the wall

我的公鑰指紋:F296 FC4F B714 BA14 6366 FEDF 15F7 F20A 33D8 3525和公鑰:

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

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
Gck=
=CXuU
-----END PGP PUBLIC KEY BLOCK-----

使用GnuPG生成隨機密碼

生成一個16位的隨機密碼

gpg2 --gen-random -a 0 16 | head -c 16

也可將下面代碼存為password.sh,運行./password.sh 16來獲得。

#!/bin/bash
if [ $# -eq 0 ]
then echo "請指定待生成密碼的長度"
else gpg2 --gen-random -a 0 $1 | head -c $1
echo ""
fi

本文更新於 2020/10/30。

分類
软件

使用ExifTool處理文件元數據

ExifTool是一款由Phil Harvey開發的獨立於平台的命令行工具,用於處理文件的元數據,例如照片的拍攝日期等。Fedora可以通過下面命令安裝使用。

#安裝ExifTool
sudo dnf install perl-Image-ExifTool
#把DIR文件夾中的文件的拍攝日期增加4小時
exiftool "-DateTimeOriginal+=4" DIR
# -overwrite_original 可不產生.JPG_original原始文件
#修改後會產生.JPG_original原始文件,新文件較原始文件小是因為ExifTool壓縮了Exif信息
#如果修改日期有誤,可以通過這個命令恢復圖片原始文件
for file in *.JPG_original;do mv "$file" "$(basename "$file" .JPG_original).JPG"; done
#Linux重命名DIR文件夾中的名字為拍攝日期
exiftool -overwrite_original -d %y%m%d_%H%M%S%%-c.%%e "-filename<DateTimeOriginal" DIR
#Windows重命名DIR文件夾中的名字為拍攝日期
"D:\Program Files\portable\exiftool.exe" -d %y%m%d_%H%M%S%%-c.%%e "-filename<DateTimeOriginal" E:\Image\DIR
#Windows中重命名DIR文件夾中的mov視頻名字為拍攝日期
"D:\Program Files\portable\exiftool.exe" -ext mov -d %y%m%d_%H%M%S%%-c.%%e "-filename<DateTimeOriginal" E:\Image\DIR
#Windows中重命名DIR文件夾中的gopro拍攝的mp4視頻名字為拍攝日期
"D:\Program Files\portable\exiftool.exe" -ext mp4 -d %y%m%d_%H%M%S%%-c.%%e "-filename<MediaCreateDate" E:\Image\DIR

#查看MOV文件中的可用時間標籤
"D:\Program Files\portable\exiftool.exe"  -time:all -a -G0:1 -s  E:\Image_55\DIR\LA090570.MOV
#清除當前文件夾中所有exif數據
exiftool -all= *

##GPS 相關
#以 json 方式輸出所有 gps 相關標籤
exiftool -struct -j -a -n "-gps*" E:\Image\a.JPG
#把照片的位置設置爲 GCJ-02 座標系統,並指定經緯度
exiftool -exif:gpsmapdatum=GCJ-02 -exif:gpslatitude=22.12345 -exif:gpslongitude=114.12345 E:\Image\a.JPG

本文更新於 2021/05/10。

分類
软件

開放街圖與MAPS.ME

OpenStreetMap 是由製圖者社群所建立,他們提供及不斷更新包括有關世界各地的道路、路徑、咖啡館、火車站等等的資料。地方知識、社群推動、開放資料是它的特點。得益於社群推動,OpenStreetMap 很可能擁有更新更準確的資訊,這點我在深圳、香港、日本、意大利旅行時有深切的感受。如果沒有 OpenStreetMap 我的多數旅行都不可能那麼順利而有趣!有興趣參與的朋友可以參考 learnOSM 的教程。

MAPS.ME 是一款開源的離線地圖應用,地圖數據來自 OpenStreetMap 。有蘋果版和安卓版供下載。由於 OpenStreetMap 並不提供移動客戶端,所以我之前都是使用 MAPS.ME,預先將目的地的地圖下載好就可以使用了。它提供的路徑規劃功能雖不能說完美,但是已經很不錯了,步行和騎行路徑還有海拔變化,對於行山真的很有用。MAPS.ME 提供了簡單的添加地點的功能,登入 OpenStreetMap 賬號即可為 OpenStreetMap 作貢獻,不過如果想專業地添加地理資訊,還是通過網頁版 OpenStreetMap 來操作比較好。

Maps 是 MAPS.ME 的一個複製,在原版的基礎上添加了路徑追蹤和自定義書籤功能。之前由於 MAPS.ME 拒絕在主要位置添加數據來源爲 OpenStreetMap 而被很多用戶投訴,這也是我使用 Maps 的一個原因,然而還是由於 MAPS.ME 的問題,Maps 現在的版本 10.2.0 有兩個很麻煩的問題。這兩個問題可以根據 App stuck in download at startup 的方法來解決,我簡單記錄下。

  1. 備份下儲存卡中的 /MapsWhithMe 文件夾,書籤與記錄都在這裡。
  2. 在手機的 設置->應用-> Maps 中,強制停止應用,然後清理數據和緩存。
  3. 前往 http://opensource-data.mapswithme.com/regular/weekly/ 下載所有的 .ttf 文件以及 World.mwm 和 WorldCoasts.mwm。我還需要廣東省地圖,所以還要下載 China_Guangdong.mwm 。
  4. 清空手機上的 /MapsWhithMe 文件夾,然後把剛剛下載的除了 China_Guangdong.mwm 之外的文件複製進去。
  5. 把 WorldCoasts.mwm 複製一份,並改名為 WorldCoasts_obsolete.mwm (同樣是放在 /MapsWhithMe 文件夾)。
  6. 啟動 Maps,給予權限後稍等片刻即可看到世界地圖已正確加載。
  7. 關閉 Maps,把需要的之前備份的 .kml 文件複製回 /MapsWhithMe 文件夾,書籤就回復了。另外可以看到 MapsWhithMe 文件夾中有了一以日期為名字的文件夾,把 China_Guangdong.mwm 放進去,就可以正常使用了。

另一問題是每次打開 Maps,都會有一個煩人的引導需要點擊一次。目前已知的一種辦法是安裝一下 MAPS.ME,點掉引導,卸載 MAPS.ME。之後 Maps 就也不會出現了。但是這個做法不是很理想,我沒有試,希望下個版本可以解決這個問題吧。

除了 Maps,其實還有一款離線地圖 OsmAnd~,但是 OsmAnd 的圖層顯示不如 MAPS.ME 的直觀,不知道是不是先入為主看習慣的原因。對於步行路線的規劃,無論是操作複雜程度以及規劃結果,感覺上也都不如 MAPS.ME。不過還是可以推薦大家試試,畢竟沒有 Maps 那樣需要複製來複製去的操作。

20210923 更新:MAPS.ME 後來被出售給了一家商業公司,新公司糟糕的運營導致 MAPS.ME 在谷歌市場惡評如潮。就我個人使用而言,幾乎已經無法繼續使用。在此期間,由於上游的變動 Maps 最終也停止更新了。OsmAnd 用了一段時間,但是還是覺得很多方面有待提高,尤其是徒步的導航。終於我發現 MAPS.ME 的開發者們開發了另一款離線地圖應用 Organic Maps,沒有任何廣告,尊重隱私,開源而好用的離線地圖又回來了!

本文更新於 2021/09/23。

分類
软件

ShareX

今天SpaceX成功發射了一架運載力達到63噸(63噸是近地軌道LEO,如果是地球同步轉移軌道GTO則為27噸,而發往火星的話是16噸)的火箭Falcon Heavy。但我今天介紹的卻是Windows下一款很好用的截屏軟件ShareX。ShareX好處有很多,我看中的有開源、免費、無廣告、輕量。雖然它還有強大的截屏分享、錄製gif等功能,但我並未用到。

安裝後在「快捷動作」中可以設置自己喜歡的快捷按鍵來觸發截屏。在「截圖後動作」中我選擇了打開圖像編輯器和圖像複製到剪切版。「任務設置」中取消了截圖後聲音提示。這樣就能愉快的使用了!

分類
软件

Termux是個好軟件

Termux是一個無需 root 權限和複雜安裝步驟的安卓終端模擬器和 Linux 環境軟件。推薦使用 F-Droid 安裝 Termux,如果用谷歌市場(谷歌市場版本已廢棄),有些插件要付費,而開源平台 F-Droid 則不必。如果你要用 GUI 插件,那麼你需要從 Github 下載安裝 Termux,F-Droid當前的包有點問題。另一個很厲害的東西就是,它可以玩Python(嘗試自己編譯失敗,源里編譯好的可用)。

使用內部儲存空間

在手機的設定>應用程式>Termux>權限中打開「儲存空間」的開關。然後在Termux中運行termux-setup-storage。

常用軟件

nano python openssh wget

別名文件位於 ~/.bash_profile ,新建別名後可以方便的執行複雜的命令。

alias d1='/data/data/com.termux/files/home/scripts/dns.sh 1'

配置ssh

由於安全原因,Termux禁止使用賬號密碼連接到手機,只能用key。同時為了照顧未root的手機,所以ssh端口監聽在8022端口。

通過密碼方式訪問本機ssh可以參考官方文檔Setting up password authentication。之前是只能通過密鑰對訪問的,雖然更安全,但是卻是不便利。

如果你客戶端(你的電腦)已經有密鑰對,那麼把公鑰傳到手機上,然後追加到手機~/.ssh/authorized_keys里就可以了。如果沒有,就在客戶端生成一個密鑰對,建議提示輸入密碼的時候設置一個密碼。

然後在手機上運行sshd開啟ssh服務,客戶端用ssh -p 8022 172.16.5.223來鏈接到手機。停止手機上的ssh服務可以執行pkill sshd。

配置額外按鍵

命令行經常用的Ctrl、Alt、上下左右方向鍵,都可以通過編輯~/.termux/termux.properties來自定義,比如我的就是

extra-keys = [ \
 ['ESC','/','_','HOME','UP','END','PGUP'], \
 ['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN'] \
]

使用 Termux API

首先手機安裝 Termux:API ,然後在 Termux 中安裝 termux-api ,執行 apt install termux-api 即可。最後就可以參考 Termux API 文檔來玩耍了。

#查看當前位置
#termux-location [-p gps/network/passive] [-r once/last/updates]
termux-location -p gps -r once
#設置剪切版內容
termux-clipboard-set [text]
#獲取剪切版內容
termux-clipboard-get
#拍攝一張照片
#默認0是主攝像頭
termux-camera-photo [-c camera-id] output-file 

#錄音15秒
termux-microphone-record -d -l 15 -f audio.aac
#結束錄音
termux-microphone-record -q

使用 Termux Widget

Widget 可以方便的從桌面執行腳本,只需要手指一點,輕鬆方便。

從F-Droid安裝插件,然後在把要執行的腳本放在 ~/.shortcuts/~/.shortcuts/tasks ,前者會打開新窗口運行,後者在後臺運行。如果失敗的話,看看文件夾是不是 700 的權限。

安裝 exiftool

exiftool處理多媒體視頻Exif信息的得力工具。

#從ExifTool主頁下載安裝包,假設下載的文件是Image-ExifTool-11.37.tar.gz,下載到了Downloads文件夾。
cd Downloads
gzip -dc Image-ExifTool-11.37.tar.gz | tar -xf -
cd Image-ExifTool-11.37
perl Makefile.PL
make install
chmod +x /data/data/com/com.termux/files/usr/bin/exiftool
#然後就可以使用exiftool來處理媒體文件了
#刪除temp文件夾中所有文件的exif信息
exiftool -all= temp
#卸載exiftool
cd Downloads
make uninstall

使用 crontab 定時執行

pkg install cronie termux-services
# restart termux session
sv-enable crond 
crontab -e 

本文更新於 2022/08/09。

分類
Linux 软件

在centos6上裝Synapse

裝了Matrix家的Synapse就可以使用Riot.im聊天了,好處是服務器是自己的,客戶端是開源的。

首先跟着官方文檔,安裝依賴。此時需要注意centos6自帶的sqlite版本太低,而且插件FTS4也未啟用。參考Install Python and Sqlite from Source安裝sqlite和python2.7即可。

#安裝sqlite3.12並開啟FTS4
mkdir -p ~/tmp/compile&&mkdir ~/tmp/opt&&cd ~/tmp/compile
wget https://www.sqlite.org/2016/sqlite-autoconf-3120200.tar.gz
tar xf ./sqlite-autoconf-3120200.tar.gz
cd sqlite-autoconf-3120200
./configure --prefix=~/opt/sqlite/sqlite3 --disable-static --enable-fts5 --enable-json1 CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_RTREE=1"
make
make install
mkdir ~/bin
ln -s ~/opt/sqlite/sqlite3/bin/sqlite3 ~/bin/sqlite
#到這裡就安裝好了,執行sqlite即可看到版本為3.12
#執行pragma compile_options;可見FTS4已開啟
#.quit退出sqlite
#安裝使用sqlite3.12的python2.7
wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
xz -d Python-2.7.14.tar.xz&&tar -xvf Python-2.7.14.tar
cd Python-2.7.14
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib ./configure LDFLAGS="-L$HOME/opt/sqlite/sqlite3/lib" CPPFLAGS="-I $HOME/opt/sqlite/sqlite3/include"
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make install

使用virtualenv生成一個Synapse專用的虛擬環境。安裝Synapse時還會遇到Twisted版本過低,在虛擬環境下這樣操作一下:

wget https://twistedmatrix.com/Releases/Twisted/17.1/Twisted-17.1.0.tar.bz2
tar -jxvf Twisted-17.1.0.tar.bz2
cd Twisted-17.1.0
python setup.py install 
cd ..

配置nginx前置代理的時候,用letsencrypt的centbot各種失敗,最後還是用回ssl for free的笨方法。推薦使用letsencrypt的centbot,配好後非常省時省力。順便貼一下nginx配置:

server {
    listen 443 ssl;
    server_name YOURDOMIN;

    ssl_certificate     /etc/letsencrypt/live/YOURDOMIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/YOURDOMIN/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location /_matrix {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

由於使用了nginx做代理,所以8008端口的監聽範圍可以在homeserver.yaml中改成127.0.0.1。

最後跟着官方教程增加用戶,然後在Riot.im里勾上自定義服務器就可以聊天了。也可以參考下Run your end-to-end encrypted chat server using Matrix and Riot

如果傳送文件時提示文件大小超過限制,多半是nginx給擋下了,可以在nginx配置文件的http段里添加下面兩行來解決:

    sendfile        on;
    client_max_body_size 40M;

Android我從F-droid下載的客戶端,沒有gcm,所以在後台時檢查消息的頻率可以自行設置,我設置的5分鐘,默認10分鐘。網頁端打開的時候有一點點慢,打開後就沒問題了。Fedora可以安裝taw/Riot的源,即

sudo dnf copr enable taw/Riot 
sudo dnf install -y riot --refresh

Fedora29的包taw還沒打,我們可以自己打:

sudo dnf install npm
git clone https://github.com/vector-im/riot-web.git
cd riot-web
npm install
cp config.sample.json config.json
#修改下面4處
    "default_hs_url": "https://YOURDOMIN",
    "default_is_url": "https://YOURDOMIN",
    "disable_guests": true,
    "features": {
        "feature_groups": "labs",
        "feature_pinning": "labs",
        "feature_rich_quoting": "labs",
        "feature_presence_management": "labs",
        "feature_sticker_messages": "labs",
        "feature_jitsi": "labs",
        "feature_tag_panel": "enable",
        "feature_lazyloading": "enable"
    }
#編譯
npm run build
#編譯獨立APP
npm install electron
#運行APP
npm run electron
#生成可執行文件
node_modules/.bin/build -l --x64
#可執行文件在electron_app/dist/linux-unpacked/

##升級##
cd riot-web
git fetch origin
git reset --hard origin/master
npm install
npm run build
npm install electron
node_modules/.bin/build -l --x64

Synapse搬家

官方文檔並未給出具體備份與還原方法,經過摸索發現非常簡單。如果是按照我上面步驟安裝的,只需再新服務器上搭建好環境,然後複製如下文件到虛擬環境中就可以啟動了。如果文件路徑有變化,則需要修改homeserver.yaml和YOURDOMIN.log.config這兩個配置文件。

homeserver.yaml
YOURDOMIN.log.config   
YOURDOMIN.signing.key  
YOURDOMIN.tls.crt
YOURDOMIN.tls.dh
YOURDOMIN.tls.key
media_store
homeserver.db

Synapse重置用戶密碼

參考:reset password for matrix/synapse accounts

Centos7上裝Synapse

大致一樣啦。sqlite3還是要自己安裝,系統帶的不行。python可以用3了。Twisted要裝17.9.0。

本文更新於 2018/12/26。

分類
方法 软件

在安卓手機上使用xprivacy保護隱私

使用xprivacy需要root權限和xposed框架。獲取root權限和安裝xposed框架請參考https://forum.xda-developers.com/

以下內容機翻自yannick.12的貼子,原文地址https://forum.xda-developers.com/showpost.php?p=68744809&postcount=7

讓我們舉一個簡單的例子, 比如位置。

首先, 讓我們假設第二列是未選中的。這是最容易理解的情況。然後會發生什麼取決於第一列。

第一列-如果它選中, 那麼xprivacy將始終拒絕訪問的位置, 並把xprivacy里設置的假冒資訊給應用程式。

然而, 如果第一列沒有被選中, 那麼應用程式將能夠獲取您的實際位置。

這就是你對一個應用程式權限做出的回答, 它的答案是 "可以使用這個許可權嗎?" 總是相同的 (無論是 "總是" 還是 "從不")。第二列未選中, 第一列選項告訴應用程式是或否。

第二列控制您在xprivacy中看到的彈窗。如果選中第二列, 您將得到一個彈窗, 詢問是否允許該應用程式獲得許可權 (是否選中了第一列)。

彈窗有四種情況-"允許", "拒絕", "不知道", "哎呀我超時"。

"哎呀, 我超時了" 將給app第一列的答案。

如果您在彈窗中按一下 "允許", 然後 xprivacy 取消勾選設置中的第二列, 再取消勾選第一列, 並讓應用程式訪問您的真實位置。除非重新勾選 xprivacy 設置中的第二列, 否則彈窗不會再次出現。

如果你點擊 "拒絕" 然後 xprivacy 取消勾選第二列, 勾選第一列並給應用程式假位置。然後, 你將不會看到彈出。

如果您按一下 "不知道", 那麼我認為 * xprivacy 拒絕訪問 (無論第一列是否未選中), 並將第二列保留為選中狀態, 因此下次將再次詢問。

我怎麼發現的?嗯, 我不是從常見問題解答中讀到的!我昨天剛剛下載 xprivacy , 我發現它令人難以置信的困難。最後, 我下載了一個應用程式, 它顯示出你的 gps 位置, 沒有別的, 我只是測試。以上是我的總結。我希望它能幫助別人, 因為我希望我昨天讀過這個帖子。

請注意, 其他許可權的工作方式可能稍有不同。例如, 它不可能完全虛擬一整套互聯網資訊。您可以通過查看 xprivacy 設置來快速瞭解哪些資料可以偽造。例如, 你可以偽造你的電話號碼和你的 MAC 位址。但正如我已經說過, 你不能假冒你的互聯網, 你也不能偽造你的存儲-這是一個很好的主意, 因為如果你假裝讓一個應用程式寫到您的 SD 卡, 然後假裝讓它讀它, 它不能找到它剛剛寫過的東西, 這勢必會導致麻煩, 可能會比你剛拒絕它的時候更麻煩。


2021年更新:由於維護一個安全的 root 過的安卓系統越來越困難,而我也隨著年齡的增加而喪失了一部分好奇心,所以我現在使用開源應用 Shelter 來將自己不信任的應用隔離到獨立的區域。Shelter 雖不如 xprivacy 功能強大,但對於基本的隱私防護(通訊錄、地理位置、手機內的文件資料、避免應用後台運行)是沒有問題的。安裝使用也非常簡單方便,推薦大家試用。

本文更新於 2021/02/05。