setodaNote CTF Exhibition Writeup (Misc)
Misc - Welcome
ようこそ setodaNote CTF へ
これはチュートリアル用の設問です。
以下の内容を確認し、フラグを獲得してください。:.:.:.:.:.:.:.:.:.:.:.:.:.:.:
flag{Enjoy_y0ur_time_here!}
:.:.:.:.:.:.:.:.:.:.:.:.:.:.:
上記の通り、本設問ではflag{Enjoy_y0ur_time_here!}
がフラグとなっています。
これを解答欄に入力してポイントを獲得してください。
正答:flag{Enjoy_y0ur_time_here!}
Misc - morse_one
友人から「秘密のメッセージを送るね」とあるテキストファイルが送られてきました。どうやらそのままでは読めないようです。添付されたファイルを解析し、秘密のメッセージを見つけ出してください。
フラグは得られた文字列を
flag{}
で囲んで答えてください。フラグに英字が含まれている場合はすべて大文字で答えてください。例えば得られた文字列がFlag
の場合はflag{FLAG}
となります。
問題にはmorse_one.txt
が添付されており、内容は以下の通りです。
DDDBSDDSBDDDSDBDSBBBSDBBDSDBDDSDSBDDB
問題タイトルの「morse」からモールス信号だと推測できます。
Bを「-」、Dを「・」、Sを文字の区切りとして変換してみます。
DDDB:V
DD:I
BDDD:B
DBD:R
BBB:O
DBBD:P
DBDD:L
D:E
BDDB:X
正答:flag{VIBROPLEX}
Misc - Hash
ちくしょう、なんてことだ。知り合いから預かっていたファイルをゴミ箱に放り込みやがった。まだ中身の確認もしていなかったのにだ。問い詰める必要はあるだろうが、いまはとにかくファイルを取り戻すことが先決だ。優先順位を間違えてはいけない。とくにかくゴミ箱からファイルを取り戻さなくては。・・・なんだぁこいつは、ファイル名が書き換えられてしまっているじゃあないか。なんて野郎だクソっこれじゃほかのファイルと見分けがつかないじゃあないか。なんて日なんだ今日はよぉ。しかしまったくもって腹立たしいことは確かだが、まだ焦るのは早すぎるよなぁ。ぜんぜん焦る必要はねぇ。なぜならこっちにはファイルと共に受け取ったこのハッシュ値があるんだからよぉ・・・
添付ファイルを解析し、以下のハッシュ値を持つファイル見つけ出してください。フラグはそのファイルに記載されている文字列を組み合わせたものとなります。
aff02d6ad353ebf547f3b1f8ecd21efd7931e356f3930ab5ee502a391c5802d7
8428f87e4dbbf1e95dba566b2095d989f5068a5465ebce96dcdf0b487edb8ecb
e82f6ff15ddc9d67fc28c4b2c575adf7252d6e829af55c2b7ac1615b304d8962
問題にはpass001.txt
~pass090.txt
が添付されています。
各テキストファイルのSHA256ハッシュ値を計算し、問題文末のハッシュ値と同一であればファイル名を出力するプログラムを作成します。
import hashlib
hash_list = ["aff02d6ad353ebf547f3b1f8ecd21efd7931e356f3930ab5ee502a391c5802d7", "8428f87e4dbbf1e95dba566b2095d989f5068a5465ebce96dcdf0b487edb8ecb", "e82f6ff15ddc9d67fc28c4b2c575adf7252d6e829af55c2b7ac1615b304d8962"]
for i in range(1, 91):
file_name = "pass" + str(i).zfill(3) + ".txt"
with open(file_name, "rb") as file:
data = file.read()
hash = hashlib.sha256(data).hexdigest()
if hash in hash_list:
print(file_name)
$ python hash.py
pass024.txt
pass034.txt
pass079.txt
$
各ファイルには以下の内容が記載されています。
-
pass024.txt
:flag{hardest
-
pass034.txt
:_logic_
-
pass079.txt
:puzzle}
正答:flag{hardest_logic_puzzle}
Misc - F
友人のプログラマーからあるテキストデータを受け取りました。中身はあるプログラミング言語で書かれたプログラムだというのですが、、、
以下のテキストデータを解析し、フラグを得てください。
+++++++[->++++++++++>+++++++++++>+++++++++>++++++++++<<<<]>.>-.>++.>+.>++++++++[>++++<-]>.>+++++[->+++++++++++++++++++++>+++++++++++++++++++++++<<]>.>.>++++++++[>++++<-]>.>++++++++++[->++++++++++>++++++++++>++++++++++>++++++++++>++++++++++++<<<<<]>++.>++++++++.>---.>+++.>+++.>++++++++[>++++++++<-]>++++.>+++++++++++[>++++++++++>++++++++++<<-]>+.>.>++++[>++++++++++<-]>-.>+++[->+++++[->++++++++<]<]>>----.>++++++++++[->++++++++++>+++++++++>++++++++++++>++++++++++>+++++++++<<<<<]>-----.>-----.>-----.>+.>+++++.>++++++++++++++++++++[>++++++>+++++>+++++>+++++>+++>++<<<<<<-]>----.>++++.>+.>-----.>++++++++++.>+++++.>++++++++++[->+++++++++>+++++++++++>+++++++++++>++++++++++<<<<]>---.>+.>++++.>.>+++[->+++++++++++<]>..>+++++[->+++++[->+++++<]<]>>.
これはBrainfuck[1]で書かれたコードです。
AtCoderでサポートされている言語なので実行してみます。
正答:flag{Don't_Use_the_F-Word!!}
Misc - magic_number
添付されたファイルから以下が示す3つのファイルを探してください。
[89 50 4e 47]
[52 61 72 21]
[ff d8 ff e0]
フラグは該当するファイル名を以下の順番にアンダースコアでつないで回答してください。
flag{[89 50 4e 47]_[52 61 72 21]_[ff d8 ff e0]}
例えばファイル名がそれぞれ以下の場合は
flag{aaa_bbb_ccc}
と答えてください。
[89 50 4e 47] = aaa.txt
[52 61 72 21] = bbb.exe
[ff d8 ff e0] = ccc.zip
問題には以下の12個のファイルが添付されています。
flag.txt
green.tif
light.jpg
moon.gif
mpmp.mp4
post.pdf
post.png
rar.rar
sea.txt.bz2
silent.bmp
undo.cab
victory.zip
問題タイトルになっているマジックナンバーとはファイルの種類を示す数字のことで、通常ファイルの先頭にあります。
各添付ファイルの先頭4バイトを表示してみます。
$ xxd -l 4 flag.txt
00000000: 666c 6167 flag
$ xxd -l 4 green.tif
00000000: 4949 2a00 II*.
$ xxd -l 4 light.jpg
00000000: ffd8 ffe0 ....
$ xxd -l 4 moon.gif
00000000: 4749 4638 GIF8
$ xxd -l 4 mpmp.mp4
00000000: 0000 0020 ...
$ xxd -l 4 post.pdf
00000000: 2550 4446 %PDF
$ xxd -l 4 post.png
00000000: 8950 4e47 .PNG
$ xxd -l 4 rar.rar
00000000: 5261 7221 Rar!
$ xxd -l 4 sea.txt.bz2
00000000: 425a 6839 BZh9
$ xxd -l 4 silent.bmp
00000000: 424d 1e77 BM.w
$ xxd -l 4 undo.cab
00000000: 4d53 4346 MSCF
$ xxd -l 4 victory.zip
00000000: 504b 0304 PK..
$
[89 50 4e 47] = post.png
[52 61 72 21] = rar.rar
[ff d8 ff e0] = light.jpg
となっていることが分かります。
正答:flag{post_rar_light}
Misc - Stegano
友人からある画像が送られてきました。何かが写りこんでいるらしいのですが。
添付されたファイルを解析してフラグを入手してください。
問題にはstegano.png
として以下の画像が添付されています。
画像中央にうっすら1s_cReA73d_by
という文字列が見えますが、flagとしては不十分です。
「青い空を見上げればいつもそこに白い猫」のステガノグラフィ解析機能で調査してみます。
左上にflag{Re4l17y_
という文字列が見えます。
右下に_7h3_m1nd_rA9}
という文字列が見えます。
正答:flag{Re4l17y_1s_cReA73d_by_7h3_m1nd_rA9}
Misc - morse_zero
友人から「マジの秘密のメッセージを送るね」とあるテキストファイルが送られてきました。どうやらマジでそのままでは読めないようです。添付されたファイルを解析し、マジの秘密のメッセージを見つけ出してください。
フラグは得られた文字列を
flag{}
で囲んで答えてください。フラグに英字が含まれている場合はすべて大文字で答えてください。例えば得られた文字列がFlag
の場合はflag{FLAG}
となります。
問題にはmorse_zero.txt
が添付されており、Zと空白文字の羅列になっています。
モールス信号では少なくとも3種類の文字が必要なはずなので、バイナリ表示してみます。
$ xxd morse_zero.txt
00000000: e280 8ce2 808c e280 8be2 808b 5ae2 808b ............Z...
00000010: 5ae2 808b e280 8ce2 808b 5ae2 808c e280 Z.........Z.....
00000020: 8ce2 808c e280 8ce2 808c 5ae2 808b e280 ..........Z.....
00000030: 8be2 808c e280 8ce2 808b e280 8c5a e280 .............Z..
00000040: 8be2 808c e280 8c5a e280 8be2 808c e280 .......Z........
00000050: 8ce2 808c e280 8c5a e280 8ce2 808b e280 .......Z........
00000060: 8b5a e280 8c5a e280 8be2 808b e280 8be2 .Z...Z..........
00000070: 808b 5ae2 808b e280 8be2 808c e280 8ce2 ..Z.............
00000080: 808b e280 8c5a e280 8be2 808b e280 8b5a .....Z.........Z
00000090: e280 8be2 808c e280 8ce2 808b 5ae2 808b ............Z...
000000a0: e280 8c5a e280 8ce2 808b e280 8ce2 808b ...Z............
000000b0: 5ae2 808b Z...
$
よくよく見ると、空白文字にはe2808c
とe2808b
の2種類があると分かります。
e2808c
を「-」、e2808b
を「・」、5a
を文字の区切りとして変換してみます。
e2808c e2808c e2808b e2808b:Z
e2808b:E
e2808b e2808c e2808b:R
e2808c e2808c e2808c e2808c e2808c:0
e2808b e2808b e2808c e2808c e2808b e2808c:_
e2808b e2808c e2808c:W
e2808b e2808c e2808c e2808c e2808c:1
e2808c e2808b e2808b:D
e2808c:T
e2808b e2808b e2808b e2808b:H
e2808b e2808b e2808c e2808c e2808b e2808c:_
e2808b e2808b e2808b:S
e2808b e2808c e2808c e2808b:P
e2808b e2808c:A
e2808c e2808b e2808c e2808b:C
e2808b:E
正答:flag{ZER0_W1DTH_SPACE}
Misc - ransom_note
あなたの元に緊急の対応依頼が飛び込んできました。重要なファイルがランサムウェアによって暗号化されてしまった。なんとか助けてほしい。電話越しに状況を聞き取りつつ、1枚の画像が送られてきました。端末のディスプレイを写したもののようです。「No More Ransom Project の出番だな。」その画像を見た上司がつぶやきます。今回のあなたの仕事はランサムウェアによって暗号化されてしまったファイルを復元することです。
添付されたファイルを解析し、フラグを得てください。
※ この設問は Windows 環境で解くことを想定しています。
問題にはImage from iOS.jpg
として以下の画像が添付されています。
また、NPIEWI-DECRYPT.txt
も添付されており、内容は以下の通りです。
---= GANDCRAB V5.0.3 =---
***********************UNDER NO CIRCUMSTANCES DO NOT DELETE THIS FILE, UNTIL ALL YOUR DATA IS RECOVERED***********************
*****FAILING TO DO SO, WILL RESULT IN YOUR SYSTEM CORRUPTION, IF THERE WILL BE DECRYPTION ERRORS*****
Attention!
All your files, documents, photos, databases and other important files are encrypted and have the extension: .NPIEWI
The only method of recovering files is to purchase an unique private key. Only we can give you this key and only we can recover your files.
The server with your key is in a closed network TOR. You can get there by the following ways:
----------------------------------------------------------------------------------------
| 0. Download Tor browser -
https://www.torproject.org/
| 1. Install Tor browser
| 2. Open Tor Browser
| 3. Open link in TOR browser:http://xxxxxxxxxxxxxxxx.example.com/b9ba6918c4b4a232
| 4. Follow the instructions on this page----------------------------------------------------------------------------------------
On our page you will see instructions on payment and get the opportunity to decrypt 1 file for free.
ATTENTION!
IN ORDER TO PREVENT DATA DAMAGE:
* DO NOT MODIFY ENCRYPTED FILES
* DO NOT CHANGE DATA BELOW---BEGIN GANDCRAB KEY---
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
---END GANDCRAB KEY------BEGIN PC DATA---
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
---END PC DATA---
No More Ransom Projectではランサムウェアで暗号化されたファイルを復号するツール等が公開されています。
Image from iOS.jpg
やNPIEWI-DECRYPT.txt
にもある通り、今回はGandCrabというランサムウェアで暗号化されているようなので、「GandCrab (V1, V4 and V5 up to V5.2 versions) Ransom」をクリックして復号ツールをダウンロードします。
あとはダウンロードしたBDGandCrabDecryptTool.exe
を起動し、復号したいsecret.txt.npiewi
が格納されているフォルダを指定して「START TOOL」を押下するだけです。
復号ツールの実行が完了すると、先ほど指定したフォルダに復号されたsecret.txt
があります。
正答:flag{unlock1ng_y0ur_d1gital_life_with0ut_paying;)}
Misc - Nothing
あなたは友人のプログラマーからあるテキストファイルを渡されました。中身を確認しますが画面には何も表示されません。何も書かれていないのか、いや、よく見ると、、、
添付されたファイルを解析してフラグを得てください。
問題にはnothing.txt
が添付されており、空白文字が羅列されています。
これはWhitespace[2]で書かれたコードです。
AtCoderでサポートされている言語なので実行してみます。
正答:flag{And_Then_There_Were_None}
Misc - i_knew_it
「このアセンブリ、見た瞬間あなただと分かりましたよ。」
ある暗号方式の名称がフラグになっています。添付ファイルからその暗号方式の名称を特定し、フラグ形式で回答してください。
フラグに英字が含まれている場合は、すべて大文字で答えてください。例えば This_is_FLAG が得られた場合は flag{THIS_IS_FLAG} となります。
問題にはi_knew_it.png
として以下の画像が添付されています。
「アセンブリ」「見た瞬間」でGoogle検索すると、以下のWebサイトがヒットします。
アセンブリを読んでいない(読めない)ので大分ずるいですが、RC4であることが分かります。
正答:flag{RC4}
Misc - Redacted
あなたの友人のジャーナリストは極秘ファイルの入手に成功しました。ですが重要な部分が黒塗りにされてしまっているようです。このままでは真実が闇に葬り去られてしまいます。あなたは極秘ファイルの解析を依頼されました。
添付されたファイルを解析し、真実を明らかにしてください。
問題にはtop_secret.pdf
として以下のようなPDFファイルが添付されています。
strings
コマンドで文字列を抽出してみます(実行結果が非常に長いため途中省略しています)。
$ strings top_secret.pdf
%PDF-1.7
~省略~
<?xpacket end="w"?>
endstream
endobj
20 0 obj
<</Author(FBI)/CreationDate(D:20210312003216+09'00')/Creator(Microsoft
PowerPoint
for Microsoft 365)/Keywords(Note: Never extract images...)/ModDate(D:20210626004046+09'00')/Producer(Microsoft
PowerPoint
for Microsoft 365)/Title(The Truth about the Roswell Incident)>>
endobj
xref
0000000000 65535 f
17 1
0000046482 00000 n
20 1
0000050291 00000 n
trailer
<</Size 21/Root 1 0 R/Info 20 0 R/ID[<C04E9C4056169F49B3B66D909F41437E><1FC7356DE215D546874C6C5D21C2A9A0>]/Prev 46302>>
startxref
50580
%%EOF
$
どうやらMicrosoft Officeで作成した資料のようなので、Wordでtop_secret.pdf
を開きます。
すると、黒塗り部分のオブジェクトを削除できるようになります。
正答:flag{weather_balloon}
Misc - strong_password
あなたの同僚は部署内で利用されているパスワード規則に疑問を抱いているようです。脆弱なパスワードが生成されてしまうのではないかと。これを確かめるべく同僚は、過去実際にこの規則に従い作成されていたパスワード付きzipのコピーをあなたに送付し、その解析を依頼しました。
添付されたファイルを解析し、フラグを入手してください。なお、ファイルはコピーであり更新日時が実際にパスワード設定された日時とは異なる点に注意してください。
問題には情報セキュリティガイドライン(別紙1).pdf
として以下のようなPDFファイルが添付されています。
最初はPythonを使って総当たりしていたのですが、相当時間がかかりそうだった[3]ので、hashcatを利用する方針に切り替えました。
まずは、zip2johnでTopSecret.zip
のパスワードハッシュを取得します。
$ zip2john TopSecret.zip
ver 2.0 TopSecret.zip/TopSecret.txt PKZIP Encr: cmplen=85, decmplen=73, crc=8578F5F9 ts=92C0 cs=8578 type=0
TopSecret.zip/TopSecret.txt:$pkzip$1*1*2*0*55*49*8578f5f9*0*2b*0*55*8578*598c6b323287ee253bad1378d1f4fe4d91648ea9f1e60fe80374b917e47421b6f3379cf786e9c22453d02e8192c2aecd93122be13b2c348d02c0229c6c8a6b433ac24b17d0e18f215252601daafe595eb6ba28eab3*$/pkzip$:TopSecret.txt:TopSecret.zip::TopSecret.zip
$
次に、[年月日]+[記号2]の部分の辞書ファイルを作成します。
ただし、日付は「情報セキュリティガイドライン(別紙1)」の発行日である2020年4月1日から、TopSecret.zip
の作成日時である2021年7月14日までとします。
import datetime
# 日付(2020/04/01 - 2021/07/14)のリストを作成
start_date = datetime.date(2020, 4, 1)
end_date = datetime.date(2021, 7, 14)
current_date = start_date
dates = []
while current_date <= end_date:
dates.append(current_date.strftime("%Y%m%d"))
current_date += datetime.timedelta(days=1)
# 記号のリストを作成
symbols = ["@", "#", "$", "%", "!", "-"]
# [年月日]+[記号2]のリストを作成
with open("dict.txt", "w") as f:
for date in dates:
for symbol in symbols:
f.write(f"{date}{symbol}\n")
$ python dict.py
$ head -n 30 dict.txt
20200401@
20200401#
20200401$
20200401%
20200401!
20200401-
20200402@
20200402#
20200402$
20200402%
20200402!
20200402-
20200403@
20200403#
20200403$
20200403%
20200403!
20200403-
20200404@
20200404#
20200404$
20200404%
20200404!
20200404-
20200405@
20200405#
20200405$
20200405%
20200405!
20200405-
$
さらに、TopSecret.zip
の圧縮方式を確認します。
$ zipinfo -v TopSecret.zip
Archive: TopSecret.zip
There is no zipfile comment.
End-of-central-directory record:
-------------------------------
Zip archive file size: 245 (00000000000000F5h)
Actual end-cent-dir record offset: 223 (00000000000000DFh)
Expected end-cent-dir record offset: 223 (00000000000000DFh)
(based on the length of the central directory and its expected offset)
This zipfile constitutes the sole disk of a single-part archive; its
central directory contains 1 entry.
The central directory is 95 (000000000000005Fh) bytes long,
and its (expected) offset in bytes from the beginning of the zipfile
is 128 (0000000000000080h).
Central directory entry #1:
---------------------------
TopSecret.txt
offset of local header from start of archive: 0
(0000000000000000h) bytes
file system or operating system of origin: MS-DOS, OS/2 or NT FAT
version of encoding software: 6.3
minimum file system compatibility required: MS-DOS, OS/2 or NT FAT
minimum software version required to extract: 2.0
compression method: none (stored)
file security status: encrypted
extended local header: no
file last modified on (DOS date/time): 2021 Jul 14 18:22:00
32-bit CRC value (hex): 8578f5f9
compressed size: 85 bytes
uncompressed size: 73 bytes
length of filename: 13 characters
length of extra field: 36 bytes
length of file comment: 0 characters
disk number on which file begins: disk 1
apparent file type: binary
non-MSDOS external file attributes: 000000 hex
MS-DOS file attributes (20 hex): arc
The central-directory extra field contains:
- A subfield with ID 0x000a (PKWARE Win32) and 32 data bytes. The first
20 are: 00 00 00 00 01 00 18 00 f9 71 63 b2 91 78 d7 01 fa cd fc b2.
There is no file comment.
$
最後に、hashcatのマニュアルを確認しながらパスワードクラックを実行します。
-
-m 17210
:ハッシュの種類(PKZIP (Uncompressed)[4]) -
$pkzip$1*1*2*0*55*49*8578f5f9*0*2b*0*55*8578*598c6b323287ee253bad1378d1f4fe4d91648ea9f1e60fe80374b917e47421b6f3379cf786e9c22453d02e8192c2aecd93122be13b2c348d02c0229c6c8a6b433ac24b17d0e18f215252601daafe595eb6ba28eab3*$/pkzip$
:zip2johnで取得したパスワードハッシュ -
-a 7
:攻撃モード(Hybrid Mask + Wordlist) -
-1 '?l?u'
:カスタム文字セット1(英大文字・英小文字) -
-2 '@#$%!-'
:カスタム文字セット2(記号) -
?1?1?1?2
:「案件コード」+「記号1」 -
dict.txt
:dict.py
で生成した辞書ファイル
$ hashcat -m 17210 '$pkzip$1*1*2*0*55*49*8578f5f9*0*2b*0*55*8578*598c6b323287ee253bad1378d1f4fe4d91648ea9f1e60fe80374b917e47421b6f3379cf786e9c22453d02e8192c2aecd93122be13b2c348d02c0229c6c8a6b433ac24b17d0e18f215252601daafe595eb6ba28eab3*$/pkzip$' -a 7 -1 '?l?u' -2 '@#$%!-' '?1?1?1?2' dict.txt
hashcat (v6.2.6) starting
OpenCL API (OpenCL 3.0 PoCL 6.0+debian Linux, None+Asserts, RELOC, LLVM 17.0.6, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
============================================================================================================================================
* Device #1: cpu-penryn-12th Gen Intel(R) Core(TM) i5-12400F, 6944/13952 MB (2048 MB allocatable), 2MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Dictionary cache hit:
* Filename..: dict.txt
* Passwords.: 2820
* Bytes.....: 28200
* Keyspace..: 2820
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Optimizers applied:
* Not-Iterated
* Single-Hash
* Single-Salt
Watchdog: Temperature abort trigger set to 90c
Host memory required for this attack: 0 MB
Dictionary cache hit:
* Filename..: dict.txt
* Passwords.: 2820
* Bytes.....: 28200
* Keyspace..: 2379087360
Cracking performance lower than expected?
* Append -w 3 to the commandline.
This can cause your screen to lag.
* Update your backend API runtime / driver the right way:
https://hashcat.net/faq/wrongdriver
* Create more work items to make use of your parallelization power:
https://hashcat.net/faq/morework
$pkzip$1*1*2*0*55*49*8578f5f9*0*2b*0*55*8578*598c6b323287ee253bad1378d1f4fe4d91648ea9f1e60fe80374b917e47421b6f3379cf786e9c22453d02e8192c2aecd93122be13b2c348d02c0229c6c8a6b433ac24b17d0e18f215252601daafe595eb6ba28eab3*$/pkzip$:qYL%20210228!
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 17210 (PKZIP (Uncompressed))
Hash.Target......: $pkzip$1*1*2*0*55*49*8578f5f9*0*2b*0*55*8578*598c6b...pkzip$
Time.Started.....: Sat Oct 12 20:44:11 2024 (1 min, 18 secs)
Time.Estimated...: Sat Oct 12 20:45:29 2024 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (dict.txt), Right Side
Guess.Mod........: Mask (?1?1?1?2) [4], Left Side
Guess.Charset....: -1 ?l?u, -2 @#$%!-, -3 Undefined, -4 Undefined
Speed.#1.........: 24505.6 kH/s (9.20ms) @ Accel:128 Loops:1024 Thr:1 Vec:4
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 1990135808/2379087360 (83.65%)
Rejected.........: 0/1990135808 (0.00%)
Restore.Point....: 705536/843648 (83.63%)
Restore.Sub.#1...: Salt:0 Amplifier:1024-2048 Iteration:0-1024
Candidate.Engine.: Device Generator
Candidates.#1....: sXC%20200918! -> YAN%20210308#
Hardware.Mon.#1..: Util: 94%
Started: Sat Oct 12 20:44:10 2024
Stopped: Sat Oct 12 20:45:30 2024
$
パスワード「qYL%20210228!
」でTopSecret.zip
を解凍し、中に格納されているTopSecret.txt
の内容を確認します。
正答:flag{And_n0w_h3re_is_my_s3cre7}
Discussion