Veja como hackear seu carro usando Rede CAN com Arduino Due

Post on 06-Apr-2017

1.357 views 51 download

Transcript of Veja como hackear seu carro usando Rede CAN com Arduino Due

Veja como hackear seu carro usando Rede CAN com Arduino DueProf. André Márcio de Lima Curvellocontato@andrecurvello.com.br

Sobre mim

André Márcio de Lima Curvello▸ Engenheiro de Computação – USP São Carlos▸ MBA em Gestão de TI - UNIFRAN▸ Mestrado em Processamento de Sinais e Instrumentação

– USP São Carlos▸ Articulista do Portal Embarcados e FilipeFlop▸ Analista de Tecnologia – Padtec S/A

“Se não puder voar, corra. Se não puder correr, ande. Se não puder andar, rasteje, mas continue em frente de qualquer jeito.Martin Luther King

!O que é CAN?

Controller Area Network

▸ Protocolo multi-mestre▸ Broadcast▸ Comunicação serial▸ Baseado em mensagens▸ Sem “endereços”▹ IDs▹Mensagens

Controller Area Network

▸ Desenvolvido pela Bosch para redes decomunicação veiculares na década de 80

▸ Publicado em 1986 na SAE▸ Troca de mensagens entre ECUs▹ Electronic Control Unit▸ Robusto em ambientes com ruído!▸ Baixo custo

BWM 8 Series - 1988

Antes…

Fonte: http://www.slideshare.net/abhinawambitious

Depois!

Fonte: http://www.slideshare.net/abhinawambitious

Um padrão de ComunicaçãoCompatibilidade, equipamentos, módulosREDE

▸ Automotivo▸ Militar▸ Maquinário Industrial▸ Maquinário Agrícola▸ Controle de Elevadores▸ Sistemas Médicos▸ Etc

Áreas de Aplicação

Estrutura-base de uma ECU CAN

Fonte: http://www.ti.com

Topologia de uma Rede CAN

Fonte: https://www.linkedin.com/pulse/automotive-can-bus-system-explained-kiril-mucevski

E esse Transceiver?

Fonte: http://www.ti.com

E esse Transceiver?

SN65HVD230

Características da Rede CAN

▸ Todas as mensagens são broadcast▸ Cada nó pode transmitir mensagens▸ Cada mensagem possui uma ID que

identifica fonte ou conteúdo da mensagem▸ Cada receptor decide processar ou ignorar

a mensagem▸ IDs com valores menores -> Maior

prioridade!

Uma transmissão COMPARADA

Fonte: https://www.linkedin.com/pulse/automotive-can-bus-system-explained-kiril-mucevski

Como são os SINAIS da Rede CAN

Fonte: https://www.linkedin.com/pulse/automotive-can-bus-system-explained-kiril-mucevski

2 Padrões ISO para sistemas com comunicação CAN:▸ ISO 11898-3▹ Baixa velocidade – 125 kb/s▹ Distância de até 500 m

▸ ISO 11898-2▹ Alta velocidade – 1 Mb/s▹ Distância de até 40 m

Pacotes de INFORMAÇÃO

Standard CAN – Versão 2.0A▸ ID de 11 bit▸ 2048 ids diferentes!

Pacotes de INFORMAÇÃO

Fonte: http://www.ti.com

Pacotes de INFORMAÇÃO

Fonte: https://fabiobaltieri.com/2013/07/23/hacking-into-a-vehicle-can-bus-toyothack-and-socketcan/

Fonte: https://fabiobaltieri.com/2013/07/23/hacking-into-a-vehicle-can-bus-toyothack-and-socketcan/

Padrões de Rede CAN

▸ NMEA 2000 – Utilizado em aplicações navais e aéreas

▸ SAE J1939 - Utilizado em aplicações automotivas,especialmente caminhões.

▸ DIN 9684 – Utilizado em Aplicações Agrícolas

▸ ISO 11783 – Utilizado em aplicações agrícolas - ISOBUS

Padrões de Rede CAN▸ OBDII▸ On Board Diagnostics II

▸ Análise em rede CAN para informações “padrões”▸ Velocidade▸ Combustível▸ Bateria▸ Distância▸ RPM▸ Dentre outros

▸ Pedido – ID 0x7DF▸ Resposta – ID 0x7E8

https://en.wikipedia.org/wiki/OBD-II_ PIDs

Padrões de Rede CAN▸ OBDII▸ On Board Diagnostics II

Shields Arduino

▸ Arduino R3▸ Controller CAN▹ MCP2515 - SPI▸ Transceiver CAN▹ MCP2551

Shield Arduino

▸ Arduino DUE▸ Transceiver CAN

http://togglebit.net/product/arduino-due-can-shield/

Arduino Due

▸ AT91SAM3X8E▸ ARM Cortex M3▸ 84 MHz ▸ Controller CAN+Transceiver!

Arduino Due

http://www.microchip.com/wwwproducts/en/ATSAM3X8E

Arduino Due

▸ AT91SAM3X8E▸ ARM Cortex M3▸ 84 MHz ▸ Controller CAN+Transceiver!

DesenvolvimentoCom Arduino

DesenvolvimentoCom Arduino

Rede CAN?

• Apesar de o

Arduino DUE ter o

Controlador CAN...

• O Arduino IDE não

tem suporte oficial!

• Senta na calçada e

chora?

DesenvolvimentoCom Arduino

Rede CAN?

• Repositórios GitHub!

Desenvolvimento Com Arduino

Rede CAN?

Desenvolvimento com CAN

▸ Conhecimento de Registradores e Configurações de Periféricos Associados

▸ AT91SAM3X8E

▸ Termos principais:▸ ID – identificação da mensagem▸ DLC – tamanho em bytes da mensagem▸ Payload – mensagem propriamente

(bytes)

Hora de mostrar a Demonstração!

Módulo

Conexões

Execução

Transceiver

Cuidado com a Ligação!!!

Mais informações podem ser obtidasBasta implementar mais queries OBD2

– E verificar se a ECU Responde.EX: nível de bateria, distânciapercorrida, combustível, etc.

Momento Inspiração

http://canze.fisch.lu/arduino-due/

=

Momento Inspiração

+

+

Poder para bem… E Mal!

http://chadgibbons.com/2013/12/29/hacking-the-jeep-interior-can-bus/

Obrigado!

Perguntas?

Contato

@andremlcurvello

http://youtube.com/profandrecurvello

http://andrecurvello.com.br

contato@andrecurvello.com.br

http://facebook.com/profandrecurvello