Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
AndroidAuto — Implementação de código aberto do lado do telefone do Android Auto com engenharia reversa de protocolo, autenticação mútua TLS, projeção de vídeo H.264, injeção de entrada por toque e streaming de dados de sensores via USB AOA. | Kitploit
Ferramentas/GitHubGitHub/mretallack/androidauto
Segurança AndroidSegurança BluetoothEngenharia ReversaSegurança Sem FioSegurança MóvelPapers e PesquisaAprendizado e Educação
GitHubmretallack/androidauto

AndroidAuto

Implementação de código aberto do lado do telefone do Android Auto com engenharia reversa de protocolo, autenticação mútua TLS, projeção de vídeo H.264, injeção de entrada por toque e streaming de dados de sensores via USB AOA.

Ver Repositório
11há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Open Android Auto

Uma implementação open-source do aplicativo lado do telefone do Android Auto. Este aplicativo é executado no seu telefone e projeta para a unidade principal do carro via USB, substituindo o APK proprietário do Google com.google.android.projection.gearhead.

⚠️ EM ANDAMENTO

Este projeto está em desenvolvimento inicial. O handshake do protocolo e a projeção de vídeo estão funcionando com uma unidade principal real. A tela do telefone é exibida com sucesso na unidade principal do carro por vários segundos antes de desconectar (a estabilidade do vídeo está sendo melhorada).

Funcionalidades

Protocolo e Conexão

  • Detecção e conexão do modo acessório USB AOA
  • Autenticação mútua TLS 1.2 (telefone como servidor)
  • Negociação de versão (protocolo v1.7)
  • Descoberta de serviços (requisição/resposta)
  • Abertura de canal nos canais alvo (vídeo, áudio, entrada, sensor)
  • Keepalive ping/pong (bidirecional)
  • Gerenciamento de solicitação/resposta de foco de áudio
  • Gerenciamento de solicitação/resposta de foco de navegação
  • Gerenciamento de solicitação de sessão de voz
  • Gerenciamento de desligamento gracioso
  • Fila de escrita prioritária (mensagens de controle sobre vídeo)
  • Aguardar concessão de foco de áudio antes de enviar áudio (timeout de 500ms por HUIG)
  • Troca de pareamento Bluetooth (BluetoothPairingRequest/Response)
  • Lidar com múltiplas reconexões USB sem reinicialização AOAP

Projeção de Vídeo

  • Codificação H.264 via MediaCodec (800x480 @ 30fps, perfil Baseline)
  • Captura de tela MediaProjection (com diálogo de permissão do usuário)
  • Configuração do canal de vídeo (fluxo SETUP → CONFIG → FOCUS → START)
  • Timestamps baseados em zero em microssegundos
  • SPS/PPS anexados a keyframes (formato Annex B)
  • Controle de fluxo (rastreamento max_unacked, backpressure)
  • Pacing de quadros (intervalos consistentes de 33ms)
  • Vídeo estável de longa duração (atualmente desconecta após ~7 segundos)
  • Negociação de resolução a partir da descoberta de serviços da unidade principal
  • Bitrate adaptativo baseado na qualidade da conexão

Entrada por Toque

  • Abertura do canal de entrada e solicitação de vinculação
  • Análise de eventos de toque (toque único e multitoque)
  • Análise de eventos de tecla (botões, teclas de mídia)
  • Mapeamento de coordenadas (unidade principal → resolução do telefone)
  • TouchInjector com criação de MotionEvent
  • Injetar eventos de toque no VirtualDisplay
  • Injeção de eventos de tecla no sistema Android

Áudio

  • Abertura e configuração do canal de áudio
  • Aguardar concessão de foco de áudio antes de enviar áudio (timeout de 500ms por HUIG)
  • Enviar AUDIO_FOCUS RELEASE na conexão inicial, depois GAIN ao reproduzir
  • Captura de áudio do telefone (MediaProjection AudioPlaybackCapture)
  • Codificação PCM/AAC e streaming para unidade principal
  • Entrada de microfone da unidade principal (comandos de voz)
  • Múltiplos canais de áudio (mídia, sistema, fala, orientação)
  • Streaming de silêncio de áudio para manter o canal ativo

