Q18.[Forensic]leaf in forest
このファイルの中にはフラグがあります。探してください。
フラグはすべて小文字です!
CpawCTFのQ18を解いてみたので解法と
Pythonを使った特定文字列削除のメモです
1.ファイルを調べてみる
とりあえず指定のファイルをfileコマンドで見てみる
root@kali:/home/kuratsuka/Documents# file misc100
misc100: pcap capture file, microsecond ts (little-endian) - version 0.0 (linktype#1768711542, capture length 1869357413)
pcapって書いてあるから拡張子をpcapにしてwiresharkで開こうとしたらエラーが出た、よくわからん
すごい勢いで「lovelive!」って出力される
レベル1でごちうさは神って問題もあったよね、あぁ^~ターミナルがぴょんぴょんするんじゃぁ^~
すごい文字量に圧倒されるけどスクロールしてみると所々に大文字が配置されている
問題名にもあったように木を隠すなら森の中でFLAGがこのラブライブ!の向う側にあるのだろう
Pythonで指定文字列を消す
問題文にある"フラグはすべて小文字です! "から、隠されている大文字を抽出して小文字に変換すれば大丈夫なはず
テキストファイルに文字列をコピーして下記コードで実行してみる
f = open('C:/Users/kuratsuka/Desktop/misc100.txt')
data = f.read()
print(data.replace('lovelive!',''))
Pythonよくわからなくてread()を書かなかったら「io.TextIOWrapper」でエラー吐かれた、よくわからんが動くからヨシ!
結果としてはこれ
ヤテイ。 %e!CCCelive!lovelivPPPovelive!loveAAAe!lovWWWve!{{{elive!loveliMMMelive!lovelGGG!lovelivRRRovelive!lEEElive!P
PPelive!}}}
ヤテイ・・・!
だいぶ削れたけどもう少し削りたいので'love'と'live!'に分けてみる
f = open('C:/Users/kuratsuka/Desktop/misc100.txt')
data = f
data =data.replace('love','')
print(data.replace('live!',''))
結果はこちら
ヤテイ。 %e!CCCelivPPPoveAAAe!lovWWWve!{{{eliMMMelGGG!livRRRovelEEEPPPe}}}
・・・・
これはもうゴールしていいんじゃないか??
re.sub()を使ってもう少しだけきれいにする
わかる・・・フラグは分かるんだけれど・・・
もう少しだけきれいにしたい・・・
大文字抽出するのもあるんだろうけど、ここでは文字の削除の方向で解いてみる
replace()だと指定の文字列しか消せないらしくre.sub()使うと範囲内の文字列を消すことができるらしいので試してみる
import re
f = open('C:/Users/kuratsuka/Desktop/misc100.txt')
data = f.read()
data = re.sub('[a-z,!]',"",data) #a-zと!を削除
print(data)
これで実行してみると・・・・
ヤテイ。 %CCCPPPAAAWWW{{{MMMGGGRRREEEPPP}}}
だいぶキレイになった!