Descriptografia de dados no ônibus CAN VW sedan

Hoje falaremos sobre métodos para descriptografar dados de barramento CAN usando o exemplo de um carro VW Polo Sedan 2019. Na Internet, esses artigos costumam ser chamados de CAN Bus Hacks, mas eu não gosto desse nome.

O artigo descreve os métodos para encontrar os dados necessários no barramento CAN do carro, exemplos da aplicação dessas técnicas no VW Polo Sedan. O Vega MTX é usado como equipamento para conectar a um barramento CAN. Vamos falar um pouco mais sobre telemática. Sob o corte de muitas fotos sobre o tema, vários gifs e vídeos.

Algumas palavras sobre você.

Meu nome é Alexey Fokin, no momento em que trabalho na Vega Absolutevega_absolute. O escritório central em Novosibirsk, mas eu trabalho em Moscou. Uma de nossas direções é a telemática. Fabricamos equipamentos para rastrear veículos comerciais, compartilhamento de carros, táxis, etc. Meu trabalho é coletar dados de carros e transformá-los em configurações para nossos equipamentos.

Agora para o carro.

A conexão ao barramento CAN foi feita em dois locais: atrás do painel (barramento de 500 Kbit / s) e atrás do rádio (100 Kbit / s). Há também uma conexão redundante - conectando ao conector OBDII diretamente no conector (500 Kbit / s).

Das ferramentas utilizadas: unidade de monitoramento de veículos Vega MTX equipada com um scanner CAN. Para configurá-lo em um PC, o programa Configurator 1.27.14.

Mais informações sobre a conexão com um carro e o MTX podem ser encontradas no vídeo no final do artigo.

Quando conectado a todos os barramentos CAN, veremos a seguinte figura:



Nesse fluxo de dados, você precisa encontrar os bits e bytes responsáveis ​​pelos parâmetros de que precisamos.

A captura de tela abaixo mostra quantos sensores estão registrados atualmente no bloco de telemática e esta não é uma lista completa. Você pode ir ainda mais fundo e procurar ainda mais sensores. Alguns desses sensores em tempo real enviam leituras para o servidor, o que permite que você veja o status do seu carro a qualquer momento.

A telemática é um tópico para um artigo separado; portanto, não vamos nos deter aqui em detalhes.



A pergunta surge imediatamente - por que preciso procurar dados em um fluxo se posso vê-los através do ELM327 ou de outros dispositivos de diagnóstico?

A questão aqui é por que precisamos desses dados. No nosso caso, precisamos dos dados para a telemática e, para não interferir na operação do barramento CAN e não enviar nenhum dado, procuramos por eles no fluxo. O Vega MTX possui um modo especial para trabalhar com o barramento CAN - o modo de "escuta". O modo fala por si só, o equipamento apenas escuta o ônibus e não envia nada a ele, minimizando assim qualquer impacto no sistema regular do carro.

Por exemplo, um sensor para abrir uma porta. Se pedirmos a ele um pedido, só podemos fazer isso com a ignição ligada. Depois que a ignição é desligada e o barramento CAN adormece, esse sensor não estará disponível para nós. Se encontrarmos esse sensor no fluxo CAN, veremos o tempo todo quando o barramento CAN estiver funcionando. E, quando você abre a porta, o CAN acorda automaticamente.

Também deve ser entendido que todos os exemplos abaixo são relevantes apenas para a conexão do Polo Sedan. Em outros, o equipamento pode não ter nenhum dos sensores listados, mas para outras marcas e modelos de carros os dados estarão em IDs completamente diferentes.

Chamo a atenção para o fato de que, por padrão, no Configurator, há uma exibição de valores no formato HEX. No futuro, teremos que converter dados do formato HEX em valores decimais mais de uma vez. A maneira mais fácil de fazer isso é usar o aplicativo Calculadora embutido no Windows 10. Nós o traduzimos para o modo "programador" e temos a opção de qual sistema numérico inserir dados, e eles são duplicados em outros sistemas numéricos.

Pelo método de pesquisa, divido todos os sensores no carro em vários tipos:

  1. Sensores binários.
  2. Troca rápida de sensores.
  3. Sensores de temperatura.
  4. Quilometragem do carro.
  5. Sensores de nível.
  6. Sensores de indicação
  7. Sensores com pedidos.

Agora, vamos aos métodos com os quais você pode encontrar cada tipo de sensor.

1. Sensores binários


