Auto Hotkey
Auto Hotkey とは 常駐化することでホットキー割り当てなどが行える windows 用のフリーソフト。
wiki に詳しい説明があるが WaniCTF'21 で取り上げられたテキスト(スクリプト?)の読み方をメモしておく。
::the::
Send, +wani
return::password::
Send, +c+t+f
return::for::
Send, {home}{right 3}{del}1{end}{left 2}{del}7
return::today::
FormatTime , x,, yyyyMMdd
SendInput, {home}{right 4}_%x%
return::is::
Send, _{end}{!}{!}{left}
return:*?:ni::
Send, ^a^c{Esc}{home}password{:} {end}
return
上記が問題で使用されたテキスト。「the password for today is nani」と入力すると zip のパスワードになるらしい。
::the::
Send, +wani
return
”the”+「SPACE」と入力すると ”the”+「SPACE」が削除されて代わりに ”Wani” と入力される。
『::the::』は "the" に続いて終了を意味する文字(ここでは SPACE )を入力すると処理が実行されるという意味。
『Send,』に続く文字が入力されて『return』で処理が終了する。
『+』は「SHIFT」を意味する。
::password::
Send, +c+t+f
return
これも同様に ”passowrd”+「SPACE」と入力すると ”CTF” に置き換わる。
::for::
Send, {home}{right 3}{del}1{end}{left 2}{del}7
return
”for”+「SPACE」と入力すると「HOME」キー、「右」キーを3回、「DEL」キー、”1”、「END」キー、「左」キーを2回、「DEL」キー、”7” の順番に入力される。
今入力した文字だけでなく、既に入力された文字に対しても編集をかけられるのが面白い。
::today::
FormatTime , x,, yyyyMMdd
SendInput, {home}{right 4}_%x%
return
”today”+「SPACE」と入力するとシステム日付が変数 x に格納され、「HOME」キー、「右」キー4回、”_” 、変数 x の値の順番で入力される。
『Send』と『SendInput』は同じ意味らしい。
::is::
Send, _{end}{!}{!}{left}
return
" is"+「SPACE」と入力すると ”_ ”、「END」キー、”!” 、”!” 、「左」キーの順番で入力される。『{!}』 は『+1』でも代替えできるのでは?と思ったけど、外国語キーボードなど配列の違いがあるので CTF で『+1』は使えないのか。
:*?:ni::
Send, ^a^c{Esc}{home}password{:} {end}
return
”ni” と入力すると「CTRL」+「a」(全選択)、「CTRL」+「c」(コピー)、「ESC」キー、「HOME」キー、”password” 、”:” 、「END」キーの順番で入力される。
『:*?:』は「SPACE」などの終了文字を入力しなくても処理を実行するという意味。
便利そうだが意図しないところで変換が行われる危険もありそう。
プログラミングする際など色々使い道はありそうなツールだと思った。