strings 是 Linux 中常用來分析 二進位檔 或 可執行檔 的工具。
它可以幫你從檔案中找出 可列印的字串(ASCII 或 Unicode),也就是人類能看懂的部分。
例如 : 你有一個執行檔,打開時滿滿都是亂碼,用 strings 就能抓出裡面藏的文字資訊。
這在 除錯、逆向工程、安全分析、CTF 裡非常好用。
語法 : strings [options] file
strings file
-n
strings -n 8 data.bin
-e
strings -e l data.bin #將data.bin用16-bit little-endian編碼後輸出
-e
用來指定編碼:將結果編碼後再輸出編碼參數 :
-t
strings -t d data.bin
strings -t x file.exe | grep "flag" #輸出並顯示flag在檔案的位置
-t
參數:
d
→ 以十進位顯示o
→ 以八進位顯示x
→ 以十六進位顯示-f
# 輸入
strings -f -t x data1.bin data2.bin | grep flag
strings -f -t x *.bin | grep flag #萬用字元,掃描所有後面為.bin的檔案
# 輸出
file1.bin: admin_password
file2.bin: root_password
cat file.bin | strings
strings
。strings file.bin
結果類似,但也可搭配其他工具。( 其實上面已經有範例 )
pipe,也就是 |
會將前方指令的輸出傳送給後方的指令,並輸出後方指令處理後的結果
大部分指令都可以加上 pipe
strings data | grep "password" #只會輸出data中含有password的字串
-a
-a
→ 掃描整個檔案
但因為 strings 指令的預設就會掃描整個檔案,通常不用特別寫