ふるつき

v(*'='*)v かに

Crypto CTFプレイヤーにおすすめのVim Plugin 1選

こんにちは。今回はCTFで暗号問題を解いている && Vimを使っている方へのお得情報です。

昨今の暗号問題では多変数剰余多項式の小さい解を求めたいことや、連立した不等式の解を求めたいことが多くあります。そしてこれらの問題についてはそれぞれdefund/coppersmithrkm0959/Inequality Solving with CVPという非常に洗練されたライブラリが存在しますから、これらを利用したいことは多いですよね。

こういったときに煩わしく感じるのがライブラリの利用方法です。これらのライブラリはSageMathという処理系用のプログラム(Sageという言語?)で記述されていますが、Sage自体にはパッケージマネージャのような仕組みはありませんから、毎回プログラムをGitHubからコピー&ペーストする必要があります。

Sageにはloadという関数があり、これでSageの外部プログラムを読み込むこと自体はできますが、これを使う場合にもプログラムをwgetなりcurlなりでダウンロードしてくるひと手間が必要になります。

今回はこんな時に便利なVim Pluginであるtheoremoon/CTF.vimを紹介します。動作にはcurlが必要です。

このプラグインを読み込むとDefund, Rkmというコマンドが定義され、これを実行するとそれぞれdefund/coppersmith, rkm0959/Inequality Solving with CVPのプログラムを編集中のファイルに展開してくれます。defund/coppersmithを使いたい問題に出会ったときにサッと:tabnew defund.sage :Defund :wq load("./defund.sage") と入力すれば良いので便利です。また、ファイルを分けずにそのまま埋め込むと解法とライブラリと、ライブラリのGitHubへのURLが近い位置にまとまって、Gistなどにwriteupを上げるときに非常に便利です。

これが実際どのくらい便利なのかは↓をご覧ください。便利ですね

ところでVim:r!<command> とすることで<command>の実行結果を編集中のファイルに流し込めるのでわざわざvim pluginにしなくてもcurlスクリプトの上手なエイリアスにパスが通っていればそれで良いですね。


この記事はCTF Advent Calendar 2021の5日目の記事です。こんなよくわからない記事にAdvent Calendarの貴重な枠が消費されてしまって悲しいですね。もっと良い知見を集めるためにCTFプレイヤーの皆様は高速に空いている枠を抑えてください。よろしくおねがいします

adventar.org