Како хаковати аутомобил - брзи курс судара

Циљ овог чланка је да започнете хаковање аутомобила - брзо, јефтино и једноставно. Да бисмо то урадили, за пример ћемо подвалити показивач броја обртаја.

Следеће никако није исцрпан водич. Уместо тога, циљ му је пружити таман толико информација да вас покрене. Ако желите дубље да истражите, на крају морате да прочитате обавештења.

Ако се одлучите да спроведете овај водич у стварном животу, биће вам потребан Линук рачунар (или виртуелна Линук машина) и ЦАН-то-УСБ уређај (о чему ћемо касније расправљати).

Аутомобил је мрежа

Аутомобил се састоји од више рачунара за управљање мотором, мењачем, прозорима, бравама, светлима итд. Ови рачунари се називају електронским управљачким јединицама (ЕЦУ) и међусобно комуницирају преко мреже.

На пример, када притиснете дугме на волану да бисте повећали јачину звука радија, ЕЦУ управљача шаље команду за појачавање јачине звука на мрежу, а затим ЕЦУ радио види ову команду и делује у складу с тим.

У аутомобилу постоји више мрежа, углавном најмање две:

  • Један за критичне податке као што су поруке мотора и погонског склопа
  • И један за мање критичне податке као што су радио и браве

Критична мрежа користи брзи и поуздани протокол, док некритична мрежа користи спорији, мање поуздани, али јефтинији протокол. Број мрежа, као и то које су ЕЦУ јединице умрежене, зависи од марке аутомобила, модела и године. ЕЦУ такође може бити повезан на више мрежа.

Повезивање на мрежу

Неким мрежама се може приступити преко ОБД-ИИ порта. ОБД-ИИ је обавезан за све аутомобиле и лаке камионе направљене у САД-у након 1996. године и Европи након 2004. године.

Конектор је на дохват руке возачевог седишта. Можда ћете требати да подигнете неки пластични поклопац, али увек је доступан без алата.

ОБД-ИИ стандард омогућава пет сигналних протокола. На произвођачу је да одлучи који ће користити. ЦАН је најпопуларнији и о томе ћемо разговарати. Приступа се преко пинова 6 и 14 на ОБД-ИИ конектору. Ако ваш аутомобил има ЦАН сабирницу, на иглама ћете видети металне водове као на горњој слици.

ЦАН магистрала је поуздана магистрала велике брзине која се користи за слање критичних података. Нажалост, пакети података на магистрали нису стандардизовани па ћете их морати обрнути да бисте знали шта значе. ОБД-ИИ стандард такође оставља простор за игле специфичне за добављача који се могу користити за протоколе специфичне за добављача. То трговцу олакшава дијагностиковање проблема.

У свом аутомобилу (ГМ) имам стандардну ЦАН сабирницу на пиновима 6 и 14, а једножичну ЦАН сабирницу специфичну за добављача на пину 1. Стандардна ЦАН сабирница је поуздан протокол велике брзине (500 кбпс) који се такође назива и ЦАН велике брзине (ХС-ЦАН). Користи се за критичне податке. Једножична ЦАН магистрала (СВ-ЦАН) или ГМЛАН је спорија (33,3 кбпс) и мање поуздана, али јефтинија јер користи само једну жицу. Ова магистрала се користи за некритичне податке.

Ако видите пин одређеног добављача и не знате који се протокол користи, Гоогле „ОБД пиноут“. Постоје и ЦАН мале брзине (ЛС-ЦАН) и ЦАН средње брзине (МС-ЦАН). МС-ЦАН је углавном на пиновима 3 и 11, а трчи брзином од 125 кбпс на Форд и Волво аутомобилима.

Алати

Требаће вам уређај који може да интерпретира ЦАН податке, као и софтвер за анализу података

Хардвер

Да бисте могли да примате и преносите ЦАН пакете, потребан вам је уређај који то може. Често ћете наићи на уређаје засноване на ЕЛМ327. Иако их користи, они су ужасни за хаковање. Сувише су спори да надгледају ЦАН сабирницу.

Постоје и врхунски уређаји попут Квасер, Пеак или ЕМС Вунсцхе. Ови ће посао обавити, али су претјерани и прилично скупи.

Неки врхунски уређаји такође захтевају да заједно са њим купите и софтвер. УСБ2ЦАН је изворни ЦАН интерфејс за Линук који нуди велику вредност за новац.

Такође можете да користите Цантацт или ЦАНУСБ. Међутим, ово нису изворни ЦАН уређаји у Линуку и користе АСЦИИ протокол. То значи да их је мало компликованије за постављање и да имају мање перформансе. С друге стране, они су добро подржани у више оперативних система.

Користим ЦАНализе који сам дизајнирао за своје потребе. Сличан је УСБ2ЦАН по томе што је приступачан изворни ЦАН интерфејс, али користи новији микроконтролер, отворен је извор и може се направити помоћу алата отвореног кода. Остатак овог водича претпоставља да користите изворни ЦАН интерфејс.

Софтвер

Да бисте комуницирали са уређајем, морате инсталирати пакет цан-утилс на ваш Линук рачунар. То можете учинити тако што ћете у Линук наредбу откуцати следеће:

sudo apt-get install can-utils

Цан-утилс изузетно олакшава слање, примање и анализу ЦАН пакета. То су наредбе које ћемо користити.

  • цансниффер приказује само пакете који се мењају
  • цандумп думп свих примљених пакета
  • може да пошаље пакет

Линук има ЦАН подршку уграђену у језгро путем СоцкетЦАН-а. Ово олакшава писање сопствених додатних програма. Са ЦАН магистралом можете да комуницирате на исти начин на који бисте комуницирали са било којом другом мрежом, тј. Путем сокета.

ЦАН аутобус

Пре него што започнете вожњу уназад, требало би да разумете како функционише ЦАН магистрала. Састоји се од 2 жице и користи диференцијалну сигнализацију. Пошто се ради о магистрали, на ове две жице може се повезати више уређаја. Када се ЦАН оквир пошаље на магистралу, примају га све ЕЦУ-е, али се обрађује само ако је то корисно за ЕЦУ. Ако се истовремено пошаље више ЦАН оквира, победиће онај са највишим приоритетом. ЦАН оквир има 3 дела која су за нас релевантна.

  • идентификатор арбитраже Идентификатор поруке. ЕЦУ га користи да одлучи да обради или игнорише примљени оквир. Такође представља приоритет поруке. Нижи број има већи приоритет. Тако, на пример, ако бисте били инжењер који пројектује мрежу, дали бисте оквиру за постављање ваздушних јастука врло висок приоритет или низак ИД арбитраже. С друге стране, подацима намењеним за браве на вратима дали бисте нижи приоритет или већи арбитражни ИД.
  • код дужине података (ДЛЦ) Означава дужину поља података у бајтовима. ЦАН оквир може имати највише 8 бајтова података.
  • поље података Садржи до 8 бајтова података.

Преокретање ЦАН сабирнице

Општи приступ преокретању ЦАН магистрале је генерисање понашања које желите опонашати и проналажење поруке која узрокује такво понашање. На пример, рецимо да је систем помоћи у задржавању траке (ЛКАС) на вашем аутомобилу срање и да сте га сами направили.

Да би могао да контролише управљање, морате знати које поруке да шаљете. Начин да се ово схвати је укључивање оригиналног ЛКАС-а, надгледање ЦАН магистрале и идентификовање пакета одговорних за окретање управљача. Након што идентификујете ове пакете, можете захтевати да ваш сопствени ЛКАС пошаље те пакете на ЦАН магистралу за контролу волана.

У нашем случају желимо да подвалимо тахометар, па морамо да променимо број обртаја гаса тако што ћемо нагазити гас док је аутомобил укључен и у неутралном положају, а затим покушати да пронађемо пакет одговоран за промену броја обртаја.

Подесити

Прикључите ЦАН уређај у ОБД-ИИ порт аутомобила и УСБ порт рачунара. Подигните ЦАН интерфејс покретањем следећег у вашем Линук одзиву:

sudo ip link set can0 up type can bitrate 500000

који приказује can0интерфејс (увек can0ако је повезан само један уређај) брзином од 500 кбпс, што је стандардно.

Идентификујте

Када је аутомобил искључен, ЕЦУ-ови обично спавају, тако да морате да укључите аутомобил или га ставите у режим додатне опреме. Можете погледати необрађене ЦАН податке покретањем овог у вашем Линук одзиву:

candump can0

Овим се ЦАН подаци штампају на екран чим су примљени. Међутим, ово је веома неорганизовано и врло је тешко видети који пакети одговарају одређеном догађају. Можете притиснути цтрл + ц да зауставите програм. Да бисмо учинили податке читљивијим, користимо цансниффер који групише пакете према арбитражном ИД-у и приказује само пакете који се мењају. Да бисте га покренули, покрените команду у вашем Линук одзиву:

cansniffer -c can0

где -cбоји бајтове који се мењају и can0интерфејс за њушкање. Потребно је неколико секунди да се уклоне константни пакети.

Требали бисте видети нешто слично слици испод, мада ће бројеви вероватно бити потпуно другачији.

Прва колона (делта) приказује брзину у секундама којом се примају пакети са тим ИД-јем арбитраже. Друга колона (ИД) садржи арбитражни ИД. Преостали алфанумерички ступци (подаци ...) садрже бајтове података. Ако подаци имају АСЦИИ приказ, то се може видети десно, иначе је тачка.

Када нагазите на гас док мотор ради како бисте повећали број обртаја у минути, на екрану се могу појавити нове ЦАН поруке и / или променити постојеће.

Морамо пронаћи ЦАН поруку где бајтови који се мењају корелирају са променом у РПМ-у. Вероватно можемо очекивати да ће се вредност повећавати / смањивати како се РПМ повећава / смањује.

Први ЦАН оквир у кансиферу који изгледа да варира у зависности од броја обртаја у минути је оквир са арбитражним ИД-ом C9. Вероватно постоји више потенцијалних пакета који се разликују у зависности од броја обртаја, ово је само први.

