令和CTFやったよ WriteUp的なにか
すまんかった
全然解けぬ
競技前の話
平成最後 + 令和最初のネームバリューは大きすぎた。
サーバー重たすぎて10点問題解くのが最難関かと思った。
結果
2問+Welcome問題解いて210点ゴール
Forensic 100
渡されたpdf開いてみると令和おじさんが元号発表してるいらすとやの画像が表示された。
元号が書かれている場所にはQRコードらしきものがあったが、それをリアルタイム手話をする人に被せられて見えなくなってた。
foremost使って画像抽出を試みたけど、QRコードが見事に「令和型」に切り抜かれていて読めなかったので、試しに
に突っ込んだところ令和の部分の画像も取れた(もっとかっこよく解きたい)
SECCON{overlay_overlap_overera}
Misc 100
Brainf**k問題
問題文にもWikipediaのリンクが貼ってあったのですごく良心的な問題だった
ファイルをダウンロードすると
令和和和和和和和和和和和和和和和和「令和 和和和和令和和和和令和和和和和和和令和和 和和和和令和和平平平平平成」令和和和。令 和和和和和。成成。。平成成成成。成。令令 和和和和和和和和和和和。令和和。平平平和 和和和。令和和。和和和和。令令和和和和和 和和和和和和和。平平平和和和和和和和和和 和和和和。成成成成成成成成。令成成成成成 成成成。令令。成成成成成。成成成成成成。 令和。平平和和。令令令和和和和和和和和和 和。
ふむふむ。
とりあえず「和」は「+」だろう。
「令和」が「令+」なら「平成」は「平-」だろ。
・・・って感じに適当に置換
>++++++++++++++++[>+ ++++>++++>+++++++>++ ++++>++<<<<<-]>+++.> +++++.--..<----.-.>> +++++++++++.>++.<<<+ +++.>++.++++.>>+++++ +++++++.<<<+++++++++ ++++.--------.>----- ---.>>.-----.------. >+.<<++.>>>+++++++++ +.
SECCON{bREIn_WAnic!}
Misc 100
もう一問のMisc、解けなかった
ncすると
[1/100] 0=23-? ?=
と出てくる。この等式を成立させる値を返せばいいのね。
import socket import re import sympy s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('さーばーのあどれす', ぽーと)) x = sympy.Symbol('x') for i in range(100): receivedata = s.recv(1024).decode('utf-8') print(receivedata) sf = s.makefile() readline = sf.readline() print(readline) sprit = readline.split("="); res = sprit[1].replace('?','x') ans = sympy.solve(res) senddata = str(ans[0]) s.sendall((senddata).encode("utf-8"))
1問目、2問目は解けてるし、まぁ問題ないやろ!
って放置しようと思ったら3問目で既に[Connection reset by peer]でコケた。
何が行けなかったんだろう・・・教えてクレメンス
MWSCup2018に参加した話
MWSCup2018 とは
Sandboxが溜め込んだログの動的解析やバイナリの静的解析のほか、研究コミュニティに広く還元できるような成果物を事前に作成しよう!なんてのも含んでて結構幅広い。面白いけど難易度と敷居が高い気がする。
https://www.iwsec.org/mws/mwscup.html
開催期間・場所
2018/10/22 (月) ホテルメトロポリタン長野
CSS2018 (10/22~/25) と併設。大会は1日で終わるのであとは普通に学会参加できる。ついでに論文も出そう。
参加チーム
今年は16チーム参加していた。
弊高専からも1チーム出てた。僕は色々あって別チームだったけど。完全に裏切り
実は去年もこの大会には参加させていただいたのだけれども、1チーム定員6人のところ、学内募集で2人しか集まらかったので惨敗した。まぁそれ言い訳にはできないくらいなにも出来なかったのは内緒。
そんなだったので「今年も人集まらんやろ〜」くらいのノリでオファーを受け、某大学の方々と参加登録。直後弊高専でも頑張って5人集めたとの報告。身内で固めても面白かっただろうな。てか集まるなら去年も集まっとけ
内容
多分細かい内容に関しては書けないと思われるのでひとまず書かないでおこう。
そもそもコミュニティ内の人にだけ共有されているデータセット使ってやる大会ってのもあって、「大会終了後は速やかに問題データを各自の端末から削除してください」とのお達しが回るほどだったので、少なくともポストミーティングを待つべきかな。
結果
13位。ひとまずビリじゃなくて安心したけどまぁなんとも言えない感じ。事前課題は予想はしてたけど最下位だった。MWSってSlackがにぎやかなんだけど、そこでプレゼン終わった直後に「それGoogle Chromeでよくないか?」と厳しめのツッコミが入ってたのを見て首を全力で縦に振った。
だって「ログ収集」が目的なのにグラフでCPU使用率の可視化をして肝心の「ログの出力」がされてなくて、おまけ程度にボタンをポチッとすると予め登録したリストに沿ってクローリングする、っていう謎アイテムだったからね。仕方ないね。
ほしい?
どこかのgithubリポジトリに転がってるのでちゃんとログ出力するようにだけしていずれ共有されるのかもしれないしされないかもしれない。モチベは低い。
某大学院のインターンに行った
タイトルの通り
某高専の専攻科の1年生なう。
ついこの前本科で進路決定して落ち着いたと思ってたのに、もう卒業後の進路の話がちらほら。 落ち着く間もねぇ。腰を据えて研究してぇ。
かくいう僕もその波に揉まれ、ひとまず進学を視野に「大学院ってどんなもんなんだろ、やっぱがっつり研究できるのかな」とワクワクしながら某大学院のインターンに参加
期間
8/21-31。途中23,24は外せない用事があったので調整して頂いた。そのかわり土曜日は参加日に。計8日。
やったこと
ざっとリストアップするとこんな感じ
- Kali Linux使ったペネトレーションテスト演習
- 解析の基礎(ツールの使い方とか)
- 大学(学部生向け)で行われているグループ演習の参加(の予定だったが24日に参加できなかったため、25日の発表会の聴講のみ。ボコボコに質問攻めにしろとのお達し)
- インフラ見学(サーバルーム等、
記憶は忘却処理された) 雑用
感想
おそらく高専生向けに簡単なところを選んで演習を組んでくれたためか、内容的には今までにもやったことあることばかりだった。 ほんとに知りたかった「研究のレベル」「カリキュラムの感じ」はあまり感じられなかったので不完全燃焼。
あと、演習がすぐ終わっちゃったのもあってか、先生のお手伝い(UPSのバッテリー交換など)も多々あり、こういうところは高専も大学院もたいして変わらないんだろうなとは思った。社畜ならぬ学畜
メンターでついてくださった博士課程の方との雑談が一番楽しかった。
今後の進路
どうしようかなと思いつつ、「研究したくてお金たくさん払って大学に行くのに、そこで雑用で時間と体力取られたくないなぁ」という思考がよぎっている今日このごろ。就職もありなのかも。
先日の話を無理やり解決した
わからんかった
Cubeクラスで呼び出したコルーチンの終了をGoalクラスから拾いたかったが、いろいろ調べたけどやり方がわからなかった
解決策
- Goalクラスにはゴール時の動作が書き込まれたメゾットを用意
- Cubeクラスが呼び出したコルーチンの最後の動作で、自身の足元へRayを飛ばし、Raycastで情報を取得
- 用意しておいたゴール時の動作が書き込まれたメゾットを実行
まぁ、すごろくとかでも指定数進んだときにマス目の効果を読みに行くのはプレイヤーだし、考え方としては悪くないとは思ってる。 これならゴール以外のいろんなギミックもゴールと同じように実装してあげれば呼ぶ側からは1パターンで済むし拡張性も案外悪くない
ひとまずこれでいくことにした。締切も近いしね。
テストが終わったのでUnity ~非同期わからん~
テストが終わった
学校のテスト期間が終了した
そこそこ勉強して、そこそこ答えられたので、まぁ結果待ち
これで時間ができた!…かに見えた
できてなかった。むしろレポートとかの提出物が山のよう
ぶっちゃけ期末ってほんとに忙しいしもっと課題量の分散を心がけてほしい
だがしかし
まぁ今日くらいいいでしょの精神でUnityをいじる
今作ってるもの
すごろくのような、迷路のようなゲームのような何かを作っている
画面に出てる十字キーをぽちぽちおして、自キャラのサイコロをコロコロゴールまで運ぶ、ただそれだけ
今後のアップデート(予定)にはペンキで色塗り(ス●ラかな)なんかも含まれている
コルーチンの話
サイコロを転がす関数ではオブジェクトを回転させてるんだけども、目標値まで一気に回すと転がしてる感が無いってことで、徐々に回転させる動作をコルーチンに分けている
こんな関数から呼ぶ
public void MoveCube(int direction){ if (isRotate == false) { switch (direction) { case left: rotatePoint = transform.position + new Vector3 (-cubeSizeHalf, -cubeSizeHalf, 0f); rotateAxis = new Vector3 (0, 0, 1); break; case right: rotatePoint = transform.position + new Vector3 (cubeSizeHalf, -cubeSizeHalf, 0f); rotateAxis = new Vector3 (0, 0, -1); break; case front: rotatePoint = transform.position + new Vector3 (0f, -cubeSizeHalf, cubeSizeHalf); rotateAxis = new Vector3 (1, 0, 0); break; case back: rotatePoint = transform.position + new Vector3 (0f, -cubeSizeHalf, -cubeSizeHalf); rotateAxis = new Vector3 (-1, 0, 0); break; } StartCoroutine (RotateCube ()); } }
ゴールしたい
サイコロの移動はできたので、ゴール判定をしたい
オブジェクト指向的に、判定はゴールのオブジェクトにやってもらいたい(ゴール自身の上にサイコロが来たかを見る)
ただ、Updateで毎フレーム見るのも、そんなにリアルタイムに変化するゲームじゃないしきれいじゃない
そうだ、サイコロが移動した直後にゴール判定メゾットが動けばいいんだ
どうやんのさ
StartCoroutine (RotateCube ())の終了をゴールクラスから検出したくなったので調べてみた
- コルーチンの終了を待つ
- 複数のコルーチンの終了を待ち合わせる
なんて話はちらほら出るんだけど
- コルーチンの終了を他クラスへ通知
ってどう実現すればいいのか
もうすこし調べつつ悩んでみることにする
作るものリスト
リストアップ
とりあえず忘れないうちに、近々作りたいもの、作らなければならないものを列挙してく
作りたいもの
- Emacs-orgのパーサー(標準で入ってるけど、ノート取るのに使うと数式処理が微妙)
- ↑で作ったhtmlをいい感じにホストするサーバ構築(ローカルでいいのでDockerでやってみたい、ミーハーなので)
- gitっぽいものの実装(普通にどういう仕組みなのか気になりまくり。すごい。)
作らなければならないもの
- Unityでゲームつくる(これは完成したらOutputできるはず)
- バイト(インフラ系。Docker使う予定。やりたいこととかぶってるし、まぁやるか)
- 課題の山、レポート
ブログを書く
ブログをかきたい
最近タスクが積まれまくっている中で、創作意欲は沈み気味。 いろいろ作りたい反面、タスクが片付くと休眠欲求が強くなって何も進んでいない。
思いました。何かOutputしていかないと、と。
ってことで
- やったこと(つくったもの)の公開
- やれたこと、詰まってるとこなんかのメモ
- いつか見返すときが来るかもしれない日記
って目的でブログを書き連ねます。