制文件中的可打印字符串)))
Linux命令-strings提取二進(jìn)制文件中的可打印字符串快速參考基本用法常用選項(xiàng)實(shí)用場(chǎng)景高級(jí)技巧安全分析應(yīng)用與其他工具結(jié)合性能注意事項(xiàng)strings用于從二進(jìn)制文件可執(zhí)行程序、目標(biāo)文件、核心轉(zhuǎn)儲(chǔ)等中提取可打印的字符串。它掃描文件中的字節(jié)序列將連續(xù)的可打印字符序列輸出。這在逆向工程、程序取證和快速了解未知二進(jìn)制功能時(shí)非常有價(jià)值??焖賲⒖約trings[選項(xiàng)]文件...strings默認(rèn)提取長(zhǎng)度至少為 4 的 ASCII 可打印字符串。它是理解黑箱二進(jìn)制文件內(nèi)容的最簡(jiǎn)單入口?;居梅? 從可執(zhí)行文件提取字符串strings /usr/bin/ls# 從二進(jìn)制文件中提取最少 6 個(gè)字符strings-n6/usr/bin/whoami# 從多個(gè)文件中提取strings /usr/bin/*|head-50# 提取并顯示偏移量十進(jìn)制strings-td /usr/bin/ls# 提取并顯示十六進(jìn)制偏移strings-tx /usr/bin/ls# 提取并顯示八進(jìn)制偏移strings-to /usr/bin/ls# 指定字符串最小長(zhǎng)度strings-n10/opt/myapp/lib/libengine.so常用選項(xiàng)選項(xiàng)說(shuō)明-n N最小字符串長(zhǎng)度默認(rèn) 4-t o顯示八進(jìn)制偏移-t d顯示十進(jìn)制偏移-t x顯示十六進(jìn)制偏移-e ENC指定字符編碼s/S/b/l/B/L-f顯示文件名-a掃描整個(gè)文件默認(rèn)-T FORMAT指定目標(biāo)文件格式bfd 目標(biāo)--encodingENC選擇字符編碼實(shí)用場(chǎng)景# 場(chǎng)景 1: 查找程序中的版本信息和版權(quán)聲明strings /usr/bin/python3|grep-E(version|Version|Copyright|GPL)# 場(chǎng)景 2: 查找可執(zhí)行文件依賴的庫(kù)strings /usr/bin/nginx|grep\.so\.# 場(chǎng)景 3: 查找編譯時(shí)的路徑信息strings /usr/sbin/sshd|grep/# 場(chǎng)景 4: 查找硬編碼的 URL 或 IPstrings /opt/app/binary|grep-Ehttps?://|([0-9]{1,3}\.){3}[0-9]{1,3}# 場(chǎng)景 5: 從核心轉(zhuǎn)儲(chǔ)core dump提取信息strings core.12345|tail-50# 場(chǎng)景 6: 搜索嵌入式固件中的憑證strings firmware.bin|grep-ipassword\|username\|secret# 場(chǎng)景 7: 查找 GLIBC 版本信息strings /usr/bin/ls|grepGLIBC# 場(chǎng)景 8: 提取二進(jìn)制文件中的錯(cuò)誤消息strings /usr/bin/ssh|grep-ierror\|fatal\|warning高級(jí)技巧# 提取長(zhǎng)度為 20 的字符串通常是有意義的信息strings-n20/usr/bin/systemd|head-20# 查找程序中的 printf 格式字符串strings /usr/bin/myprogram|grep-E%[sdlu]# 從內(nèi)存鏡像提取字符串并分類strings memory_dump.bin|teeall_strings.txt|\grep-E[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Za-z]{2,}emails.txt# 提取 Unicode 字符串UTF-16LE 小端strings-el binary.dll# 提取大端 Unicode 字符串strings-eb firmware.bin# 掃描整個(gè)目錄下的所有文件forfin/usr/bin/*;doiffile$f|grep-qELF;thenecho$fstrings-n8$f|head-5fidone# 從特定文件偏移處開始提取ddifbinary.binbs1skip1024|strings-n4# 查找包含特定模式的長(zhǎng)字符串strings-n20target_binary|whileread-rline;doifecho$line|grep-qpattern;thenechoFOUND:$linefidone# 查找二進(jìn)制中被混淆的字符串RCE/CTF 常用strings binary|grep-E^[A-Za-z0-9/]{20,}$# Base64strings binary|grep-E^[0-9a-fA-F]{20,}$# Hex 字符串安全分析應(yīng)用# 檢測(cè)惡意軟件中的可疑字符串MALWARE_SAMPLEsuspicious.binecho IP 地址 strings$MALWARE_SAMPLE|grep-Eo([0-9]{1,3}\.){3}[0-9]{1,3}echo URL strings$MALWARE_SAMPLE|grep-Eohttps?://[^[:space:]]echo 命令執(zhí)行 strings$MALWARE_SAMPLE|grep-E(/bin/|cmd|exec|system|popen)echo 編碼字符串Base64 strings$MALWARE_SAMPLE|grep-E^[A-Za-z0-9/]{20,}{0,2}$echo 文件路徑 strings$MALWARE_SAMPLE|grep-E^/(etc|tmp|home|var|opt)/echo 注冊(cè)表鍵PE 文件 strings-el$MALWARE_SAMPLE|grep-iregistry\|hkey\|software與其他工具結(jié)合# strings grep: 快速定位敏感信息strings /usr/bin/ssh|grep-iprivate\|key\|rsa\|ed25519# strings sort uniq: 去重統(tǒng)計(jì)strings /usr/bin/bash|sort|uniq-c|sort-rn|head-20# strings file: 批量掃描識(shí)別find/tmp/unknown/-typef|whilereadf;doecho$f($(file-b$f)) strings-n8$f|head-3done# strings xxd: 定位字符串的精確位置STRING_POS$(strings-td binary|greptarget_string|awk{print $1})if[-n$STRING_POS];thenxxd-s$STRING_POS-l64binaryfi# 結(jié)合 readelf 分析 ELF 結(jié)構(gòu)readelf-a/usr/bin/lsstrings-n10/usr/bin/ls|grepGCC性能注意事項(xiàng)strings在處理大型文件GB 級(jí)別時(shí)可能需要較長(zhǎng)時(shí)間。以下是一些優(yōu)化策略# 大文件分塊處理whileddifhuge_file.binbs1Mskip$offsetcount12/dev/null;dostrings-n8/tmp/chunk_*offset$((offset1))done# 僅掃描文件頭部head-c10M huge_file.bin|strings-n6# 并行處理多個(gè)大文件ls*.bin|parallelstrings -n 8 {} {.}.strings# 限制輸出長(zhǎng)度strings-n12large_binary|head-1000top_strings.txtstrings是最直接的二進(jìn)制文件探索工具。它以最簡(jiǎn)單的方式讓你窺見(jiàn)二進(jìn)制內(nèi)部的文本世界無(wú)論是調(diào)試程序、安全分析還是簡(jiǎn)單的好奇心strings都是第一選擇。