
Aplicativo de mensagens descentralizado, criptografado e ponto a ponto sobre redes mesh Bluetooth. Sem necessidade de internet, servidores ou números de telefone. Possui criptografia X25519 + AES-256-GCM, comandos no estilo IRC e compatibilidade multiplataforma com iOS.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10897/4adee5766836e3812e7f0051931df8c63da05d8d8db9a77f8c491d1ea45d195b.png" alt="Logo do Bitchat para Android" width="480">
</p>
> [!WARNING]
> Este software não recebeu revisão de segurança externa e pode conter vulnerabilidades, podendo não cumprir os objetivos de segurança declarados. Não o utilize para casos de uso sensíveis e não confie na sua segurança até que tenha sido revisado. Trabalho em andamento.
# bitchat para Android
Um aplicativo de mensagens seguro, descentralizado e peer-to-peer que funciona em redes mesh Bluetooth. Sem necessidade de internet para conversas mesh, sem servidores, sem números de telefone – apenas comunicação criptografada pura. O Bitchat também suporta canais geohash, que utilizam uma conexão com a internet para conectar você a outras pessoas na sua área geográfica.
Esta é a **portabilidade para Android** do [aplicativo bitchat iOS original](https://github.com/jackjackbits/bitchat), mantendo 100% de compatibilidade de protocolo para comunicação entre plataformas.
## Instalar o bitchat
Você pode baixar a versão mais recente do bitchat para Android na [página de Releases do GitHub](https://github.com/permissionlesstech/bitchat-android/releases).
Ou você pode:
[<img alt="Disponível no Google Play" height="60" src="https://assets.kitploit.com/production/public/readmes/10897/f72611e2df8e88204009fd896d05d5e8e83c77009c63943bbffa169559934849.png"/>](https://play.google.com/store/apps/details?id=com.bitchat.droid)
**Instruções:**
1. **Baixar o APK:** No seu dispositivo Android, acesse o link acima e baixe o arquivo `.apk` mais recente. Abra-o.
2. **Permitir fontes desconhecidas:** Em alguns dispositivos, antes de instalar o APK, pode ser necessário ativar "Instalar de fontes desconhecidas" nas configurações do dispositivo. Geralmente, isso é encontrado em **Configurações > Segurança** ou **Configurações > Apps e notificações > Acesso especial a apps**.
3. **Instalar:** Abra o arquivo `.apk` baixado para iniciar a instalação.
## Licença
Este projeto é disponibilizado em domínio público. Consulte o arquivo [LICENSE](https://github.com/permissionlesstech/bitchat-android/blob/main/LICENSE.md) para detalhes.
## Funcionalidades
- **✅ Compatível entre Plataformas**: Compatibilidade total de protocolo com o bitchat iOS
- **✅ Rede Mesh Descentralizada**: Descoberta automática de pares e retransmissão de mensagens em múltiplos saltos via Bluetooth LE
- **✅ Criptografia de Ponta a Ponta**: Troca de chaves X25519 + AES-256-GCM para mensagens privadas
- **✅ Conversas baseadas em Canais**: Mensagens em grupo baseadas em tópicos com proteção opcional por senha
- **✅ Armazenar e Encaminhar**: Mensagens armazenadas em cache para pares offline e entregues quando eles reconectam
- **✅ Privacidade em Primeiro Lugar**: Sem contas, sem números de telefone, sem identificadores persistentes
- **✅ Comandos ao estilo IRC**: Interface familiar com comandos `/join`, `/msg`, `/who`
- **✅ Retenção de Mensagens**: Salvamento opcional de mensagens em todo o canal, controlado pelos proprietários do canal
- **✅ Limpeza de Emergência**: Toque triplo no logotipo para limpar instantaneamente todos os dados
- **✅ Interface Android Moderna**: Jetpack Compose com Material Design 3
- **✅ Temas Claro/Escuro**: Estética inspirada em terminais que combina com a versão iOS
- **✅ Otimização de Bateria**: Varredura adaptativa e gerenciamento de energia
## Configuração no Android
### Pré-requisitos
- **Android Studio**: Arctic Fox (2020.3.1) ou mais recente
- **Android SDK**: API level 26 (Android 8.0) ou superior
- **Kotlin**: 1.8.0 ou mais recente
- **Gradle**: 7.0 ou mais recente
### Instruções de Compilação
1. **Clone o repositório:**
```bash
git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
```
2. **Abra no Android Studio:**
```bash
# Abra o Android Studio e selecione "Open an Existing Project"
# Navegue até o diretório bitchat-android
```
3. **Compile o projeto:**
```bash
./gradlew build
```
4. **Instale no dispositivo:**
```bash
./gradlew installDebug
```
### Compilação de Desenvolvimento
Para compilações de desenvolvimento com depuração ativada:
```bash
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
```
### Compilação de Lançamento
Para lançamentos de produção:
```bash
./gradlew assembleRelease
```
## Requisitos Específicos do Android
### Permissões
O aplicativo requer as seguintes permissões (solicitadas automaticamente):
- **Bluetooth**: Funcionalidade central BLE
- **Localização**: Necessária para varredura BLE no Android
- **Rede**: Expanda sua mesh através de relays públicos na internet
- **Notificações**: Alertas de mensagens e atualizações em segundo plano
### Requisitos de Hardware
- **Bluetooth LE (BLE)**: Necessário para rede mesh
- **Android 8.0+**: API level 26 mínimo
- **RAM**: 2GB recomendado para desempenho ideal
## Uso
### Comandos Básicos
- `/j #canal` - Entrar ou criar um canal
- `/m @nome mensagem` - Enviar uma mensagem privada
- `/w` - Listar usuários online
- `/channels` - Mostrar todos os canais descobertos
- `/block @nome` - Bloquear um par de enviar mensagens
- `/block` - Listar todos os pares bloqueados
- `/unblock @nome` - Desbloquear um par
- `/clear` - Limpar mensagens do chat
- `/pass [senha]` - Definir/alterar senha do canal (apenas proprietário)
- `/transfer @nome` - Transferir propriedade do canal
- `/save` - Alternar retenção de mensagens para o canal (apenas proprietário)
### Primeiros Passos
1. **Instale o aplicativo** no seu dispositivo Android (requer Android 8.0+)
2. **Conceda permissões** de Bluetooth e localização quando solicitado
3. **Inicie o bitchat** - ele iniciará automaticamente a rede mesh
4. **Defina seu apelido** ou use o gerado automaticamente
5. **Conecte-se automaticamente** a usuários próximos do bitchat iOS e Android
6. **Entre em um canal** com `/j #geral` ou comece a conversar no público
7. **As mensagens são retransmitidas** através da rede mesh para alcançar pares distantes
### Funcionalidades da Interface Android
- **Interface Jetpack Compose**: Interface moderna Material Design 3
- **Temas Claro/Escuro**: Estética inspirada em terminais que combina com iOS
- **Feedback Tátil**: Vibrações para interações e notificações
- **Layout Adaptável**: Otimizado para vários tamanhos de tela Android
- **Status da Mensagem**: Confirmações de entrega e leitura em tempo real
- **Indicadores RSSI**: Cores de intensidade de sinal para cada par
### Funcionalidades de Canais
- **Proteção por Senha**: Proprietários de canais podem definir senhas com `/pass`
- **Retenção de Mensagens**: Proprietários podem ativar o salvamento obrigatório de mensagens com `/save`
- **Menções @**: Use `@apelido` para mencionar usuários (com autocompletar)
- **Transferência de Propriedade**: Passe o controle para usuários de confiança com `/transfer`
## Segurança e Privacidade
### Criptografia
- **Mensagens Privadas**: Troca de chaves X25519 + criptografia AES-256-GCM
- **Mensagens de Canal**: Derivação de senha Argon2id + AES-256-GCM
- **Assinaturas Digitais**: Ed25519 para autenticidade das mensagens
- **Sigilo Perfeito**: Novos pares de chaves gerados a cada sessão
### Funcionalidades de Privacidade
- **Sem Registro**: Sem contas, e-mails ou números de telefone necessários
- ** Efêmero por Padrão**: Mensagens existem apenas na memória do dispositivo
- **Tráfego de Cobertura**: Atrasos aleatórios e mensagens fictícias impedem análise de tráfego
- **Limpeza de Emergência**: Toque triplo no logotipo para limpar instantaneamente todos os dados
- **Suporte Tor Integrado**: Integração de rede Tor integrada para maior privacidade quando a conectividade com a internet estiver disponível
## Desempenho e Eficiência
### Compressão de Mensagens
- **Compressão LZ4**: Compressão automática para mensagens >100 bytes
- **Economia de 30-70% de largura de banda** em mensagens de texto típicas
- **Compressão inteligente**: Ignora dados já comprimidos
### Otimização de Bateria
- **Modos de Energia Adaptativos**: Ajusta automaticamente com base no nível da bateria
- Modo desempenho: Funcionalidades completas ao carregar ou bateria >60%
- Modo equilibrado: Operação padrão (30-60% de bateria)
- Economia de energia: Varredura reduzida com bateria <30%
- Potência ultrabaixa: Modo de emergência com bateria <10%
- **Eficiência em segundo plano**: Economia automática de energia quando o aplicativo está em segundo plano
- **Varredura configurável**: Ciclo de trabalho se adapta ao estado da bateria
### Eficiência de Rede
- **Filtros Bloom Otimizados**: Detecção de duplicatas mais rápida com menos memória
- **Agregação de Mensagens**: Agrupa mensagens pequenas para reduzir transmissões
- **Limites de Conexão Adaptativos**: Ajusta conexões de pares com base no modo de energia
## Arquitetura Técnica
### Protocolo Binário
O bitchat usa um protocolo binário eficiente otimizado para Bluetooth LE:
- Formato compacto de pacote com campo de tipo de 1 byte
- Roteamento de mensagens baseado em TTL (máx. 7 saltos)
- Fragmentação automática para mensagens grandes
- Deduplicação de mensagens via IDs únicos
### Rede Mesh
- Cada dispositivo atua como cliente e periférico
- Descoberta automática de pares e gerenciamento de conexão
- Armazenar e encaminhar para entrega de mensagens offline
- Ciclo de trabalho adaptativo para otimização da bateria
### Otimizações Específicas do Android
- **Arquitetura de Corrotinas**: Operações assíncronas para rede mesh
- **Kotlin Coroutines**: Operações mesh simultâneas seguras para threads
- **EncryptedSharedPreferences**: Armazenamento seguro para configurações do usuário
- **Consciente do Ciclo de Vida**: Manipulação adequada do ciclo de vida do aplicativo Android
- **Otimização de Bateria**: Serviço em primeiro plano e varredura adaptativa
## Arquitetura Técnica do Android
### Componentes Principais
1. **BitchatApplication.kt**: Inicialização no nível do aplicativo e injeção de dependência
2. **MainActivity.kt**: Atividade principal que gerencia permissões e hospedagem da interface
3. **ChatViewModel.kt**: Padrão MVVM gerenciando estado do aplicativo e lógica de negócios
4. **BluetoothMeshService.kt**: Rede mesh BLE principal (função central + periférica)
5. **EncryptionService.kt**: Operações criptográficas usando BouncyCastle
6. **BinaryProtocol.kt**: Codificação/decodificação de pacotes binários compatível com o formato iOS
7. **ChatScreen.kt**: Interface Jetpack Compose com Material Design 3
### Dependências
- **Jetpack Compose**: Interface declarativa moderna
- **BouncyCastle**: Operações criptográficas (X25519, Ed25519, AES-GCM)
- **Biblioteca BLE Nordic**: Operações Bluetooth LE confiáveis
- **Kotlin Coroutines**: Programação assíncrona
- **LZ4**: Compressão de mensagens (quando ativada)
- **EncryptedSharedPreferences**: Armazenamento local seguro
### Compatibilidade do Protocolo Binário
A implementação Android mantém 100% de compatibilidade de protocolo binário com iOS:
- **Formato de Cabeçalho**: Estrutura de cabeçalho idêntica de 13 bytes
- **Tipos de Pacote**: Mesmos tipos de mensagem e lógica de roteamento
- **Criptografia**: Algoritmos criptográficos idênticos e troca de chaves
- **UUIDs**: Mesmos identificadores de serviço e característica Bluetooth
- **Fragmentação**: Fragmentação de mensagens compatível para conteúdo grande
## Publicação no Google Play
### Preparação
1. **Atualize as informações da versão:**
```kotlin
// In app/build.gradle.kts
defaultConfig {
versionCode = 2 // Incrementar para cada lançamento
versionName = "1.1.0" // Versão visível ao usuário
}
```
2. **Crie uma compilação de lançamento assinada:**
```bash
./gradlew assembleRelease
```
3. **Gere o pacote do aplicativo (recomendado para Play Store):**
```bash
./gradlew bundleRelease
```
### Requisitos da Play Store
- **API Alvo**: API Android mais recente (atualmente 34)
- **Política de Privacidade**: Necessária para aplicativos que solicitam permissões sensíveis
- **Permissões do Aplicativo**: Justifique o uso de Bluetooth e localização
- **Classificação de Conteúdo**: Preencha questionário para conteúdo adequado à idade
### Distribuição
- **Google Play Store**: Canal principal de distribuição
- **F-Droid**: Para distribuição de código aberto
- **APK Direto**: Para testes e desenvolvimento
## Comunicação entre Plataformas
Esta portabilidade Android permite comunicação perfeita com o aplicativo bitchat iOS original:
- **iPhone ↔ Android**: Mensagens bidirecionais completas
- **Grupos Mistos**: Usuários iOS e Android nos mesmos canais
- **Paridade de Funcionalidades**: Todos os comandos e criptografia funcionam entre plataformas
- **Sincronização de Protocolo**: Formato de mensagem e comportamento de roteamento idênticos
**Versão iOS**: Para usuários de iPhone/iPad, obtenha o bitchat original em [github.com/jackjackbits/bitchat](https://github.com/jackjackbits/bitchat)
## Contribuindo
Contribuições são bem-vindas! Áreas-chave para melhoria:
1. **Desempenho**: Otimização da bateria e confiabilidade da conexão
2. **UI/UX**: Funcionalidades adicionais do Material Design 3
3. **Segurança**: Funcionalidades criptográficas aprimoradas
4. **Testes**: Cobertura de testes unitários e de integração
5. **Documentação**: Documentação da API e guias de desenvolvimento
## Suporte e Problemas
- **Relatar Bugs**: [Crie uma issue](../../issues) com informações do dispositivo e logs
- **Solicitar Funcionalidades**: [Inicie uma discussão](https://github.com/orgs/permissionlesstech/discussions)
- **Problemas de Segurança**: Envie preocupações de segurança em particular
- **Compatibilidade iOS**: Consulte o [repositório iOS original](https://github.com/jackjackbits/bitchat)
Para problemas específicos do iOS, consulte o [repositório original do bitchat iOS](https://github.com/jackjackbits/bitchat).