Vamos começar com os sensores binários mais simples.

Esses sensores incluem sensores de porta, cintos de segurança, freio (se as luzes de freio estão acesas), freio de mão, botões são pressionados etc. Seu valor é colocado em 1 bit, ou seja, pode ser 0 (a porta está fechada) ou 1 (a porta está aberta).

Encontrá-los é simples, mas requer cuidados. Para procurar a porta do motorista, abra / feche a porta e observe o que muda no barramento CAN.

O configurador destaca em vermelho os dados nos quais houve alterações nos últimos segundos.



No nosso caso, a porta do motorista é responsável pelo bit zero do primeiro byte da mensagem com o ID 470.
No mesmo byte estão os sensores de todas as outras portas + sensor do porta-malas.

2. Troca rápida de sensores


Os sensores que mudam rapidamente são semelhantes aos sensores binários, apenas seu valor é superior a 1 bit. Podemos atuar sobre esses sensores e ver imediatamente as mudanças no barramento CAN.
Esses sensores incluem a maioria dos sensores de posição: posição do pedal do acelerador, posição do vidro, posição da transmissão automática, posição da chave de ignição. Além destes, são sensores de velocidade, revoluções, sensores de aceleração do volante, aceleração do pedal do acelerador, etc.

Para começar, trataremos dos sensores de posição usando o exemplo do sensor de posição do pedal do acelerador.

Para isso, desligamos o carro, ligamos a ignição e, sem dar partida no motor, pressionamos o pedal do acelerador e monitoramos a mudança no barramento CAN.

Como regra, quando o pedal do acelerador é liberado, o valor desse sensor é 0 e, conforme você pressiona o pedal do acelerador, ele aumenta para algum valor. Vemos esse parâmetro no primeiro CAN no ID 280. O quinto byte muda de 0 (o pedal é liberado) para FA (o pedal é pressionado "no chão").



Se convertermos FA de HEX para DEC, obteremos o número 250. Portanto, para pressionar o pedal do acelerador em porcentagem (de 0 a 100), precisamos multiplicar nosso valor por 0,4.

Agora vamos para sensores que não cabem em um byte, por exemplo, na velocidade do motor. Aumentamos e diminuímos gradualmente a velocidade do motor, enquanto observamos o que muda no barramento CAN. As rotações do motor estão no mesmo ID que o pedal do acelerador.



Depois de trabalhar com o pedal do acelerador, você pode entender que os dados aqui estão na ordem inversa. Ou seja, a parte mais antiga está no terceiro byte (contagem de bytes a partir de zero) e a mais nova no segundo byte.

Em seguida, você precisa transferir os dados do HEX para o DEC.



Em seguida, precisamos avaliar as revoluções reais pelo tacômetro ou por instrumentos de diagnóstico. No meu caso, a agulha estava a cerca de 1600 rpm no tacômetro.

Em seguida, dividimos os dados do CAN em formato decimal (6508) pela velocidade do motor do tacômetro (1600), obtemos 4,0675. Dado o erro ao determinar as rotações a olho, arredondar o divisor para 4. Depois disso, você precisa verificar as leituras em vários pontos. Para fazer isso, defina a velocidade do motor em velocidades diferentes e verifique-os com os dados do barramento CAN.

No configurador, você pode substituir todos os coeficientes nas configurações do sensor e observar as mudanças na velocidade em tempo real.

Assim, busca-se um grande número de sensores: forças de freio, posição do volante, aceleração do volante, velocidade do veículo, etc.

3. Sensores de temperatura


Foi muito difícil encontrar a temperatura no Polo Sedan. Para começar, foi encontrado um byte, que mudou lentamente para cima quando o carro foi aquecido. Depois disso, iniciou-se a busca pelos coeficientes necessários.

Conectamos os diagnósticos, selecionamos a temperatura do motor e comparamos as leituras do barramento CAN e os dados dos diagnósticos. Construímos uma tabela de correspondência e selecionamos os coeficientes.
Como resultado da seleção de coeficientes, apareceu uma fórmula para calcular a temperatura.

XX * 0,75 - 48, em
que XX é o valor de 1 byte do ID 288 no DEC.



De acordo com a fórmula, pode-se calcular que a captura de tela tinha uma temperatura de

179 * 0,75 - 48 = 86,25 ° C.

onde 179 é o número decimal B3 do primeiro byte do ID 288.

