備忘録
テキストボックスに入力しても何も変化がないので、開発者ツールでネットワークを調べる。

どうやらjquery.min.jsはAPIにアクセスしているみたい。

ソースコードを見ると、scriptタグで意味不明の「う〜にゃ〜」が出てくる。調べると、これはJSを難読化しているらしい。

続いて発生しているエラーを調べてみる。これは、今見ているWebサイトがHTTPSなのにAPIへはhttpでアクセスしてるよってエラー。つまり、APIへHTTPSでアクセスすればいいと予想できる。

とりあえずAPIにHTTPSでAPIにアクセスするようエディターにソースコードをコピペしローカルでブラウザ起動(最初は左下のGo Liveでサーバーとして起動したため、src部分が相対パスで認識されうまくアクセスできなかった…)

テキストボックスに入力すると無事アラートが出るように!
エラーも消えてスッキリしたが、「う〜にゃ〜」は謎のまま。

「う〜にゃ〜」の部分をconsole.logで囲って出力してみる。

すると、infoに大量の文字列が!
\u00などはuniコードエスケープシーケンスらしい。
最後らへんの$(function(){ 以降はJSのコードっぽいのでコピペしてAIに整形させてみた。

コードを読むと、入力した配列のi文字目とi+1をかけた結果が配列pのi文字目と一致すれば「(」・ω・)」うー!(/・ω・)/にゃー!」アラートが出るらしい。

条件が分かったので仕様を満たすコードを作る。
// 入力文字列のi番目のuniコードの数値✖️(i+1)が配列pのi番目と一致すればOK
// つまり、t.charCodeAt(i)=p[i]/(i+1)が成立するuniコードを調べる
p = Array(70, 152, 195, 284, 475, 612, 791, 896, 810, 850, 737, 1332, 1469, 1120, 1470, 832, 1785, 2196, 1520, 1480, 1449);
input = ''
for (let i = 0; i < p.length; i++) {
let charCode = p[i]/(i+1);
input += String.fromCharCode(charCode);
console.log(input);
}
作ったコードをindex.htmlに組み込むと、以下のようにフラグが出力される。
(フラグバレ防止のため、表示しているのは最初の部分のみ)

解いた問題を2週間振りに振り返ったが、解くのにかなりの時間かかった。定期的に振り返らないと一瞬で忘れそう^^;



