Spoilerwallで遊ぶ
概要
TCPアクセスに対して映画のネタバレを返す次世代(?)ファイアウォールSpoilerwallなるものがTLに流れてきたので試してみた。
- 仮想化環境: Virtualbox
- クライアント: CentOS7.3
- サーバー: Ubuntu 16.04
手順
ほぼReadmeの通りだが、一部Virtualbox用に変更。
# リポジトリをクローン $ git clone git@github.com:infobyte/spoilerwall.git # iptablesでenp0s3(Wi-Fiルータに繋がっているブリッジインタフェース)に対する全TCP通信の宛先IP/ポート番号を変換する設定を追加 $ sudo iptables -A PREROUTING -t nat -i enp0s3 -p tcp --dport 1:65535 -j DNAT --to-destination 127.0.0.1:8080 # localhostにルーティングする場合は必要……? $ sudo sysctl -w net.ipv4.conf.enp0s3.route_localnet=1
Readmeではserver-spoiler.pyを編集してspoilerwallが待ち受けるIPアドレス/ポート番号を設定することになっているが、デフォルトで127.0.0.1:8080が設定されているのでこのまま動かす。
$ cd ~/spoilerwall $ python2 server-spoiler.py
これでサーバー側は準備OK。同じセグメントに属するクライアントからcurlしてみる。
$ curl http://192.168.100.125/ Pokmon: The Rise of Darkrai darkrai dies curl: (56) Recv failure: Connection reset by peer
劇場版ポケモンでダークライが死ぬというネタバレを食らった後、追い打ちをかけるようにRSTされる。
Chromeでアクセスすると「このサイトにアクセスできません」になった。ネタバレは単にHTTPパケットにDataくっつけているだけ(pcapもしてみた)なので当然か。
おわりに
spoilerとは「台無しにする人」という意味があるらしい。ネタバレ情報はspoiler.jsonにまとまっているようだが、それをいじって遊ぶのはまた別のお話。