Mas este é um caso difícil, em muitos carros a temperatura é muito mais fácil de encontrar.

Como é difícil transmitir um número negativo no barramento, os fabricantes aceitam o valor -40 ° C, -48 ° C ou -58 ° C como 0 medições. Portanto, conectamos o diagnóstico e vemos qual é a temperatura agora. Adicione 40 (48 ou 58) a isso e traduza-o para HEX. Estamos procurando o número resultante no fluxo. Aguardamos que a temperatura da máquina mude um grau e verifique com o valor encontrado. Se seu valor também aumentou em 1, esse é o sensor que precisamos.

É importante não confundir os valores do barramento CAN com os valores das consultas de diagnóstico. Se você procurar simultaneamente leituras no barramento e a ferramenta de diagnóstico estiver conectada, as respostas às solicitações de diagnóstico também aparecerão no barramento. Eles podem ser identificados por ID. Geralmente, tudo o que ultrapassa 700 IDs são solicitações e respostas de diagnóstico.

Além disso, a temperatura do líquido de refrigeração sempre pode ser solicitada, sobre este método será descrito abaixo na seção sobre sensores com solicitações.

Você pode usar outro método para procurar temperatura: fisicamente, encontramos o sensor de temperatura do líquido de arrefecimento (DTOZH) no motor, desligue-o e conecte um resistor variável à fiação do carro. Em seguida, girando o resistor e seguindo o barramento CAN de acordo com o método de busca de dados que mudam rapidamente, você pode encontrar as leituras de temperatura do motor.

Na prática, não usei esse método, pois o ALT sempre estava no fluxo ou eles pediram à máquina uma solicitação.

4. Quilometragem do carro


Um dos parâmetros mais importantes para a telemática.

Primeiro, você precisa avaliar o tamanho que estamos procurando para um número. Se você pegar 2 bytes (16 bits) de dados, o número máximo FF FF = 65.535 se encaixará neles.O carro pode viajar claramente acima de 65 mil, o que significa que o veículo deve ter no mínimo 24 bits de comprimento. Já caberão 16 milhões de km., O que é claramente suficiente para uma corrida.

Mas, novamente, em carros diferentes de maneiras diferentes. No Polo Sedan, a quilometragem é escrita em km, em alguns franceses é transmitida com uma precisão de 100 metros. então o número pode ocupar 32 e mais bits.

Além da pesquisa, você deve pegar a quilometragem no painel do carro e transferi-la para a HEX.



No nosso caso, são 5732 km. Nós o traduzimos para HEX e obtemos 16 64. Em seguida, pesquise você precisa encontrar a linha em que essa combinação ocorrerá. Você precisa pesquisar por um byte, ou seja, primeiro procure 16 e, nas opções encontradas, verifique se existe também o número 64 ao lado do número 16. O número 64 pode ser esquerdo ou direito do número 16. Como a milhagem neste carro não é grande e, provavelmente, ao lado do número 64 também haverá 00. No Configurator, há uma pesquisa conveniente (CTRL + F); se você usar outra ferramenta, terá que procurar manualmente esses dados.

No nosso caso, a milhagem foi encontrada em 520 ID



00 16 64 = 5732 km.

Para verificar, é aconselhável dirigir mais alguns quilômetros e verificar o valor do sensor encontrado.

Da mesma forma, a milhagem é pesquisada antes do reabastecimento. Neste carro, o painel não transfere a quilometragem para o posto de gasolina para o pneu, por isso é feito mediante solicitação.

6. Sensores de nível


O segundo sensor mais importante para a telemática é o sensor de nível de combustível. Você pode encontrá-lo no fluxo, o que é preferível, ou por solicitação (menos preferível, mas em alguns carros não funciona de maneira diferente).

Primeiro, você precisa encontrar as leituras do nível de combustível na ferramenta de diagnóstico. Meu nível de combustível foi encontrado no painel de instrumentos (bloco 17). No painel de instrumentos, as leituras do sensor de nível estão em litros.

Agora, o carro tem 21 litros de combustível.



Traduzimos 21 de DEC para HEX e obtemos o número 15. Ao pesquisar, tentamos encontrá-lo. O fluxo contém o número fornecido no ID 320. Se o número não for encontrado, você deve tentar procurar por valores um ou mais. Em alguns carros, o combustível é fornecido com precisão de meio litro, portanto, é necessário procurar um valor 2 vezes maior.