Постоје 4 бајта која се мењају (обојена црвено) у овој поруци, али не морају сви они да означавају РПМ. 07Чини се да варијације у трећем бајту нису повезане са променљивим РПМ-ом. Последњи бајт 1Bради.

Међутим, чим скинемо ногу са лептира за гас, он прелази у 00. То би значило да представља положај лептира за гас, а не РПМ.

Коначно, постоје два бајта 21 C0која изгледа да одговарају промени РПМ-а. Штавише, она варира као цео број од 16 бајтова, тј. Када се други бајт C0прелије, први бајт 21се повећа за један. Такође се чини да то 21одговара отприлике 2000 о / мин. Ово је добро напоменути када ћете поново репродуковати поруку.

Реплаи

Једном када имате кандидата, пошаљите га на ЦАН сабирницу следећом командом у свом Линук одзиву:

cansend can0 0C9#8021C0071B101000

при чему оквир има формат #{дата} и мора бити замењен вашом властитом ЦАН поруком.

Ваш аутомобил може да ради или је у режиму додатне опреме за ово. Обавезно користите пакет који сте добили када мотор није радио у празном ходу, иначе нећете видети ништа да се мења приликом поновног пуштања док је мотор у празном ходу.

Ако само једном пошаљете пакет, вероватно нећете видети ништа променљиво на инструмент табли. То је зато што ЕЦУ и даље шаље оригиналну поруку на магистралу у интервалима од 0,2 секунде, тако да ће ваша порука бити само занемарена.

Подсетимо да је стопа дата у првој колони кансифера. Постоје два начина да се ово заобиђе, осим искључивања ЕЦУ-а који генерише ове поруке. Једна од могућности је слање пакета много већом фреквенцијом од оних који се тренутно шаљу. То можете учинити покретањем следећег у Линуку одзиву:

while true; do cansend can0 0C9#8021C0071B101000; sleep 0.002; done

и замену поруке ЦАН оном коју сте идентификовали. Притисните цтрл + ц да бисте зауставили.

Друга опција је надгледање магистрале и сваки пут када откријете пакет који желите да лажно пошаљете, пошаљите свој пакет одмах након тога. То се може урадити покретањем у вашем Линук одзиву:

candump can0 | grep " 0C9 " | while read line; do cansend can0 0C9#8021C0071B101000; done

где треба да замените ЦАН поруку и 0C9ЦАН поруком коју сте идентификовали, односно њен арбитражни ИД. Можете експериментисати са оба приступа да бисте видели који од њих делује боље.

Ако се тахометар промени, добар посао, нашли сте га! У супротном, идентификујте следећу поруку која одговара РПМ-у и поновите је.

Фуззинг

Сада када имате ЦАН оквир који поставља РПМ на инструмент табли, можете се играти са подацима које шаљете да бисте видели шта ће се догодити. Приметили смо да се два бајта која одговарају РПМ-у понашају као 16-битни цели број, па да бисмо поставили тахометар на 8 к / мин, покренули смо следеће у вашем Линук одзиву:

while true; do cansend can0 0C9#0080000000101000; sleep 0.002; done

а резултат је ...

То је то! Сада можете покушати да контролишете брзинометар, радио, светла, браве на вратима итд. Користећи исти приступ.

Могући проблеми

  • Иако је ЦАН магистрала најпопуларнија мрежа, то није једина мрежа. Ако на ЦАН магистрали не можете да пронађете поруку коју тражите, покушајте са другом мрежом. Нарочито некритичне поруке као што су радио, светла и браве вероватно ће бити на другој мрежи.
  • Као што је поменуто, тачни подаци који се преносе преко ЦАН-а зависе од марке, модела и године. Неки аутомобили користе бројач у ЦАН поруци како би осигурали да се иста порука не обрађује више пута. Ово је мало теже, али то бисте могли да урадите уз пружене информације. Неки аутомобили такође користе контролну суму како би осигурали интегритет података. Израчунавање ове контролне суме може бити тешко. Ако имате Тоиоту, погледајте Авантуре у аутомобилским мрежама и управљачким јединицама, стр. 10, Контролни зброј-Тоиота. Сви би заиста требали прочитати цео рад.
  • При поновној репродукцији идентификованог пакета на магистрали, ваш ЦАН на УСБ уређај може прећи у стање „искључена магистрала“. Ово је део ЦАН стандарда и догађа се када је уређај доживео превише грешака. То се углавном дешава када је у аутобусу велика гужва. Да бисте то заобишли, можете се играти са закашњењима и одређивањем времена, можда покушајте поново репродуковати поруку одмах након стављања аутомобила у режим додатне опреме, покушајте мало причекати, покушајте с укљученим аутомобилом итд. Ако сте препознали шта су ЕЦУ-ови повезани са аутобусом, можете и да повучете њихов осигурач да бисте спречили слање порука и смањили промет у аутобусу.

Мора читати

  • Приручник за хакере аутомобила
  • Истраживање Чарлија Милера и Криса Валасека, да, све
  • Истраживање Универзитета у Калифорнији у Сан Диегу и Универзитета у Вашингтону.

Обавезно погледајте и Опен Гарагес и њихове видео записе.