#文件传输 #HDMI #隐写术 #隐藏信息

bin+lib hdmifiletransporter

使用 HDMI(通过 HDMI 的视频)在两台计算机之间传输文件的实验性证明

3 个版本

0.1.2 2023 年 4 月 21 日
0.1.1 2023 年 4 月 20 日
0.1.0 2023 年 4 月 18 日

#184 in 视频

每月 28 次下载

Apache-2.0

49KB
959

HDMI 文件传输器

github crates.io docs.rs CI Build codecov

本存储库是 Rust 实现的实验性证明,通过利用 HDMI(在第二台计算机上使用 USB)在两台计算机之间通过视频传输文件。发送信息的计算机可能处于一个安全环境,对互联网或可连接的 USB 设备的访问非常受限。然而,显示器很少成为安全攻击的目标。因此,该方案是通过 HDMI 发送文件,并在第二台计算机上使用带有 USB 的视频卡捕获文件,该计算机没有安全限制。

有关概念和代码的详细信息,请参阅以下文章

  1. 使用 HDMI 在计算机之间传输文件的方法(第 1 部分:计划)

代码库的范围

代码库包含一个 Rust 脚本,该脚本将文件注入到视频文件中。它还执行另一部分:从视频文件到文件。

不包含的范围是 HDMI 部分。详细信息可以在所写的几篇文章中找到。

库用户信息

安装

cargo add hdmifiletransporter

CLI 用户信息

待办事项:我们可以与 CLI 一起使用的不同选项

存储库开发者信息

本节是为向本存储库做出贡献的开发人员准备的。其中包含一些关于如何执行开发任务的提示。

需要安装什么?

您需要安装正确的工具链

rustup toolchain install stable
rustup default stable

要执行测试覆盖率,您需要安装

cargo install grcov
rustup component add llvm-tools-preview

要生成基准图,您需要安装 GnuPlot

sudo apt update
sudo apt install gnuplot

# To confirm that it is properly installed:
which gnuplot

在 WSL 上使用 opencv

sudo su 
apt install libopencv-dev clang libclang-dev
sudo apt install cmake

执行

使用 cargo run 获取所有选项

cargo run -- -help

测试

cargo test

测试覆盖率

在运行覆盖率之前,您必须安装一些组件

cargo install grcov
rustup component add llvm-tools-preview

然后,您可以运行

./coverage.sh

更多解释请参阅 Mozilla grcov 网站

文档

文档是从源代码使用

cargo doc --open  -document-private-items

测试 CLI

所有命令都对用户有效,但使用

hdmifiletransporter -m inject -i testAssets/test1.zip -o out1.mp4

将文本注入到视频中

cargo run -- -m inject -i testAssets/text1.txt -o outputs/out1.avi --fps 30 --height 1080 --width 1920 --size 1

cargo run -- -m inject -i testAssets/text1.txt -o outputs/out1.avi --fps 30 --height 1080 --width 1920 --size 1 -a bw

从视频中提取文本

cargo run -- -m extract -i outputs/out1.avi -o outputs/text1.txt --fps 30 --height 1080 --width 1920 --size 1

cargo run -- -m extract -i outputs/out1.avi -o outputs/text1.txt --fps 30 --height 1080 --width 1920 --size 1 -a bw

基准

cargo bench

发布

测试 Cargo 内容

cargo package --allow-dirty

然后转到 hdmifiletransporter/target/package/ 以查看内容

推送新的货物包

cargo login
cargo publish --dry-run
cargo publish

调试

如果您想使用VsCode设置断点,必须安装CodeLLDB

依赖项

~19MB
~142K SLoC