Uma vez encontrado o nível de combustível, é necessário derramar alguns litros de combustível no carro e observar o resultado.

Você também pode desmontar o tanque de gás, retirar o FLS do tanque e movê-lo, seguindo as leituras do barramento CAN. Ou remova o conector do FLS e conecte um resistor variável lá. Girando e seguindo as alterações, você encontra o sensor de nível de combustível. Se você decidir desmontar, o nível de combustível deve ser procurado pelo método de busca por sensores que mudam rapidamente.

Além disso, ao pesquisar, os dados com IDs acima de 700 não devem ser levados em consideração, pois são consultas de diagnóstico. Após desconectar o equipamento de diagnóstico, esses dados desaparecerão. Lidaremos com os pedidos com mais detalhes abaixo.

Por exemplo, a resposta para as perguntas do equipamento de diagnóstico do nível de combustível no painel é semelhante a esta.



Além disso, o nível de combustível (em porcentagem) pode ser encontrado nas consultas OBDII padrão, mas no grupo VAG elas nem sempre mostram os dados corretos. No Skoda Rapid e Skoda Oktavia com um tanque cheio, os diagnósticos mostram um nível de combustível de 85%.



6. Sensores de indicação


Os sensores de indicação são muito semelhantes aos sensores binários e devem ser pesquisados ​​pelo mesmo método. Esses sensores incluem uma variedade de ícones no painel. Por exemplo, o status do ícone Check Engine está no primeiro byte do ID 480. Quando a ignição é ligada neste sensor 2C.



Após a partida, quando o ícone Check Engine (CE) se apaga, haverá sensor 00.



Agora resta a pergunta: qual bit é responsável pelo ícone CE? Traduzimos 2C para BIN e obtemos o número 0010 1100.

Em seguida, copie o 480 ID inteiro, altere o primeiro byte para 2C (0010 1100) e tente enviar esse pacote para o carro.

Atenção!, enviar dados para o carro nem sempre é seguro, você pode quebrar alguma coisa ou aumentar a milhagem. Vale a pena recorrer a esse método apenas se o sensor não puder ser encontrado pesquisando sensores binários.

No meu caso, enviei para um carro acabado (o que não é recomendado) e meu ícone CE e EPC pisca na minha arrumação.



Em seguida, enviamos em vez de 2C (0010 1100) 08 (0000 1000). No arrumado CE pisca. Portanto, 3 bits é responsável por este ícone.



Se você enviar 04 (0000 0100), o ícone EPC pisca.

7. Sensores com pedidos


Nem todos os dados podem ser encontrados no fluxo. Por exemplo, em um VW Transporter T4 a diesel não há temperatura do motor no fluxo. Ela não está arrumada. Portanto, você deve perguntar ao carro sobre esses parâmetros. O mesmo se aplica ao nível de combustível no Rio \ Solaris.

Neste exemplo, vamos tentar perguntar o nível de combustível do Polo Sedan. Vamos para o bloco 17, como fizemos no parágrafo sobre a busca pelo nível de combustível, e perguntamos ao painel. Após analisar as solicitações, vemos que o diagnóstico solicita o nível de combustível com o seguinte comando:



E em resposta, ela responde:



Em seguida, copie o ID 714, desligue a ferramenta de diagnóstico e tente enviar uma solicitação ao carro. Se a mesma resposta vier no ID 77E como era quando o diagnóstico foi conectado, recebemos um pacote com um nível de combustível (4 bytes. HEX 15 = DEC 21) 21 litros.

O Vega MTX possui ferramentas integradas para trabalhar com sensores com consultas. Lá você pode configurar que as solicitações serão enviadas depois que a ignição for ligada em um determinado intervalo ou sob certas condições.

Isso termina com a metodologia de busca de dados no barramento CAN. Se alguém mais souber quais métodos encontrar os dados necessários no barramento CAN ou compartilhar sua experiência, eu os ouvirei com prazer.

Antes de escrever este artigo, fiz um vídeo sobre esse tópico. O vídeo contém mais informações sobre a conexão ao barramento CAN do veículo, trabalhando com o Configurator e o servidor de arquivos


Link para o configurador

O servidor possui configurações para alguns carros, caminhões e máquinas agrícolas. Todos os arquivos são criptografados. Você pode ver quais sensores são visíveis no CAN do veículo. Quando conectados, os valores do sensor serão visíveis, mas não funcionarão para ver os endereços.

Continua.

All Articles