Sensores

  • Abertura do canal de sensor
  • Gerenciamento de solicitação/resposta de início de sensor
  • Análise e envio de dados do modo noturno
  • Análise e envio de dados do status de condução
  • Encaminhamento de localização GPS
  • Direção da bússola
  • Velocidade do carro
  • RPM
  • Odômetro (total + quilometragem da viagem)
  • Nível de combustível e autonomia
  • Estado do freio de estacionamento
  • Posição da marcha (P/R/N/D/1-10)
  • Diagnósticos OBD-II
  • Ambiente (temperatura, pressão, chuva)
  • HVAC (temperatura alvo/atual)
  • Dead reckoning

Vídeo (adicional)

  • Negociação de resolução a partir da descoberta de serviços da unidade principal
  • Bitrate adaptativo baseado na qualidade da conexão
  • Suporte para resoluções 720p, 1080p, 1440p, 4K
  • Resoluções em modo retrato (720x1280, 1080x1920, etc.)
  • Atualizações de configuração da UI (tema, insets)

Outros

  • Coordenação de pareamento Bluetooth (A2DP, HFP)
  • Navegação turn-by-turn para o painel de instrumentos
  • Estado da navegação (manobras, faixas, distâncias, posição atual)
  • Status da mídia (informações do que está sendo reproduzido)
  • Metadados de reprodução de mídia (faixa, artista, álbum)
  • Navegador de mídia (navegar pela biblioteca de mídia do telefone a partir da unidade principal)
  • Status do telefone (notificações de estado de chamada)
  • Notificações genéricas (sistema de inscrição/cancelamento)
  • Extensões de fornecedor
  • Android Auto sem fio (handoff WiFi + Bluetooth)
  • Notificação de fechamento de canal
  • Solicitação/resposta de dispositivos conectados ao carro
  • Solicitação/resposta de troca de usuário
  • Notificação de status da bateria
  • Status de disponibilidade de chamada

⚠️ AVISO LEGAL

USE POR SUA CONTA E RISCO. Este software é fornecido "como está", sem garantia de qualquer tipo.

  • Este software pode causar comportamento inesperado na unidade principal do seu carro
  • Este software pode danificar seu telefone ou unidade principal — os autores não assumem responsabilidade
  • NÃO use este aplicativo enquanto dirige
  • NÃO interaja com este aplicativo enquanto opera um veículo
  • Este aplicativo é destinado apenas para fins de desenvolvimento e teste
  • Sempre encoste e pare o veículo antes de interagir com qualquer aplicativo do telefone
  • Os autores não são responsáveis por quaisquer acidentes, lesões ou danos resultantes do uso deste software

Arquitetura```

USB Plug-in → MainActivity → ProjectionService ↓ UsbAoaTransport (USB AOA accessory mode) ↓ MessageFramer (16KB frame fragmentation) ↓ InBandTls (TLSv1.2 via SSLEngine) ↓ ProtocolEngine (AAP state machine) ↓ ┌───────────┼───────────┐ Video Input Audio (H.264) (touch/keys) (PCM)

root@kitploit:~
## Bugs Conhecidos

- **Atribuição de canal assume ordem** — Atribuímos o primeiro `av_channel` na SERVICE_DISCOVERY_RESPONSE como vídeo e o segundo como áudio. Isso funciona com a unidade principal do carro (canal 1 = vídeo), mas falha com openauto (canal 4 = áudio, não vídeo). Correção: analisar o campo `stream_type` dentro de `av_channel` para distinguir `VIDEO(3)` de `AUDIO(1)`.
- **Estabilidade de vídeo** — A conexão cai após streaming prolongado devido a estouro de buffer USB da unidade principal. Veja os resultados dos testes abaixo.
- **Listagem duplicada de dispositivo na unidade principal** — A página de smartphone da unidade principal mostra nosso aplicativo como duas entradas separadas (uma para Android Auto, uma para Bluetooth) em vez de uma única entrada com ambas as capacidades. Isso é causado pelo Android 12+ bloquear o acesso ao endereço MAC Bluetooth real (retorna `02:00:00:00:00:00`). Solução alternativa: escrever o endereço real em um arquivo de configuração via `adb shell "echo $(adb shell settings get secure bluetooth_address) > /sdcard/Android/data/org.openandroidauto/files/bt_address.txt"`. Precisa de uma tela de configurações na interface para permitir que o usuário insira seu MAC BT manualmente.
- **Botão de assistente de voz não tratado** — Quando o motorista pressiona o botão de voz/assistente na unidade principal, recebemos uma VOICE_SESSION_REQUEST e tentamos iniciar um assistente de voz (Dicio ou padrão do sistema). No entanto, o assistente iniciado ainda não recebe áudio do microfone da unidade principal.

### Resultados dos Testes de Estabilidade de Vídeo

Padrão de teste (barras coloridas) a 800x480, intervalo de quadro I de 1 segundo:

| FPS | Bitrate | Fragmento | Duração | Quadros | Status |
|-----|---------|-----------|---------|---------|--------|
| 30 | 2Mbps | Não | ~3s | ~90 | ❌ Muito rápido |
| 15 | 2Mbps | Não | ~33s | ~500 | ⚠️ Melhor |
| 10 | 2Mbps | Não | ~93s | ~930 | ⚠️ Bom |
| 30 | 2Mbps | Sim (2KB) | 5-25s | 150-750 | ⚠️ Variável |
| 30 | 500Kbps | Sim (2KB) | ~54s | ~1691 | ⚠️ Melhor |
| 15 | 250Kbps | Sim (2KB) | ~67s+ | 1000+ | ⚠️ Bom |
| 30 | 250Kbps | Sim (2KB), I=5s | ~20s | ~600 | ❌ Pior com quadro I longo |
| 15 | 250Kbps | Não | ~13s | ~200 | ❌ Fragmentação ajudou aqui |

Causa raiz: O buffer de recebimento USB da unidade principal transborda com alta taxa de transferência sustentada. Taxa de dados mais baixa = conexão mais longa.

**Melhor configuração confirmada:** 10fps, 2Mbps, sem fragmentação = 93 segundos. A implementação de fragmentar-antes-de-criptografar está quebrada (unidade principal não consegue remontar) — precisa de mais investigação.

## Compilação```bash
./gradlew assembleDebug

