Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
AndroidAuto — Implementazione open-source lato telefono di Android Auto con reverse engineering del protocollo, autenticazione reciproca TLS, proiezione video H.264, iniezione di input tattile e streaming di dati dei sensori tramite USB AOA. | Kitploit
Strumenti/GitHubGitHub/mretallack/androidauto
Sicurezza AndroidSicurezza BluetoothReverse EngineeringSicurezza WirelessSicurezza MobilePaper e RicercaApprendimento e Formazione
GitHubmretallack/androidauto

AndroidAuto

Implementazione open-source lato telefono di Android Auto con reverse engineering del protocollo, autenticazione reciproca TLS, proiezione video H.264, iniezione di input tattile e streaming di dati dei sensori tramite USB AOA.

Vedi Repository
11123 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Open Android Auto

Un'implementazione open-source dell'app lato telefono di Android Auto. Questa app viene eseguita sul telefono e proietta sull'unità head dell'auto tramite USB, sostituendo l'APK proprietario com.google.android.projection.gearhead di Google.

⚠️ LAVORI IN CORSO

Questo progetto è in fase iniziale di sviluppo. L'handshake del protocollo e la proiezione video funzionano con una vera unità head. Lo schermo del telefono viene visualizzato correttamente sull'unità head dell'auto per diversi secondi prima di disconnettersi (la stabilità video è in fase di miglioramento).

Funzionalità

Protocollo e Connessione

  • Rilevamento e connessione in modalità accessorio USB AOA
  • Autenticazione reciproca TLS 1.2 (telefono come server)
  • Negoziazione della versione (protocollo v1.7)
  • Scoperta dei servizi (richiesta/risposta)
  • Apertura canale sui canali di destinazione (video, audio, input, sensore)
  • Keepalive ping/pong (bidirezionale)
  • Gestione richiesta/risposta di focus audio
  • Gestione richiesta/risposta di focus navigazione
  • Gestione richiesta sessione vocale
  • Gestione shutdown graduale
  • Coda di scrittura prioritaria (messaggi di controllo prima del video)
  • Attendere la concessione del focus audio prima di inviare audio (timeout 500ms per HUIG)
  • Scambio di associazione Bluetooth (BluetoothPairingRequest/Response)
  • Gestire più riconnessioni USB senza reinizializzazione AOAP

Proiezione Video

  • Codifica H.264 tramite MediaCodec (800x480 @ 30fps, profilo Baseline)
  • Acquisizione schermo MediaProjection (con finestra di autorizzazione utente)
  • Configurazione canale video (flusso SETUP → CONFIG → FOCUS → START)
  • Timestamp basati su zero in microsecondi
  • SPS/PPS anteposti ai keyframe (formato Annex B)
  • Controllo del flusso (tracciamento max_unacked, contropressione)
  • Pacing dei fotogrammi (intervalli costanti di 33ms)
  • Video stabile a lungo termine (attualmente si disconnette dopo ~7 secondi)
  • Negoziazione della risoluzione dalla scoperta dei servizi dell'unità head
  • Bitrate adattivo in base alla qualità della connessione

Input Tattile

  • Apertura canale input e richiesta di binding
  • Interpretazione eventi tattili (singolo e multi-tocco)
  • Interpretazione eventi chiave (pulsanti, tasti multimediali)
  • Mappatura coordinate (unità head → risoluzione telefono)
  • TouchInjector con creazione MotionEvent
  • Iniezione eventi tattili in VirtualDisplay
  • Iniezione eventi chiave nel sistema Android

Audio

  • Apertura e configurazione canale audio
  • Attendere la concessione del focus audio prima di inviare audio (timeout 500ms per HUIG)
  • Inviare AUDIO_FOCUS RELEASE alla connessione iniziale, poi GAIN durante la riproduzione
  • Acquisizione audio del telefono (MediaProjection AudioPlaybackCapture)
  • Codifica PCM/AAC e streaming all'unità head
  • Ingresso microfono dall'unità head (comandi vocali)
  • Canali audio multipli (media, sistema, parlato, guida)
  • Streaming di silenzio audio per mantenere attivo il canale

