
DeadManSwitch in rust with several triggers (remote local and network)

死亡开关(Dead Man Switch)是一款用 Rust 编写的跨平台安全应用程序,可在紧急情况下自动保护敏感数据。该应用程序监控多种触发机制,并在激活时执行即时系统锁定程序,包括加密卷卸载和受控的系统关机。
编辑 src/config.rs 以自定义设置:
pub fn default() -> Result<Self> {
Self::new(
"YOUR_TELEGRAM_BOT_TOKEN".to_string(),
3600, // 心跳超时时间(秒)
45370, // 网络广播端口
"trigger_dms".to_string(), // 网络触发消息
"execute".to_string(), // 手动触发命令
0x090c, // USB 供应商 ID
0x1000, // USB 产品 ID
"auto".to_string(), // Flic IP(自动检测)
5551, // Flic 端口
)
}
@BotFather/newbot 命令基本形式:
./DeadManSwitch --mode <模式> [--trigger]
--mode:逗号分隔的模式列表。如果省略,则使用 all。--trigger:立即执行操作并显示告警界面,无需等待任何外部触发。可用模式:
timer – Telegram 心跳计时器bot – Telegram 手动触发net – UDP 广播监听usb – USB VID/PID 触发flic – Flic 按钮触发all – 以上所有模式示例:
# 所有触发方式(默认)
./DeadManSwitch
# 仅 Telegram 心跳 + USB
./DeadManSwitch --mode timer,usb
# 仅网络广播
./DeadManSwitch --mode net
# 仅手动触发
./DeadManSwitch --trigger
在指定超时时间内未签到后自动触发。
配置:
telegram_heartbeat_timeout: 3600 // 秒
执行:
./DeadManSwitch --mode timer
Telegram 命令:
/alive - 重置倒计时器/status - 查询剩余时间行为:
远程手动控制界面。
设置:
执行:
./DeadManSwitch --mode bot
命令:
/dms execute - 手动触发激活基于局域网的触发机制。
配置:
broadcast_port: 45370
broadcast_message: "trigger_dms"
执行:
# 受保护机器
./DeadManSwitch --mode net
# 从网络触发
echo "trigger_dms" | nc -u -b 255.255.255.255 45370
设备连接时基于硬件的激活。
识别设备 ID:
git clone https://github.com/BlackSnufkin/Rusty-Playground.git
cd Rusty-Playground/USB_mon
cargo run
# 连接设备并记录 vendor:product ID
配置:
usb_vendor_id: 0x090c
usb_product_id: 0x1000
执行:
./DeadManSwitch --mode usb
物理按钮激活机制。
服务器安装:
按钮配对:
./simpleclient scan
./simpleclient connect <button_address>
配置:
flic_ip: "192.168.1.242".to_string() // 或 "auto" 用于自动检测
执行:
./DeadManSwitch --mode flic
激活: 长按按钮
ActionExecutor 在触发时卸载并关机