Requer Android SDK com a plataforma 35.

Testes

Testes Unitários```bash

./gradlew testDebugUnitTest

root@kitploit:~
113 testes unitários e de integração cobrindo protocolo, framing, TLS, lógica de canal, máquina de estado de vídeo, manipulação de sensores e entrada por toque.

### Testes de Integração com openauto (Docker)

openauto é um emulador de unidade principal de terceiros que implementa o protocolo completo do Android Auto. Nós o usamos para verificar nossa implementação do protocolo sem precisar de um carro real.

#### Pré-requisitos

- Docker instalado e em execução
- Telefone conectado via ADB (USB ou sem fio)
- Aplicativo instalado no telefone: `./gradlew assembleDebug && adb install -r app/build/outputs/apk/debug/app-debug.apk`

#### 1. Construir a imagem Docker do openauto (uma vez)```bash
cd thirdparty/openauto
docker build -f Dockerfile.headless -t openauto-headless .

Isto constrói o openauto com todas as dependências (Qt5, boost, protobuf, OpenSSL) em um container Debian. Leva ~5 minutos na primeira compilação.

2. Iniciar o openauto```bash

docker run --rm -p 5100:5000 -e QT_QPA_PLATFORM=offscreen
openauto-headless timeout 60 /src/build/bin/autoapp

root@kitploit:~
openauto escuta na porta 5000 dentro do container, mapeada para a porta 5100 no host. Executa em modo headless (nenhum display necessário).

#### 3. Configurar redirecionamento reverso de portas ADB```bash
adb reverse tcp:5000 tcp:5100

Isso faz com que o localhost:5000 do telefone faça túnel para o localhost:5100 do computador (openauto). Nosso app se conecta ao localhost:5000 como um cliente TCP quando nenhum acessório USB é encontrado.

4. Iniciar o app```bash

adb shell am start -n org.openandroidauto/.MainActivity

root@kitploit:~
O aplicativo irá:
1. Falhar ao encontrar um acessório USB
2. Conectar a `localhost:5000` (openauto via adb reverse)
3. Realizar o handshake completo do protocolo (VERSION → TLS → AUTH → SERVICE_DISCOVERY)
4. Abrir canais (vídeo, áudio, entrada, sensor)
5. Iniciar streaming de vídeo (padrão de teste)

#### 5. Verificar nos logs do openauto

Você deve ver na saída do openauto:```
[OpenAuto] handleNewClient() - Handle WIFI Client Connection
[OpenAuto] [AndroidAutoEntity] Send Version Request.
[OpenAuto] [AndroidAutoEntity] onVersionResponse()
[OpenAuto] [AndroidAutoEntity] Beginning SSL handshake.
[OpenAuto] [AndroidAutoEntity] Handshake completed.
[OpenAuto] [AndroidAutoEntity] onServiceDiscoveryRequest()
[OpenAuto] [AndroidAutoEntity] onAudioFocusRequest()
[OpenAuto] [AudioMediaSinkService] onChannelOpenRequest()
[OpenAuto] [VideoMediaSinkService] onChannelOpenRequest() (if video focus granted)

