В финале конкурса Facebook Hackathon студенты UC Berkeley показали, что может произойти с интернетом после принятия SOPA, если корпорации получат полный контроль над интернетом, американцам запретят файлоообмен и закроют доступ к большинству веб-сайтов, кроме нескольких крупных (например, MSN и Facebook). Студенты разработали программу Emotiface, которая кодирует файлы в base64 ASCII и передаёт их пакетами через чат Facebook.
Демо передачи анимированного GIF
Один из разработчиков объясняет, из каких модулей состоит Emotiface:
Демо передачи анимированного GIF
Один из разработчиков объясняет, из каких модулей состоит Emotiface:
- локальный веб-сервер на python, который конвертирует файлы в base64 ASCII и формирует пакеты с указанием UUID и всей остальной необходимой служебной информацией;
- пользовательский скрипт в браузере (вроде скрипта Greasemonkey) с открытым сайтом Facebook.com забирает пакеты с локального веб-сервера;
- Скрипт отслеживает входящие сообщения в чате (пакеты) и отправляет в чат исходящие пакеты;
- поскольку Facebook пытается блокировать автоматизированную отправку сообщений в чат, на локальном веб-сервере эмулируются нажатия клавиш (keydown event) с помощью bash-скрипта и AppleScript, такой способ они не смогут заблокировать, потому что он аналогичен реальному нажатию клавиш;
- поскольку Facebook блокирует около 50% пакетов после первых 15-ти, пришлось реализовать метод TCP для уведомления о доставке каждого пакета.