ドラゴンボールの「ギャルのパンティおくれ」を eBPF を使って再現するプロジェクトです。
ギャルのパンティおくれの説明はこちらにありました。
shenron: サーバプログラムpilaf: クライアントプログラムwoolong: eBPF プログラム
shenron と pilaf の通信に woolong が横入りします。(shenron, pilaf, woolong はプロセスです)
以下のような通信が発生します。
- pilaf が shenron に「いでよドラゴン」というパケットを送信
- shenron が pilaf に「願いを言え。どんな願いもひとつだけ叶えてやろう」というパケットを送信
- woolong が「2」のパケットのペイロードを「ギャルのパンティおくれーーーーーーっ!!!!!」に書き換えて、送り返す。
- Linux 環境(動作確認は Ubuntu 24.04 で実施)
- Rust
- Aya
- Development Environmentを参照して、必要なツールをインストールしてください。
- サーバ・クライアントホストで、
cargo buildを実行 - サーバ側ホストで
shenronを実行./target/debug/shenron -i <インタフェース> - クライアント側ホストで
woolongを実行sudo ./target/debug/woolong -i <インタフェース> & - クライアント側ホストで
pilafを実行./target/debug/pilaf -a <サーバのIPv4>
※ -i を指定しない場合、eth0 が使用されます。
eBPFプログラムなし/ありで実行したデモ動画です。
クライアント側で入力した内容が、サーバ側に表示されます。
その後、「たやすい願いだ」が表示されます。
「ギャルのパンティおくれ」が、サーバ側に表示されます。
その後、「たやすい願いだ」が表示されます。
- ドライバが XDP_TX をサポートしていない場合は、SKB モードでの動作や別の NIC を検討してください。
SKBモードを使用する場合、woolong/src/main.rsの以下のように変更してください。- program.attach(&iface, XdpFlags::default()) + program.attach(&iface, XdpFlags::SKB_MODE)

