sunset

問題文

TsukuCTF運営の1人であるshioが、今年に開催されたあるイベントが終わった後に夕日を撮影した。
この写真が撮影された日時を求めよ。
フラグフォーマットはTsukuCTF23{YYYY/MM/DD_hh:mm}
例えば、TsukuCTF2023の開始日時はTsukuCTF23{2023/12/09_12:20}
なお、誤差は1分まで許容され、日本標準時を用いる。

shio, one of the TsukuCTF admins, took a picture of the sunset after an event held this year.
Find the date and time this photo was taken.
The flag format is TsukuCTF23{YYYY/MM/DD_hh:mm}
For example, the start date and time of TsukuCTF2023 is TskuCTF23{2023/12/09_12:20}
Note that an error of up to 1 minute is allowed and the answer is based on Japan Standard Time.

難易度

hard

解法

まず、TsukuCTF運営の1人であるshioについてOSINTします。
Discordでアナウンスをしているshioのアカウントがあります。
プロフィールにはX(Twitter)もリンクされています。

次に、写真について調べます。
Google Lensなどにより、新潟でさらに日和山展望台であることが分かります。
この2つの情報を合わせて、X(Twitter)で from:@shio_sa1t 新潟 で調べます。
すると、セキュリティ・ミニキャンプ in 新潟 2023に参加していることが分かります。
イベントの終わりなので、 2023/09/10 であることが分かります。

最後に時間を求めていきます。ここが大変です。
https://hinode.pics/ で日の入り時刻が 18:02 であることが分かります。
ここで、日の入りの定義に注意してください。 日の入りは、太陽が地平線に沈みきって見えなくなった瞬間のことです。
そのため、この写真はそれよりも前に撮影されたことが分かります。

時間差を求めていきます。
太陽の右にある山の高さが画像でいうと18px(or 19px)です。
国土地理院の情報によると、現実世界では東境山で標高は600mのようです。
しかし、ここで地球が球体であることと大気の屈折率を考慮する必要があります。
展望台から山の距離を求めます。
擬似的に太陽の位置を山と山の間にして、Google Mapで計測すると、52km (or 51km)になります。
まず、地球を完全な球体と仮定し、離れた距離での高さの差を求めます。 次に、大気の屈折率による補正を行います。
これによって、山の見かけの高さが求められます。
太陽の高さは、24pxくらいです。
よって、先ほど求めた見かけの高さに24/18をかけます。
ここで、今求めた太陽の高さと先ほど計測した距離を用いて、太陽高度を求めることができます。
具体的には、arctanを用います。
https://keisan.casio.jp/exec/system/1185781259で太陽高度と時刻の関係を求めていきます。
ここで、17:45(2.52°)と18:00(-0.21°)に注目して、この区間を線形であると見なして計算していきます。
具体的には solver.pyを参照してください。

よって、17:55.5881424412297 と求めることができるため、フラグは TsukuCTF23{2023/09/10_17:55}です。
誤差を1分許容しているため、値が少し違っていても計算のプロセスさえ合ってれば求められるはずです。

実際には、17:56:05 に撮影されました。
そのため、その他のフラグは TsukuCTF23{2023/09/10_17:56}TsukuCTF23{2023/09/10_17:57} です。
計算をしなくても、誤差1分を許容=3分の範囲を持つということを考慮すると、日の入り時間が分かれば提出回数制限内に答えられます。

© 2021-2024 SecHack365-Fans All Right Reserved.