KOSEN セキュリティ・コンテスト 2020 参加記
今年も参加しました。
三位(3510)
rotten3
後輩が解いていたので口出しした(英 alphabet は 26 文字だよ)。
ECCp-20
楕円曲線上の演習問題です。 楕円曲線と点 P, Q が与えられるので 2P と dP = Q となる d を求めればフラグが得られます。 前者は単純に計算し、後者は離散対数問題を解きます(Baby-step Giant-step Algorithm で高速に解ける)。
Find2
bmp ファイルが 10000 個与えられるのでそこからフラグを探すという問題。適当にいくつか覗いてみるとノイズみたいな画像だらけなので、色数が少ないようなファイルを探すとフラグが得らます。
from PIL import Image import glob def count_color(file: str) -> int: img = Image.open(file) st = set() (w, h) = img.size for i in range(w): for j in range(h): color = img.getpixel((i, j)) st.add(color) return len(st) if __name__ == '__main__': files = glob.glob("./Find2/*") mi = 2 ** 30 for file in files: ret = count_color(file) if ret < mi: print("{}: {}".format(file, ret)) mi = ret
足し算しよう
1000~10000 の総和を求める問題。総和を求めます。
熱血計算塾
nc で繋いで eval で計算するやつです。
15game
1 から交互に数を順番に言っていき 15 を言ったほうが負けのゲーム(の一般化)を nc でやる問題。禁止数 b と一度に言える個数 c について常に x % (c + 1) = (b - 1) % (c + 1) となるような x を言ってから相手に渡せば勝てます。