yarad

repo

why

無かったor動かなかったので

なんかPythonの奴があった気がするけど、Pythonはなぁという気持ちになったのと、Rustでこういうプログラムを作ってみたくなったのでやっています。

ラボユースの夏合宿の時にガーっと書いたものの、まだ完成とはいい難い状況。

初めたのは2年くらい前ですが、全然進捗が無いのでここで共有して火をつけようという魂胆です。

usage

一応clamd互換のAPIを意識しています。

プロトコルはかなり似せているのでclamdscanでも動くと思います

$ ./target/release/yaradscan --help
Usage: yaradscan [OPTIONS] <COMMAND>

Commands:
  ping           ping to daemon
  version        daemon version
  reload         reload daemon
  shutdown       shutdown daemon
  scan           scan
  cont-scan      Scan the file or directory at the given path (recursively) and don't stop the scanning when a malware found
  multi-scan     Scan the file or directory at the given path (recursively) using multi thread
  instream-scan  Scan the file inside stream
  help           Print this message or the help of the given subcommand(s)

Options:
  -r, --report <REPORT>  Save scan report in FILE
  -h, --help             Print help
  -V, --version          Print version
$ ./target/release/yaradscan scan /bin/ls
OK: /bin/ls
$ nc -U /var/run/yarad/yarad.ctl
nSCAN /bin/ls
OK: /bin/ls
$ sudo RUST_LOG=info ./target/release/yarad -c config_example.yaml --foreground start
[2023-12-21T13:12:45Z INFO  yarad] Starting yarad
[2023-12-21T13:12:45Z INFO  yarad::daemon] yarad started
[2023-12-21T13:12:45Z INFO  yarad::sock] Listening on /var/run/yarad/yarad.ctl, perm 0o666
[2023-12-21T13:12:45Z INFO  yarad::daemon] starting main loop
[2023-12-21T13:12:56Z INFO  yarad::protocol] Delimiter type: z
[2023-12-21T13:12:56Z INFO  yarad::protocol] Parsing command: SCAN /bin/ls
[2023-12-21T13:12:56Z INFO  yarad::daemon] received 1 commands
[2023-12-21T13:12:56Z INFO  yarad::daemon] Received scan request for /bin/ls
[2023-12-21T13:12:56Z INFO  yarad::daemon] OK: /bin/ls

impl

現状実装済みのコマンドは

ですが、まずはINSTREAMみたいな感じでstreamで渡された内容を直接スキャンする機能も作りたいですね。

ディレクトリの再帰的なスキャンも実装したいと思ったらもうしてありました。

つまり通常使用では普通に使えそう。ということです。

もしよかったら使ってみて、フィードバックをください。

おわりに

この記事はn01e0 Advent Calendar 2023の20日目の記事です。

明日はあるかわかりません

また、IPFactory OB Advent Calendar 2023の20日目の記事も兼ねています。