新しいキーボードが欲しい

新しいキーボードが欲しい まえがき 現在、自宅のPCで使っているAnne Pro 2に割と飽きてきて1、新しいキーボードを探している。 ただ、何かとこだわりが強いのでドンピシャなキーボードがなかなか見つからない。 一度要件を整理してみる。 キーボードに求める要件 気にしない(★☆☆☆☆) – 譲れない(★★★★★) の5段階評価でキーボードに求める要件を書き出してみる。 [★★★★★] US配列 記号が打ちやすい。比較的キーの数が少なくてすっきりしている。 [★★★★★] 独特なキー配置でない 独特なキー配置の自作キーボードになかなか手が出せない理由の一つ。 自分に最適化したタイピング体験ができるはずだが、研究するときにあらゆるマシンを触るので高度にカスタマイズされたキー配置に慣れてしまうと、一般的なキーボード配置が打ちづらくなる。 自作キーボードに限らずとも、例えばCapsLockの位置にCtrlを割り当てる配置とかも個人的には合わない。実体験として、他人のHHKB借りたときに虚無のCtrlを何回もスカした。 [★★★★★] テンキーなし 不便にならないレベルで不要なキーは削りたいので、必要なら外付けします2。実はAnne Pro 2が60%キーボードではじめはキー足りないと思っていたが、慣れれば全く気にならない。F1–F12も無くてもいい。 [★★★★☆] 黒軸 過去に青軸・茶軸・赤軸・静電容量のキーボードは一通り試した。 学部生の時に演習室で触った黒軸がかなり打ち心地がよかったので [★★★★☆] ポインティングスティック(トラックポイント) ゲーム以外の用途に関しては、ポインティングスティックで操作したい。マウスに持ち帰るのが面倒になってきた。 ただこれを最優先にすると一気に候補が限られてくる。 そもそも2017年にIBMの特許3 が切れたばかりらしく、新しい製品がそんなに出ていない? [★★☆☆☆] 無線・有線両対応 これは割とどっちでもいい。両対応していたらうれしいな、という感じ。 候補 上記の要件をもとに、インターネットを彷徨って出会ったキーボードたちがこちら。 TEX Yoda II TEX Yoda IIは上記の要件をほとんど満たしており、即買いレベルだが、なんと在庫がない… 入荷予定も特に書いておらず入手は難しそう、残念。 TEX Shura TEX Shuraも要件をほとんど満たしている。 Yoda IIを知らなかったら即買いしていたが、知っているがゆえに矢印キーの存在と外枠の太さが目立ってしまう。 Majestouch MINILA-R Convertible Majestouch MINILA-R Convertibleと上記2つの大きな違いはポインティングスティックの有無であり、これさえあれば完璧だった。 実は初めて買ったメカニカルキーボードがMajestouchで、かなり質が良く打ちやすい印象があるのでポインティングスティックなしでも購入検討したいレベル。 あとがき 現状一番欲しいのはYoda IIだが、在庫なしとのことで残りの2つのどちらかになりそう。 お願いだから買った直後に在庫復活とかしないでね。 ...

2024-10-03 · 1 min · 67 words · Laika

WaniCTF 2024 Writeup

WaniCTF 2024 Writeup Easy calc 1import os 2import random 3from hashlib import md5 4 5from Crypto.Cipher import AES 6from Crypto.Util.number import long_to_bytes, getPrime 7 8FLAG = os.getenvb(b"FLAG", b"FAKE{THIS_IS_NOT_THE_FLAG!!!!!!}") 9 10 11def encrypt(m: bytes, key: int) -> bytes: 12 iv = os.urandom(16) 13 key = long_to_bytes(key) 14 key = md5(key).digest() 15 cipher = AES.new(key, AES.MODE_CBC, iv=iv) 16 return iv + cipher.encrypt(m) 17 18 19def f(s, p): 20 u = 0 21 for i in range(p): 22 u += p - i 23 u *= s 24 u %= p 25 26 return u 27 28 29p = getPrime(1024) 30s = random.randint(1, p - 1) 31 32A = f(s, p) 33ciphertext = encrypt(FLAG, s).hex() 34 35 36print(f"{p = }") 37print(f"{A = }") 38print(f"{ciphertext = }") Flag が$s$の値を鍵として暗号化されています。 与えられた$A := f(s, p), p$の値から$s$を復元できないか考えてみます。 まず、$A = f(s, p)$の中身を式に起こしてみます。 $$ \begin{aligned} A = f(s, p) &= s(\dots( s(s(s(p-0)+(p-1))+(p-2)) + \dots + 2) + 1 \mod p \\ &= \sum_{i=0}^{p-1} s^{p-i}(p-i) \\ &= \sum_{i=1}^{p} s^{i}i \end{aligned} $$ ...

2024-06-22 · 6 min · 1165 words · Laika