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