ShizuWall
Файрвол для Android без VPN.
Приватность прежде всего, только локально, работает через Shizuku / локальный ADB-демон / root.
English ·
Türkçe ·
Deutsch ·
Italiano ·
Português ·
Čeština ·
Русский ·
العربية ·
हिन्दी ·
中文 ·
日本語
## Почему ShizuWall
- **Без VPN**: Не перехватывает пакеты и избавляет от побочных эффектов постоянного VPN-туннеля.
- **Управление сетью для каждого приложения**: Включает и отключает сеть приложений через средства chain-3 в `connectivity` Android.
- **Приватность по умолчанию**: Работает офлайн, без аналитики, телеметрии и слежки.
- **Готов к автоматизации**: Поддерживает команды `adb broadcast` для скриптов и автоматизации задач.
- **Способы управления**: ShizuWall предлагает три удобных способа управлять файрволом: плитка в быстрых настройках, виджет и плавающая кнопка файрвола.
## Скриншоты
## Требования
- Android 11 (API 30) или новее
- Один из бэкендов управления: Shizuku, локальный ADB-демон или root-доступ
## Бэкенды управления
ShizuWall поддерживает три способа выполнения команд файрвола:
| Способ | Описание | Настройка |
|--------|---------|---------|
| **Shizuku** | Безопасный API, взаимодействующий с системными службами. Требуется приложение Shizuku. Форки поддерживаются. | Установите и настройте приложение Shizuku, выдайте разрешения |
| **Root** | Прямой root-доступ. | Получите root стандартными способами |
| **LibADB (LADB)** | Использует встроенную функцию «Беспроводная отладка», чтобы телефон вёл себя как компьютер, подключённый по USB. Это позволяет приложению вносить сложные системные изменения без компьютера, root-прав и дополнительных приложений вроде Shizuku. | Включите беспроводную отладку и выполните сопряжение в параметрах разработчика (руководство есть в приложении) |
## Как это работает
ShizuWall использует **Chain 3** Android (цепочку подключений) для управления сетью каждого приложения. Через Shizuku или локальный демон выполняются такие системные команды:
### Команды ADB Chain 3
```bash
# Включить механизм файрвола
cmd connectivity set-chain3-enabled true
# Заблокировать конкретное приложение
cmd connectivity set-package-networking-enabled false
# Разблокировать конкретное приложение
cmd connectivity set-package-networking-enabled true
# Отключить механизм файрвола
cmd connectivity set-chain3-enabled false
```
**Chain 3** — механизм платформы Android, который перехватывает и контролирует сетевой доступ каждого пакета на системном уровне, обеспечивая точное управление файрволом.
## Автоматизация (ADB broadcast)
Вы можете управлять ShizuWall из скриптов и средств автоматизации.
**Действие**: `shizuwall.CONTROL`
**Компонент**: `com.arslan.shizuwall/.receivers.FirewallControlReceiver`
**Дополнительные параметры**
- `state` (boolean, обязательный): `true` = включить, `false` = выключить
- `apps` (строка, необязательный): список пакетов через запятую. Если не указан, ShizuWall использует сохранённые выбранные приложения.
### Примеры
```bash
# Включить файрвол для сохранённых выбранных приложений
adb shell am broadcast -a shizuwall.CONTROL -n com.arslan.shizuwall/.receivers.FirewallControlReceiver --ez state true
# Выключить файрвол для сохранённых выбранных приложений
adb shell am broadcast -a shizuwall.CONTROL -n com.arslan.shizuwall/.receivers.FirewallControlReceiver --ez state false
# Включить файрвол для конкретных пакетов
adb shell am broadcast -a shizuwall.CONTROL -n com.arslan.shizuwall/.receivers.FirewallControlReceiver --ez state true --es apps "com.example.app1,com.example.app2"
# Выключить файрвол для конкретных пакетов
adb shell am broadcast -a shizuwall.CONTROL -n com.arslan.shizuwall/.receivers.FirewallControlReceiver --ez state false --es apps "com.example.app1,com.example.app2"
```
> Чтобы броадкасты срабатывали, должен быть активен один из бэкендов управления (Shizuku, локальный ADB-демон или root).
## Примечания и ограничения
- Правила файрвола сбрасываются при перезагрузке — так устроена платформа Android.
- Перезагрузка устройства снимает все активные блокировки сети, установленные ShizuWall.
- Приложение запрашивает `android.permission.INTERNET` только для сопряжения по беспроводной отладке (подключение к локальному демону LibADB).
## Сборка (для разработчиков)
### Приложение
```bash
./gradlew assembleRelease
```
### Демон
Демон, работающий на устройстве (`SystemDaemon.java`), автоматически компилируется в DEX (`daemon.bin`) в рамках обычной сборки Gradle задачей `compileDaemonDex`. Он собирается из исходников с помощью `javac` и `d8` из build-tools Android SDK и упаковывается как ресурс — готового бинарника в репозитории нет, поэтому серверы воспроизводимых сборок (например, F-Droid) создают его сами.
Никаких ручных действий не требуется; `./gradlew assembleRelease` собирает и его. Задачу можно запустить и отдельно:
```bash
./gradlew :app:compileDaemonDex
```
## Отказ от ответственности: безопасность и распространение
ShizuWall предоставляется **«как есть»**, без каких-либо гарантий.
Используя это приложение, вы подтверждаете, что оно опирается на расширенные системные разрешения (Shizuku/ADB/root), и принимаете все связанные риски. Разработчик не несёт ответственности за ущерб, включая нестабильность системы, потерю данных, перебои в работе служб или последствия блокировки сети.
**Официальное распространение и риски третьих сторон**
Разработчики и участники проекта ShizuWall не несут никакой ответственности за ущерб, нарушения безопасности, заражение вредоносным ПО или потерю данных, возникшие в результате загрузки, установки или использования APK-файлов, полученных из сторонних источников. ShizuWall официально разрабатывается и распространяется исключительно через Google Play Store, официальный репозиторий на GitHub и F-Droid. ShizuWall не владеет, не управляет и не поддерживает никакой официальный веб-сайт. Любой сайт или сторонняя платформа, утверждающие, что предлагают официальные загрузки ShizuWall, не имеют к проекту отношения и не авторизованы. Пользователи, получающие приложение вне официальных каналов, делают это строго на свой риск.
**ShizuWall — приложение с открытым исходным кодом. Разработчик не несёт финансовой, моральной или юридической ответственности за использование этого приложения. Вся ответственность лежит на пользователе.**
Всегда проверяйте, какие приложения вы блокируете.
## Лицензия
Распространяется по лицензии **GNU General Public License v3.0 (GPLv3)**. См. [LICENSE.md](../LICENSE.md).
Входящие в состав данные сигнатур трекеров не являются кодом и имеют собственную лицензию (ODbL v1.0). См. [TRACKER_DATA_LICENSE.md](../TRACKER_DATA_LICENSE.md).
## Поддержать
- ⭐ Поставьте звезду проекту: [GitHub Stars](https://github.com/AhmetCanArslan/ShizuWall/stargazers)
- ☕ Сделать пожертвование: [Buy Me a Coffee](https://buymeacoffee.com/ahmetcanarslan)
- ⬇️ Скачать: [Google Play Store](https://play.google.com/store/apps/details?id=com.arslan.shizuwall)
## Благодарности
- [Shizuku](https://github.com/RikkaApps/Shizuku) — API, обеспечивающий выполнение привилегированных команд.
- [LibADB](https://github.com/MuntashirAkon/libadb-android) — Поддержка беспроводной отладки и подключения к демону.
- [Exodus Privacy](https://exodus-privacy.eu.org/) — База сигнатур трекеров, используемая для обнаружения трекерных SDK внутри приложений, под лицензией [ODbL v1.0](https://opendatacommons.org/licenses/odbl/1-0/). ShizuWall включает сокращённую копию и никогда не обращается к их API. См. [TRACKER_DATA_LICENSE.md](../TRACKER_DATA_LICENSE.md).