巧用反弹 shell 将两个异地的 TTY 同步

我们常常会遇到需要远程帮别人协助修复服务器等场景,这种时候经常会有一些信息需要对方输入,比如敏感的 API Key 或者密码等。 如果只是简单地连接对方的 SSH 服务器,则很不方便让对方进行操作,需要要求对方通过聊天工具发送这些敏感信息,这既不安全也不方便。 而且,这种方式对方也看不到我们在干什么,添加公钥的操作也比较敏感。 最好的方法,就是能够建立一个虚拟终端,对双方同步,双方都可以对这个终端进行操作。这样所有的操作对双方都非常透明。尤其是当我们在进行终端操作的教学时,优点尤其突出,因为对方可以看到整个操作过程。

思路

我们可以巧妙运用反弹 shell 的方法,再通过 screen 命令 spawn 出一个完整的 pty。然后让位于异地的两个 TTY 都作为这个 pty 的输入输出端,这样两个 TTY 就同步了。 继续阅读 »

2020 哔哩哔哩拜年祭 SP 《铁心博弈》视频 CID

今年拜年祭艾叶老师执导的 SP 《铁心博弈》着实好看。但每次都在 B 站上也不方便自己跳结局,而且互动视频的形式对想下载它的朋友也不怎么友好。(就是我想下载的啊摔!)

所以今天晚上写了一波脚本抓出来了视频的 CID。CID 如下: 继续阅读 »

使 Homebrew 在 root 权限下工作

Homebrew 是一个新型的,Ruby 编写的 macOS 包管理器。但是 Homebrew 的一些设计哲学使得它难以在多用户的情况下共同使用,并且存在诸多安全隐患。比如,Homebrew 会将 /usr/local 下的许多目录的所有者设定为当前执行用户,并禁止用户使用 root 权限安装包。这些设计哲学,使得 Homebrew 难以成为一个系统级的包管理器。但 MacPorts 和 Fink 相对难以令人满意,因此我们需要让 Homebrew 像其它包管理器一样,使用 root 安装包并不破坏原有的系统权限。

Homebrew 代码研读

通过监控进程我们可以发现,判定是否 root 权限的代码并不在 Ruby 中。而在 Shell 脚本里。 在 /usr/local/Homebrew/Library/Homebrew/brew.sh 中,我们发现了相关代码: 继续阅读 »