温馨提示×

能否批量处理debian strings

小樊
50
2026-09-13 00:20:04
栏目: 智能运维

可以的,在 Debian 系统里“批量处理 strings”(通常指用 strings 命令从二进制/文件中提取可打印字符串)是很常见的需求。下面按不同场景给你几种实用做法。


一、对目录下所有文件批量执行 strings

1️⃣ 递归处理整个目录

find /path/to/dir -type f -exec strings {} \; > all_strings.txt

如果想带上文件名:

find /path/to/dir -type f -exec sh -c 'echo "===== $1 ====="; strings "$1"' _ {} \; > all_strings.txt

2️⃣ 只处理二进制文件(推荐)

避免对文本文件浪费时间:

find /path/to/dir -type f \
  -exec sh -c 'file "$1" | grep -q "ELF"' _ {} \; \
  -exec strings {} \; > bin_strings.txt

二、批量处理 .deb 包里的 strings

Debian 的 .deb 本质是 ar 包,里面是 control.tar.*data.tar.*

1️⃣ 解压并提取

mkdir pkg && cd pkg
dpkg-deb -x package.deb .
find . -type f -exec strings {} \; > deb_strings.txt

2️⃣ 不解压直接看(高级)

dpkg-deb -c package.deb

再用 ar + tar 手动解某一层。


三、并行加速(大目录推荐)

使用 xargs -P

find /path/to/dir -type f -print0 | \
  xargs -0 -P 8 -I {} sh -c 'strings "{}"' > all_strings.txt

四、结合 grep 做批量过滤

例如只提取含 “error” 的字符串:

find /path/to/dir -type f -exec strings {} \; | grep -i error

五、用 shell 脚本批量封装(示例)

#!/bin/bash
OUT=strings_out.txt
> "$OUT"

for f in "$@"; do
  echo "===== $f =====" >> "$OUT"
  strings "$f" >> "$OUT"
done

使用:

./extract.sh /bin/* /usr/bin/*

六、常见用途

  • 逆向分析
  • 国际化字符串提取
  • 安全审计(敏感信息泄露)
  • 软件供应链分析

如果你能说清楚:

  • 一批二进制?deb 包?日志?
  • 提取 / 过滤 / 翻译 / 去重?

我可以直接给你现成脚本

0