Memo
http://www.canadoh.jp/docs/memo/index.html
2024-03-07T13:28+09:00
-
[情報技術] DKIMメール認証
http://www.canadoh.jp/docs/memo/index.html#d20240307121512
2024-03-07T12:15:12+09:00
受信したメールのヘッダーに含まれている次のものを確認します。
- a:使用されたハッシュ関数。
- bh:正規化済みのメール本文をハッシュ化し、base64エンコードしたもの。
- h :署名に使用しているヘッダー情報のリスト。
- b:署名。hの指示通りのヘッダーをハッシュ化し、秘密鍵で暗号化およびbase64エンコードしたもの。
DKIM認証では2つの照合を行います。
+ 本文をハッシュ化およびbase64エンコードしたものとbhとが一致するか。
+ hの通りのヘッダー情報をハッシュ化したものと、bをbase64デコードして公開鍵で復号化したものとが一致するか。
bhの値は途中で改竄されやすい項目ですが、bの値は秘密鍵を持っている者だけが生成できます。仮に異なる秘密鍵で暗号化した場合は、公開鍵で復号化することができません。つまり、その時点で改竄が判明します。(実際には、メールフォームからの正しい送信であっても、公開鍵と対にならない秘密鍵が使用されたためにDKIM認証に失敗する場合もあります)
1と2の認証に使用するコマンドは次の通りです。
```
$ openssl dgst -sha256 -binary "正規化済みメール本文ファイル.txt" | base64
ZxgjUdBxt3GlOrQfX1etpRNDSDgeWhTylQ5LMmaO14o=
```
コマンドの下に出てきたものが、正規化済みのメール本文をハッシュ化し、且つbase64エンコードしたものの例です。これがbhの値と一致していればPassです。
あとは、署名の照合をします。あらかじめ、h通りのヘッダー情報と、DNSから取得した公開鍵をテキストファイル(ここでは "header.txt" と "key.pub")にしておきます。
```
$ echo "bの値" | base64 -d | openssl pkeyutl -verifyrecover -pkeyopt digest:sha256 -pubin -inkey key.pub | xxd -p
35429f9f619723fe0d3a9a47fb7bc30981ea7b6cb557a667f25de4203522
7bbc
```
コマンドの下に表示されたものがハッシュです。公開鍵で復号化できたので恐らく大丈夫ですが、h通りのヘッダー生情報(最後の終端文字を必ず取り除いてください。改行はCRLF)をハッシュにしてみます。
```
$ openssl dgst -sha256 -binary header.txt | xxd -p
35429f9f619723fe0d3a9a47fb7bc30981ea7b6cb557a667f25de4203522
7bbc
```
復号化したハッシュと同じものが出ました。これで非改竄が証明されました。
ちなみに、コマンドの最後にある `xxd -p` はバイナリを16進数のテキストデータに変えるコマンドです。`xxd -b` にすると2進数のテキストで表示されます。 ]]>
-
[情報技術] MySQl Error Code: Unknown collation: 'utf8mb4_0900_ai_ci'
http://www.canadoh.jp/docs/memo/index.html#d20240131121231
2024-01-31T12:12:31+09:00
このエラーが起きる理由は、Import先のRDMSでUnicode collationsに「utf8mb4_0900_ai_ci」が無いからです。次のコマンドで、RDMSで使用可能なUnicode collationsを確認できます。
```
SHOW COLLATION WHERE Charset = 'utf8mb4';
``` ]]>
-
[情報技術] Linuxコマンドでファイル名を一括置換
http://www.canadoh.jp/docs/memo/index.html#d20240121155908
2024-01-21T15:59:08+09:00
- Test 2.txt
- Test 3.txt
というファイル名から空白文字を取り除くときは、次のようなコマンドで一括変更ができます。
```
$ find . -name "Test*.txt" -exec bash -c 'mv "$0" ${0//" "/""}' {} \;
```
-name:ファイル名指定
-exec:実行オプション
bash:bashスクリプトの起動
-c:この後コマンドが来るよ!のお知らせ
mv:ファイル移動コマンド
$0:割り当てられた文字列
${0//" "/""}:$0の半角空白を無に置換
{}:$0に割り当てる文字列(入力前にfindコマンドによって現在のファイル名に置き換えられる)
\;:-execはここまでですよ、のお知らせ ]]>
-
[ハードウェア] 原動機付自転車のウインカースイッチにKURE5-56
http://www.canadoh.jp/docs/memo/index.html#d20240112180221
2024-01-12T18:02:21+09:00
屋根があるとはいえホコリに塗れる場所に置いておりますし、あまり乗れずにいたらそのような事態に。それでも力ずくでスイッチを切り替えていたのですが、この度、KURE5-56を吹き付けてみました。数度ON/OFFを繰り返し、そのまま放置すること1週間。スイッチの動きが購入当時のように滑らかになりました。
一応、Yahoo知恵袋で「5-56でもいいですよ」と書かれていたのを見ての実施でしたが、お試しになる際は自己責任ですのでご注意ください。 ]]>
-
[情報技術] LibreOffice Calcで行の移動(ドラッグ&ドロップ)
http://www.canadoh.jp/docs/memo/index.html#d20231008140234
2023-10-08T14:02:34+09:00
+ 行全体を選択する。
+ Shift+Altを押しながら、行を目的の場所にドラッグする。
ちなみに、Shift+AltではなくCtrl+Altを押しながらドラッグした場合、行の複製になります。 ]]>
-
[情報技術] Terminalの中で文字コードを変える
http://www.canadoh.jp/docs/memo/index.html#d20230905142234
2023-09-05T14:22:34+09:00
そんなときは、TELNETで使用するエンコードを変えて文字化けを解消できます。
```
$ luit -encoding SJIS telnet
``` ]]>
-
[情報技術] GJS (GNOME JavaScript)
http://www.canadoh.jp/docs/memo/index.html#d20230830102107
2023-08-30T10:21:07+09:00
GJS」です。
Terminalで次のように入力すると、標準出力に出力できます。
```
$ gjs -c "print('test');"
test
```
ログとして出力することもできます。
```
$gjs -c "log('this is a message');"
Gjs-Message: 10:29:09.603: JS LOG: a message with gjs
```
インタプリタモードにすることもできます。
```
$gjs
gjs>
```
詳しくは公式サイトを見てください、 ]]>
-
[情報技術] SVGZ(圧縮SVG)ファイルを作る
http://www.canadoh.jp/docs/memo/index.html#d20230819180224
2023-08-19T18:02:24+09:00
そこで、SVGの欠点である大きなファイルサイズを小さくする方法があります。SVGを圧縮します。圧縮したSVGは「svgz」などの拡張子にされることが多いです。
圧縮SVGをCUIで生成する方法は複数ありますが、最も簡単なのは、ベクター画像ソフト「inkscape」を利用する形です。たとえば「sample.png」という画像を圧縮SVGに変換するならば、
```
$ inkscape --export-type="svgz" sample.png
```
を実行することで、「sample.svgz」という圧縮SVGファイルが生成されます。
他方、ImageMagickとpotraceを利用する形だと、
```
$ convert sample.png ppm:- | potrace -s - -o sample.svg
$ gzip -c sample.svg > sample.svgz
```
のようになります。また、この方法では、SVG変換時に色情報が失われます。 ]]>