script用法速查-终端录像与回放,再也不怕写WP的时候忘了命令辣"

admin 2026-11-06 03:07:21 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

script用法速查-终端录像与回放,再也不怕写WP的时候忘了命令辣

原创

泷羽Sec静安
泷羽Sec静安

泷羽Sec-静安

2026年11月4日 23:34
云南

去阅读

Linux 自带的\"终端录像机\"——把整个 shell 会话(输入 + 输出 + 颜色 + 控制字符)原封不动录下来。
PG/OSCP 实战:复盘、写 WP、留 evidence 的神器。录完一个 session,回放 = 完整 WP 草稿。

1. 基础用法

# 启动录制(默认录到 typescript 文件)
script
# 提示 \"Script started on ...\",进入新 shell
# ... 你的所有操作都会被录 ...
exit
# 提示 \"Script done on ...\"

# 指定输出文件
script session.log

# 静默模式(不显示 \"Script started/done\" 那两行)
script -q session.log

# 追加(默认是覆盖)
script -a session.log

录出来的文件是什么:

  • • 完整保真:包含 ANSI 颜色、转义序列、Ctrl-C 字符
  • • 包含 timing 信息(如果你加了 -t)
  • • 文件所有权归当前用户,默认权限 644(其他人能读,注意敏感操作)

2. 实战关键选项

# -c, --command <cmd>:录一个具体命令就退出(不进入交互 shell)
script -c \"nmap -sV target\" nmap.log

# -f, --flush:每写一行就 flush 到磁盘(实时看,像 tail -f)
#   适合长时间任务边录边看
script -f session.log
# 然后在另一个终端:tail -f session.log

# -q, --quiet:静默,不显示 \"Script started\" / \"Script done\"
script -q session.log

# -a, --append:追加到已有文件
script -a session.log

# -t[FILE], --timing[=FILE]:把 timing 数据也录下来(每个字符的延迟)
#   关键 - 重放时能模拟\"原始速度\",可以慢动作回放
script -t=timing.log session.log

# -e, --return:返回被录制 shell 的 exit code
script -e -c \"./exploit.sh\" exploit.log
echo $?   # 拿到 exploit.sh 的退出码,不是 script 的

# -V, --version
# -h, --help

3. 渗透测试高频用法

3.1 完整录一个 PG 靶机打通过程(写 WP 一遍过)

# 攻击机上开始
script -q -t=/tmp/ochima.timing /tmp/ochima.full.log

# 完整的 nmap / 漏洞利用 / 提权全程
# ... 1 小时后 ...
exit

# 录完得到两个文件:
#   /tmp/ochima.full.log   - 终端完整输出
#   /tmp/ochima.timing     - 每个字符的延迟

3.2 只录一个工具的输出

# 录整个目录扫描过程
script -q -c \"gobuster dir -u http://target -w /usr/share/wordlists/...\" gobuster.log

# 录漏洞利用过程(带完整交互)
script -q -c \"python3 exploit.py 10.10.10.10 80 http://target:8338\" exploit.log

3.3 录反弹 shell 的所有操作

# 攻击机监听 + 录制一体化
script -q -c \"nc -lvnp 80\" reverse_shell.log
# 拿到 shell 后的所有命令、输出、读 flag、提权 → 全在 reverse_shell.log 里

3.4 长时间任务进度监控

# 跑 hashcat / john / ffuf 这种可能跑几小时的任务
# 实时看进度,同时录下来
script -f -c \"hashcat -m 0 hashes.txt rockyou.txt\" hashcat.log &
# 另一个终端:
tail -f hashcat.log

4. 录完怎么处理

4.1 直接 cat:会看到 ANSI 控制字符

$ cat session.log
Script started on ...[K
[1;31mroot@kali[0m:[1;34m~[0m$ id
[?2004huid=0(root) ...

看着乱——那是因为终端用 ANSI 转义序列做了颜色和光标移动,录的时候一并录下来。

4.2 干净查看的几种方法

# 1. col -b 过滤掉 backspace 类控制字符(保留颜色)
cat session.log | col -b

# 2. ansi2txt 工具(更彻底,去掉所有 ANSI 序列)
# 装:pip install ansi2txt 或 apt install colorized
ansi2txt < session.log > clean.log

# 3. 直接用 less -R 看(less 自动解释 ANSI 颜色)
less -R session.log

# 4. 用脚本回放(保留原始速度,-t 提供 timing)
scriptreplay -t timing.log -s session.log
# 脚本回放时像慢动作重放,对写 WP 时回顾操作流程很有用
# script 的 -t 在 util-linux 新版里改了语法,录制的时候不能再跟一个裸参数
# 录制用-t=timing.log
# 回访用 -t timing.log  中间是空格

4.3 提取特定行

# 找执行过的命令(通常带行首的提示符特征)
grep -E '^\\$' session.log

# 找 flag
grep -E 'flag{|FLAG{|HTB{|THM{' session.log

# 找关键错误
grep -i 'error\\|fail\\|denied' session.log

4.4 删掉\"Script started/done\" 那两行

录出来的文件头尾有这两行垃圾,开 WP 的时候要删:

# 删头
sed -i '1,2d' session.log    # 删前 2 行
# 删尾
sed -i '$d' session.log        # 删最后 1 行(\"Script done\")

# 或者直接 grep 掉
grep -v \"^Script \\(started\\|done\\)\" session.log > clean.log

5. 实战小技巧

5.1 录制 + 实时回看(边录边监控)

# 终端 A:启动录制
script -f -q session.log

# 终端 B:实时看
tail -f session.log
# 内容会随终端 A 的操作同步出现

5.2 录制时存到专门目录

# PG 考试环境建议
mkdir -p ~/pg-sessions/$(date +%Y%m%d)
cd ~/pg-sessions/$(date +%Y%m%d)
script -q -t timing.log -c \"bash\" full.log

5.3 录制敏感信息时要小心

script 录的是纯文本,会包含:

  • • 密码 / API key / token
  • • 反弹 shell 的命令(攻击者 IP / 端口)
  • • cat /etc/shadow 之类

写完 WP 后建议:

# 1. 检查有没有敏感字符串
grep -i 'password\\|api\\|key\\|token' session.log
# 2. 替换或脱敏
sed -i 's/password=[^&]*/password=REDACTED/g' session.log
# 3. 删原文件
shred -u session.log  # 安全删除

5.4 配合 scriptreplay 做\"教学视频\"

# 录的时候带 timing
script -q -t timing.log session.log

# 重放(按原始速度)
scriptreplay -t timing.log -s session.log

# 加速 / 慢放
scriptreplay -t timing.log -s session.log 2.0    # 2 倍速
scriptreplay -t timing.log -s session.log 0.5    # 半速(讲解用)

5.5 录 SSH 登录后的所有操作

# 在跳板机/堡垒机上 record
script -q /var/log/audit/ssh_session_$(whoami)_$(date +%s).log

# 之后审计能回放整个会话

6. 一句话 vs rlwrap 对比

工具 解决啥问题
rlwrap 给程序加 readline(历史/补全)
script 录下整个会话给以后看

两者正交,经常一起用:

# 录一个带历史补全的交互会话(PG 考试时神器)
script -q -c \"rlwrap nc -lvnp 80\" reverse_shell.log

> 这条组合拳 = 拿到 shell 后能 ↑↓ 翻历史命令 + 整个 session 录下来回放 = 不用记笔记也能写 WP。

    评论:0   参与:  0