6. Recuperar logs do aplicativo```bash

adb pull /sdcard/Android/data/org.openandroidauto/files/aa_log.txt cat aa_log.txt

root@kitploit:~
O ficheiro de log persiste no telefone entre as mudanças de USB (útil quando se testa com uma unidade de head unit real).

#### Teste rápido de uma linha```bash
# Assumes openauto image already built and app installed
docker run --rm -p 5100:5000 -e QT_QPA_PLATFORM=offscreen openauto-headless timeout 20 /src/build/bin/autoapp &
sleep 3 && adb reverse tcp:5000 tcp:5100 && adb shell am start -n org.openandroidauto/.MainActivity

Notas

  • O openauto usa o protocolo v1.6; a nossa aplicação responde com v1.7 (ambos são aceites)
  • O openauto regista Message Id not Handled: 4 para AUTH_COMPLETE — esta é uma peculiaridade conhecida do openauto, não um erro
  • A ligação deve permanecer estável indefinidamente (sem timeout/desconexão)
  • O vídeo não é exibido (modo headless), mas a troca do protocolo é totalmente validada

Referências do Protocolo

  • uglyoldbob/android-auto (Rust, LGPL-3.0) — implementação do protocolo com definições protobuf
  • opencardev/aasdk (C++, GPL-3.0) — biblioteca de protocolo atualizada com definições protobuf completas
  • opencardev/openauto (C++, GPL-3.0) — emulador de head-unit (Crankshaft-NG)
  • tomasz-grobelny/AACS (C++, GPL-3.0) — implementação AA do lado do telefone para ODROID
  • headunit-revived (Kotlin, AGPL-3.0) — implementação do lado da head-unit
  • f1xpl/aasdk (C++, GPL-3.0) — biblioteca de protocolo original
  • Pesquisa do protocolo GAL — notas do protocolo, dissecador Wireshark e Guia de Integração da Head Unit em cache

Evolução das Definições Protobuf

O protocolo Android Auto foi engenharia reversa ao longo de vários projetos. Cada um baseou-se no anterior:

O que o opencardev/aasdk adiciona em relação ao AACS:

  • Serviço de Rádio (sintonização AM/FM/HD/DAB, predefinições, RDS, trânsito)
  • Estado de navegação (indicações completas: manobras, faixas, distâncias, indicações)
  • Estado do telefone (notificações de estado de chamada)
  • Navegador de multimédia (navegar pela biblioteca multimédia do telefone a partir da head unit)
  • Estado de reprodução multimédia (metadados da faixa atual)
  • Notificações genéricas (sistema de subscrição/cancelamento de subscrição)
  • Projeção WiFi (credenciais AA sem fios e configuração do ponto de acesso)
  • Verificação GAL (teste/depuração do Google Automotive Link)
  • Painel de instrumentos (entrada para ecrã secundário)
  • Configuração da interface do utilizador (tema dia/noite, margens, configuração do ecrã)
  • Estado da bateria, mudança de utilizador, cartão de portagens, tipos de conectores EV
  • Atualização da descoberta de serviços (alterações dinâmicas de canais)
  • Resoluções de vídeo alargadas (1440p, variantes retrato)
  • Mensagens de controlo alargadas (26 tipos vs 13)

Principais diferenças estruturais:

  • AACS usa priority + channel_id em ChannelOpenRequest; aasdk usa priority (sint32) + service_id
  • AACS ServiceDiscoveryResponse é apenas uma lista de canais; aasdk adiciona HeadUnitInfo, DriverPosition, PingConfiguration, ConnectionConfiguration
  • aasdk separa multimédia em sink (head unit recebe) e source (head unit envia) com IDs de mensagem distintos

O diretório thirdparty/aasdk/protobuf/ é a referência do protocolo oficial para este projeto.

Autenticação TLS

O Android Auto usa TLS mútuo. O telefone atua como servidor TLS e deve apresentar um certificado assinado pela Autoridade de Certificação Google Automotive Link (incorporada no firmware da head unit). Sem a chave privada correta, a head unit rejeita a ligação com AUTH_COMPLETE status=-3.

Cadeia de Certificados