Sensori

  • Apertura canale sensore
  • Gestione richiesta/risposta di avvio sensore
  • Analisi e invio dati modalità notte
  • Analisi e invio dati stato guida
  • Inoltro posizione GPS
  • Direzione bussola
  • Velocità auto
  • Giri motore (RPM)
  • Contachilometri (totale + parziale)
  • Livello carburante e autonomia
  • Stato freno di stazionamento
  • Posizione cambio (P/R/N/D/1-10)
  • Diagnostica OBD-II
  • Ambiente (temperatura, pressione, pioggia)
  • HVAC (temperatura target/attuale)
  • Dead reckoning

Video (aggiuntivo)

  • Negoziazione della risoluzione dalla scoperta dei servizi dell'unità head
  • Bitrate adattivo in base alla qualità della connessione
  • Supporto per risoluzioni 720p, 1080p, 1440p, 4K
  • Risoluzioni in modalità ritratto (720x1280, 1080x1920, ecc.)
  • Aggiornamenti configurazione UI (tema, insets)

Altro

  • Coordinamento associazione Bluetooth (A2DP, HFP)
  • Navigazione turn-by-turn al quadro strumenti
  • Stato navigazione (manovre, corsie, distanze, posizione corrente)
  • Stato multimediale (informazioni sul brano in riproduzione)
  • Metadati riproduzione multimediale (traccia, artista, album)
  • Browser multimediale (sfogliare la libreria multimediale del telefono dall'unità head)
  • Stato telefono (notifiche stato chiamata)
  • Notifiche generiche (sistema di iscrizione/disiscrizione)
  • Estensioni del fornitore
  • Android Auto wireless (WiFi + handoff Bluetooth)
  • Notifica chiusura canale
  • Richiesta/risposta dispositivi connessi all'auto
  • Richiesta/risposta cambio utente
  • Notifica stato batteria
  • Stato disponibilità chiamata

⚠️ DICHIARAZIONE DI NON RESPONSABILITÀ

UTILIZZARE A PROPRIO RISCHIO. Questo software è fornito "così com'è", senza alcuna garanzia.

  • Questo software potrebbe causare comportamenti imprevisti con l'unità head della vostra auto
  • Questo software potrebbe danneggiare il telefono o l'unità head — gli autori non si assumono alcuna responsabilità
  • NON utilizzare questa applicazione durante la guida
  • NON interagire con questa applicazione mentre si è al volante
  • Questa applicazione è destinata esclusivamente a scopi di sviluppo e test
  • Accostare sempre e fermare il veicolo prima di interagire con qualsiasi applicazione del telefono
  • Gli autori non sono responsabili per eventuali incidenti, lesioni o danni derivanti dall'uso di questo software

Architettura```

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:~
## Bug noti

- **L'assegnazione dei canali presume un ordine** — Assegniamo il primo `av_channel` in SERVICE_DISCOVERY_RESPONSE come video e il secondo come audio. Questo funziona con l'autoradio (canale 1 = video) ma fallisce con openauto (canale 4 = audio, non video). Correzione: analizzare il campo `stream_type` all'interno di `av_channel` per distinguere `VIDEO(3)` da `AUDIO(1)`.
- **Stabilità video** — La connessione cade dopo uno streaming prolungato a causa dell'overflow del buffer USB dell'autoradio. Vedi i risultati dei test qui sotto.
- **Elenco dispositivi duplicato sull'autoradio** — La pagina degli smartphone dell'autoradio mostra la nostra app come due voci separate (una per Android Auto, una per Bluetooth) invece di una singola voce con entrambe le capacità. Ciò è causato dal blocco di Android 12+ all'accesso al vero indirizzo MAC Bluetooth (restituisce `02:00:00:00:00:00`). Soluzione alternativa: scrivere l'indirizzo reale in un file di configurazione tramite `adb shell "echo $(adb shell settings get secure bluetooth_address) > /sdcard/Android/data/org.openandroidauto/files/bt_address.txt"`. Serve una schermata delle impostazioni UI per permettere all'utente di inserire manualmente il proprio MAC BT.
- **Pulsante dell'assistente vocale non gestito** — Quando il conducente preme il pulsante vocale/dell'assistente sull'autoradio, riceviamo una VOICE_SESSION_REQUEST e tentiamo di avviare un assistente vocale (Dicio o quello predefinito di sistema). Tuttavia, l'assistente avviato non riceve ancora l'audio dal microfono dell'autoradio.

### Risultati dei test di stabilità video

Pattern di test (barre colorate) a 800x480, intervallo I-frame 1 secondo:

| FPS | Bitrate | Frammento | Durata | Frame | Stato |
|-----|---------|-----------|--------|-------|-------|
| 30 | 2Mbps | No | ~3s | ~90 | ❌ Troppo veloce |
| 15 | 2Mbps | No | ~33s | ~500 | ⚠️ Migliore |
| 10 | 2Mbps | No | ~93s | ~930 | ⚠️ Buono |
| 30 | 2Mbps | Sì (2KB) | 5-25s | 150-750 | ⚠️ Variabile |
| 30 | 500Kbps | Sì (2KB) | ~54s | ~1691 | ⚠️ Migliore |
| 15 | 250Kbps | Sì (2KB) | ~67s+ | 1000+ | ⚠️ Buono |
| 30 | 250Kbps | Sì (2KB), I=5s | ~20s | ~600 | ❌ Peggio con I-frame lungo |
| 15 | 250Kbps | No | ~13s | ~200 | ❌ La frammentazione ha aiutato qui |

Causa principale: Il buffer di ricezione USB dell'autoradio va in overflow con un throughput elevato sostenuto. Una velocità di trasmissione dati più bassa = connessione più lunga.

**Configurazione migliore confermata:** 10fps, 2Mbps, nessuna frammentazione = 93 secondi. L'implementazione della frammentazione prima della crittografia è danneggiata (l'autoradio non riesce a riassemblare) — necessita di ulteriori indagini.

## Compilazione```bash
./gradlew assembleDebug

Richiede Android SDK con piattaforma 35.

Test

Test Unitari```bash

./gradlew testDebugUnitTest

root@kitploit:~
113 test unit e di integrazione che coprono protocollo, framing, TLS, logica dei canali, macchina a stati video, gestione dei sensori e input tattile.

### Test di integrazione con openauto (Docker)

openauto è un emulatore di head unit di terze parti che parla il protocollo Android Auto completo. Lo utilizziamo per verificare la nostra implementazione del protocollo senza bisogno di un'auto reale.

#### Prerequisiti

- Docker installato e in esecuzione
- Telefono connesso tramite ADB (USB o wireless)
- App installata sul telefono: `./gradlew assembleDebug && adb install -r app/build/outputs/apk/debug/app-debug.apk`

#### 1. Build dell'immagine Docker openauto (una tantum)```bash
cd thirdparty/openauto
docker build -f Dockerfile.headless -t openauto-headless .

Questo costruisce openauto con tutte le dipendenze (Qt5, boost, protobuf, OpenSSL) in un container Debian. Richiede circa 5 minuti al primo avvio.

2. Avvia openauto```bash

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

root@kitploit:~
openauto ascolta sulla porta 5000 all'interno del container, mappata sulla porta 5100 dell'host. Funziona in modalità headless (nessun display richiesto).

#### 3. Configura il reverse port forwarding ADB```bash
adb reverse tcp:5000 tcp:5100

Questo fa sì che il tunnel localhost:5000 del telefono vada al localhost:5100 del computer (openauto). La nostra app si connette a localhost:5000 come client TCP quando non viene trovato un accessorio USB.

4. Avvia l'app```bash

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

root@kitploit:~
L'app:
1. Fallire nel trovare un accessorio USB
2. Connettersi a `localhost:5000` (openauto tramite adb reverse)
3. Eseguire l'intero handshake del protocollo (VERSION → TLS → AUTH → SERVICE_DISCOVERY)
4. Aprire i canali (video, audio, input, sensore)
5. Avviare lo streaming video (pattern di test)

#### 5. Verifica nei log di openauto

Dovresti vedere nell'output di 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. Recupera i log dell'app```bash

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

root@kitploit:~
Il file di log persiste sul telefono tra le commutazioni USB (utile quando si testa con un'autoradio reale).

#### Test one-liner rapido```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

Note

  • openauto utilizza il protocollo v1.6; la nostra app risponde con v1.7 (entrambi sono accettati)
  • openauto registra Message Id not Handled: 4 per AUTH_COMPLETE — questa è una stranezza nota di openauto, non un errore
  • La connessione dovrebbe rimanere stabile indefinitamente (nessun timeout/disconnessione)
  • Il video non viene visualizzato (modalità headless) ma lo scambio del protocollo è completamente validato

Riferimenti del Protocollo

  • uglyoldbob/android-auto (Rust, LGPL-3.0) — implementazione del protocollo con definizioni protobuf
  • opencardev/aasdk (C++, GPL-3.0) — libreria del protocollo aggiornata con definizioni protobuf complete
  • opencardev/openauto (C++, GPL-3.0) — emulatore head-unit (Crankshaft-NG)
  • tomasz-grobelny/AACS (C++, GPL-3.0) — implementazione AA lato telefono per ODROID
  • headunit-revived (Kotlin, AGPL-3.0) — implementazione lato head-unit
  • f1xpl/aasdk (C++, GPL-3.0) — libreria originale del protocollo
  • GAL protocol research — note sul protocollo, dissector Wireshark e guida all'integrazione head-unit in cache

Evoluzione della Definizione Protobuf

Il protocollo Android Auto è stato ottenuto tramite reverse engineering in diversi progetti. Ciascuno si basava sul precedente:

Cosa aggiunge opencardev/aasdk rispetto ad AACS:

  • Servizio radio (sintonizzazione AM/FM/HD/DAB, preselezioni, RDS, traffico)
  • Stato navigazione (turn-by-turn completo: manovre, corsie, distanze, segnalazioni)
  • Stato telefono (notifiche sullo stato della chiamata)
  • Media browser (esplora la libreria multimediale del telefono dall'unità principale)
  • Stato riproduzione multimediale (metadati di ciò che è in riproduzione)
  • Notifiche generiche (sistema di iscrizione/disiscrizione)
  • Proiezione WiFi (credenziali AA wireless e configurazione punto di accesso)
  • Verifica GAL (test/debug di Google Automotive Link)
  • Cluster strumenti (input display secondario)
  • Configurazione UI (tema giorno/notte, rientri, configurazione schermo)
  • Stato batteria, cambio utente, carta pedaggio, tipi di connettori EV
  • Aggiornamento del service discovery (cambiamenti dinamici dei canali)
  • Risoluzioni video estese (1440p, varianti verticali)
  • Messaggi di controllo estesi (26 tipi vs 13)

Differenze strutturali chiave:

  • AACS utilizza priority + channel_id in ChannelOpenRequest; aasdk utilizza priority (sint32) + service_id
  • AACS ServiceDiscoveryResponse è solo una lista di canali; aasdk aggiunge HeadUnitInfo, DriverPosition, PingConfiguration, ConnectionConfiguration
  • aasdk separa i media in sink (l'unità principale riceve) e source (l'unità principale invia) con ID messaggio distinti

La directory thirdparty/aasdk/protobuf/ è il riferimento del protocollo autorevole per questo progetto.

Autenticazione TLS

Android Auto utilizza TLS mutuo. Il telefono funge da server TLS e deve presentare un certificato firmato dalla Google Automotive Link CA (integrata nel firmware dell'unità principale). Senza la chiave privata corretta, l'unità principale rifiuta la connessione con AUTH_COMPLETE status=-3.

Catena di Certificati

Il telefono presenta una catena di 2 certificati:

  1. Certificato CarService — O=CarService, firmato dalla Google Automotive Link CA
  2. Google Automotive Link CA — radice auto-firmata, O=Google Automotive Link (valido 2014-2044)

Come Funziona l'Autenticazione

  1. L'unità principale ha la chiave pubblica della Google Automotive Link CA integrata nel suo firmware e si fida di essa
  2. Durante TLS, il telefono presenta il certificato CarService (che è firmato da quella CA)
  3. Il telefono dimostra la proprietà del certificato firmando l'handshake TLS con la corrispondente chiave privata
  4. L'unità principale verifica che la firma corrisponda alla chiave pubblica del certificato e che il certificato risalga alla CA di fiducia

Rotazione dei Certificati (Teoria — Non Confermata)

Google sembra ruotare il certificato+chiave incorporati nell'APK di Android Auto circa ogni 8 mesi (coincidendo con il periodo di validità del certificato). Potrebbe essere una misura deliberata per limitare l'utilità delle chiavi estratte — se un'unità principale controlla la scadenza del certificato, una vecchia chiave estratta smetterebbe di funzionare. Gli utenti dell'app ufficiale ricevono certificati nuovi tramite gli aggiornamenti dell'app. Se questa teoria è corretta, un utente che non aggiorna mai l'app ufficiale potrebbe alla fine essere rifiutato dalle unità principali che impongono la scadenza. Non tutte le unità principali potrebbero controllare la scadenza — questo comportamento dipende dal modello.

Ottenere la Chiave Privata

La chiave privata è crittografata con AES-256-CBC all'interno dell'APK di Android Auto. L'unità principale valida il certificato del telefono rispetto alla Google Automotive Link CA — qualsiasi certificato firmato da quella CA è accettato.

Percorso A: Decriptare dall'APK

La chiave è incorporata (crittografata) nell'APK di Android Auto e può essere decriptata utilizzando l'algoritmo stesso dell'APK. Ciò richiede qualsiasi dispositivo Android con accesso ADB (nessun root, nessun servizio Google Play necessario) per eseguire la decriptazione, perché il decoder Base64 di Android si comporta diversamente dalla JVM desktop.

Requisiti:

  • L'APK di Android Auto (estrailo da un telefono con adb pull, o scaricalo da APKPure/APKMirror)
  • Qualsiasi dispositivo Android con accesso ADB per eseguire la decriptazione (nessun root, nessun servizio Google Play necessario)
  • Android SDK (d8 build tool, adb)

Procedimento:

  1. Estrarre l'APK AA da un telefono: adb pull $(adb shell pm path com.google.android.projection.gearhead | grep base | cut -d: -f2) aa.apk
  2. Decompilare con JADX per trovare la classe del fornitore del certificato
  3. Estrarre i dati binari (256 byte di sale KDF + ~1712 byte di chiave crittografata + certificati PEM)
  4. Compilare la classe Java di decriptazione in DEX ed eseguirla sul dispositivo con dalvikvm

Trovare la classe del fornitore del certificato (passaggio 2):

I nomi delle classi sono offuscati e cambiano tra le versioni dell'APK, ma la struttura è sempre la stessa. Cerca in JADX "-----BEGIN CERTIFICATE-----" — troverai una piccola classe che implementa un'interfaccia con tre metodi:

  • a() → restituisce una String (il certificato CarService PEM)
  • b() → restituisce un byte[] (~1712 byte — la chiave privata crittografata con AES)
  • c() → restituisce un byte[] (256 byte — il sale KDF)

Nomi di classi noti per versione:

La funzione di decriptazione si trova in una classe vicina — cerca "AES/CBC/PKCS5Padding" per trovarla. Prende l'interfaccia del fornitore del certificato come parametro.

Nota: Il passaggio di decriptazione (passaggio 4) richiede solo dalvikvm — qualsiasi dispositivo Android con ADB funziona, nessun root o servizi Google Play richiesti. Il requisito di GApps è solo per il passaggio 1 (estrarre l'APK, poiché l'app AA è distribuita tramite Play Store).

Nota: Non si modifica né si esegue il codice APK decompilato. Invece, si scrive una classe autonoma Decrypt.java che reimplementa la logica di decriptazione, legge i byte array estratti dai file e ha il proprio punto di ingresso main(). Il sorgente decompilato viene utilizzato solo come riferimento per comprendere l'algoritmo e copiare i byte array. Vedi tools/decrypt_key_from_apk.md per il sorgente completo di Decrypt.java.

Bug critico di JADX: JADX decompila l'helper KDF come byte b = bArr2[i2] & 255; ma deve essere int b = bArr2[i2] & 255;. Il tipo byte tronca di nuovo a signed, producendo output spazzatura. Correggi in int e la decriptazione funziona.

La funzione 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:~
Dopo la decifratura AES, la funzione `T()` estrae la chiave:
- Salta i primi 28 byte, taglia gli ultimi 26 byte
- Decodifica Base64 (URL_SAFE, flag=2) della parte centrale
- Il risultato è una chiave privata RSA codificata in PKCS#8 DER

**Nota:** Deve essere eseguito su Android (non su JVM desktop) a causa delle differenze tra `android.util.Base64` e `java.util.Base64`. Il `Base64.getUrlDecoder()` della JVM desktop rifiuta i caratteri base64 standard (`+`, `/`) e i newline che il decoder di Android accetta. Usa `Base64.getMimeDecoder()` sul desktop, oppure esegui la decifratura sul dispositivo con `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"

Questo produce la chiave privata PKCS#8 in base64. Avvolgila nelle intestazioni PEM e posizionala in app/src/main/assets/carservice_key.pem.

Vedi tools/decrypt_key_from_apk.md per la guida completa passo-passo.

Path B: Usa una coppia cert+key estratta in precedenza

Poiché alcune unità head potrebbero non controllare la scadenza del certificato, una coppia cert+key precedentemente estratta (anche scaduta) potrebbe ancora funzionare. Fonti:

  1. Contatta l'autore di opengal_proxy — email [email protected] (vedi gamelaster/opengal_proxy)
  2. Estrai da un telefono rooted con GApps — usa Frida per hookare KeyFactory.generatePrivate() (richiede sia root che Google Play Services sullo stesso dispositivo): ```bash frida -U -n "com.google.android.projection.gearhead" -l tools/dump_key_frida.js
    root@kitploit:~
  3. Community — consulta AACS#15 per discutere

Una volta ottenuti, posiziona il cert+key in app/src/main/assets/carservice_key.pem.

Vedi tools/dump_key.sh e tools/dump_key_frida.js per script di estrazione runtime.

Licenza

Questo progetto è concesso in licenza secondo i termini della GNU General Public License v3.0.

Questo progetto include definizioni di protocol buffer da aasdk (GPLv3, Copyright © 2018 f1x.studio / Michal Szwaj) come git submodule.

Scarica lo strumento
  • Rilevamento passeggero
  • Stato porte (cofano, bagagliaio, singole porte)
  • Stato luci (fari, indicatori di direzione, pericolo)
  • Pressione pneumatici
  • Accelerometro (3 assi)
  • Giroscopio (3 assi)
  • Dati satellitari GPS
  • Rispondere proattivamente alle richieste di sensori dell'unità head
  • Aggiornamento scoperta servizi (modifiche dinamiche dei canali)
  • Feedback input (feedback aptico/visivo all'unità head)
  • Richiesta/risposta microfono (ingresso vocale dall'unità head)
  • Notifica underflow audio
  • Servizio radio (sintonizzazione AM/FM/HD/DAB, preselezioni, RDS)
  • ProgettoAnnoFile ProtoRuolo
    f1xpl/aasdk20181 monolitico (Wifi.proto)RE originale — protocollo core, video, audio, input, sensori
    AACS202028 (suddivisi per messaggio)Implementazione lato telefono — copertura minima per la proiezione video
    opencardev/aasdk2024254 (gerarchici per servizio)Riferimento definitivo — protocollo completo con tutti i servizi
    Versione APKClasse fornitore certificatoClasse salt+keyClasse di decriptazione
    v6.4SslWrapper (campi o, p)stessa classeSslWrapper.m23915f()
    v16.8ivo / rqiivq / rql (campi b, c)ivq.d()