Anda di halaman 1dari 48

Veja como

hackear seu
carro usando
Rede CAN com
Arduino Due
Prof. André Márcio de Lima Curvello
contato@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

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 de


comunicaçã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ção
Compatibilidade, equipamentos, módulos
REDE
Áreas de Aplicação

▸ Automotivo
▸ Militar
▸ Maquinário Industrial
▸ Maquinário Agrícola
▸ Controle de Elevadores
▸ Sistemas Médicos
▸ Etc
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
Pacotes de INFORMAÇÃO

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!

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!
Desenvolvimento
Com Arduino
Desenvolvimento
Com Arduino

• Apesar de o
Arduino DUE ter o
Controlador CAN...

• O Arduino IDE não


tem suporte oficial!

• Senta na calçada e
chora?

Rede CAN?
Desenvolvimento
Com Arduino
• Repositórios GitHub!

Rede CAN?
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
Transceiver

Conexões

Execução
Cuidado com a
Ligação!!!
Mais informações podem ser obtidas
Basta implementar mais queries OBD2

– E verificar se a ECU Responde.


EX: nível de bateria, distância
percorrida, 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

http://facebook.com/profandrecurvello

contato@andrecurvello.com.br