O telefone apresenta uma cadeia de 2 certificados:

  1. Certificado CarService — O=CarService, assinado pela Autoridade de Certificação Google Automotive Link
  2. Autoridade de Certificação Google Automotive Link — raiz autoassinada, O=Google Automotive Link (válida 2014-2044)

Como Funciona a Autenticação

  1. A head unit tem a chave pública da Autoridade de Certificação Google Automotive Link incorporada no seu firmware e confia nela
  2. Durante o TLS, o telefone apresenta o certificado CarService (que é assinado por essa AC)
  3. O telefone prova a posse do certificado assinando o handshake TLS com a chave privada correspondente
  4. A head unit verifica que a assinatura corresponde à chave pública do certificado e que o certificado remonta à AC de confiança

Rotação de Certificados (Teoria — Não Confirmada)

O Google parece rodar o certificado+chave incorporados no APK do Android Auto aproximadamente a cada 8 meses (correspondendo ao período de validade do certificado). Isto pode ser uma medida deliberada para limitar a utilidade de chaves extraídas — se uma head unit verificar a expiração do certificado, uma chave extraída antiga deixaria de funcionar. Os utilizadores da aplicação oficial recebem novos certificados através de atualizações da aplicação. Se esta teoria estiver correta, um utilizador que nunca atualize a aplicação oficial pode eventualmente ser rejeitado por head units que imponham a expiração. Nem todas as head units podem verificar a expiração — este comportamento depende do modelo.

Obter a Chave Privada

A chave privada é encriptada com AES-256-CBC dentro do APK do Android Auto. A head unit valida o certificado do telefone contra a Autoridade de Certificação Google Automotive Link — qualquer certificado assinado por essa AC é aceite.

Caminho A: Desencriptar a partir do APK

A chave está incorporada (encriptada) no APK do Android Auto e pode ser desencriptada usando o próprio algoritmo do APK. Isto requer qualquer dispositivo Android com acesso ADB (sem root, sem Google Play Services necessário) para executar a desencriptação, porque o descodificador Base64 do Android comporta-se de forma diferente do JVM de ambiente de trabalho.

Requisitos:

  • O APK do Android Auto (obter de um telefone com adb pull, ou descarregar do APKPure/APKMirror)
  • Qualquer dispositivo Android com acesso ADB para executar a desencriptação (sem root, sem Google Play Services necessário)
  • Android SDK (d8 build tool, adb)

Processo:

  1. Obter o APK do AA de um telefone: adb pull $(adb shell pm path com.google.android.projection.gearhead | grep base | cut -d: -f2) aa.apk
  2. Descompilar com JADX para encontrar a classe do fornecedor de certificado
  3. Extrair os dados binários (salt KDF de 256 bytes + chave encriptada de ~1712 bytes + PEMs dos certificados)
  4. Compilar a classe Java de desencriptação para DEX e executar no dispositivo com dalvikvm

Encontrar a classe do fornecedor de certificado (passo 2):

Os nomes das classes são ofuscados e mudam entre versões do APK, mas a estrutura é sempre a mesma. Procure no JADX por "-----BEGIN CERTIFICATE-----" — encontrará uma classe pequena que implementa uma interface com três métodos:

  • a() → devolve uma String (o PEM do certificado CarService)
  • b() → devolve um byte[] (~1712 bytes — a chave privada encriptada AES)
  • c() → devolve um byte[] (256 bytes — o salt KDF)

Nomes de classe conhecidos por versão:

A função de desencriptação está numa classe próxima — procure por "AES/CBC/PKCS5Padding" para a encontrar. Ela recebe a interface do fornecedor de certificado como parâmetro.

Nota: O passo de desencriptação (passo 4) só precisa de dalvikvm — qualquer dispositivo Android com ADB funciona, sem root ou Google Play Services. O requisito de GApps é apenas para o passo 1 (obter o APK, pois a aplicação AA é distribuída via Play Store).

Nota: Não se modifica ou executa o código descompilado do APK. Em vez disso, escreve-se uma classe Decrypt.java autónoma que reimplementa a lógica de desencriptação, lê os arrays de bytes extraídos de ficheiros e tem o seu próprio ponto de entrada main(). O código-fonte descompilado é usado apenas como referência para entender o algoritmo e copiar os arrays de bytes. Consulte tools/decrypt_key_from_apk.md para o código Decrypt.java completo.

Bug crítico do JADX: O JADX descompila o helper KDF como byte b = bArr2[i2] & 255; mas deve ser int b = bArr2[i2] & 255;. O tipo byte trunca de volta para signed, produzindo saída inválida. Corrija para int e a desencriptação funciona.

A função KDF (tweakBytes/ap):```java static void tweakBytes(byte[] bArr, byte[] bArr2, byte[] bArr3) { for (int i = 0; i < bArr.length; i++) { for (int i2 = 0; i2 < 48; i2++) { int b = bArr2[i2] & 255; // MUST be int, not byte bArr2[i2] = (byte) (((((b >> 7) | (b + b)) + 33) ^ bArr3[i2 % bArr3.length]) ^ bArr[i]); } } }

root@kitploit:~
Após a descriptografia AES, a função `T()` extrai a chave:
- Pular os primeiros 28 bytes, cortar os últimos 26 bytes
- Decodificar em Base64 (URL_SAFE, flag=2) a parte do meio
- O resultado é uma chave privada RSA codificada em PKCS#8 DER

**Nota:** Deve ser executado no Android (não no JVM de desktop) devido às diferenças entre `android.util.Base64` e `java.util.Base64`. O `Base64.getUrlDecoder()` do JVM de desktop rejeita caracteres base64 padrão (`+`, `/`) e novas linhas que o decodificador do Android aceita. Use `Base64.getMimeDecoder()` no desktop, ou execute a descriptografia no dispositivo com `dalvikvm`:```bash
# Compile to DEX and run on any Android device with ADB access
javac Decrypt.java -d out
d8 out/Decrypt.class --output dex_out
adb push dex_out/classes.dex /data/local/tmp/decrypt.dex
adb shell "dalvikvm -cp /data/local/tmp/decrypt.dex Decrypt"

Isso gera a chave privada PKCS#8 em base64. Envolva-a em cabeçalhos PEM e coloque em app/src/main/assets/carservice_key.pem.

Veja tools/decrypt_key_from_apk.md para o guia completo passo a passo.

Caminho B: Usar um par certificado+chave extraído anteriormente

Como algumas unidades principais podem não verificar a expiração do certificado, um par certificado+chave extraído anteriormente (mesmo expirado) ainda pode funcionar. Fontes:

  1. Contatar o autor do opengal_proxy — email [email protected] (veja gamelaster/opengal_proxy)
  2. Extrair de um telefone com root e GApps — use o Frida para hook o KeyFactory.generatePrivate() (requer tanto root quanto os Google Play Services no mesmo dispositivo): ```bash frida -U -n "com.google.android.projection.gearhead" -l tools/dump_key_frida.js
    root@kitploit:~
  3. Comunidade — veja AACS#15 para discussão

Uma vez obtido, coloque o cert+key em app/src/main/assets/carservice_key.pem.

Veja tools/dump_key.sh e tools/dump_key_frida.js para scripts de extração em tempo de execução.

Licença

Este projeto está licenciado sob a GNU General Public License v3.0.

Este projeto inclui definições de buffer de protocolo de aasdk (GPLv3, Copyright © 2018 f1x.studio / Michal Szwaj) como um submódulo git.

Baixar ferramenta
  • Presença de passageiros
  • Estado das portas (capô, porta-malas, portas individuais)
  • Estado das luzes (faróis, indicadores, pisca-alerta)
  • Pressão dos pneus
  • Acelerômetro (3 eixos)
  • Giroscópio (3 eixos)
  • Dados de satélite GPS
  • Responder proativamente às solicitações de sensores da unidade principal
  • Atualização de descoberta de serviços (mudanças dinâmicas de canal)
  • Feedback de entrada (feedback tátil/visual para unidade principal)
  • Solicitação/resposta de microfone (entrada de voz da unidade principal)
  • Notificação de underflow de áudio
  • Serviço de rádio (sintonização AM/FM/HD/DAB, predefinições, RDS)
  • ProjetoAnoFicheiros ProtoFunção
    f1xpl/aasdk20181 monolítico (Wifi.proto)RE original — protocolo base, vídeo, áudio, entrada, sensores
    AACS202028 (divididos por mensagem)Implementação do lado do telefone — cobertura mínima para projeção de vídeo
    opencardev/aasdk2024254 (hierárquicos por serviço)Referência definitiva — protocolo completo com todos os serviços
    Versão APKClasse fornecedora de certificadoClasse salt+chaveClasse de desencriptação
    v6.4SslWrapper (campos o, p)mesma classeSslWrapper.m23915f()
    v16.8ivo / rqiivq / rql (campos b, c)ivq.d()