Jump to content

    

Взлом протокола обмена

Я набрал еще пакетов для статистики. Выяснилось, что пакеты передатчиков, которые полежали два дня сильно отличаются от ранее полученных, т.е. пока девайсы спят, они живут. Но каких-то кардинальных знаний новые пакеты не прибавили. Каждая строка в нижеследующих дампах - это отдельный пакет, интервалы между передачами пакетов примерно одинаковые - секунд 15-20.

7310072541    2004 48    0000000000000000000000008240C1000041824244404242003F12    4B89E468
7310072541    4060 48    0000000000000000000000008240C1000041824244404242003F12    47778004
7310072541    6000 48    0000000000000000000000008240C1000041824244404242003F12    0166E062
7310072541    2004 48    0000000000000000000000008240C1000041824244404242003F12    4B89E468
7310072541    4060 48    0000000000000000000000008240C1000041824244404242003F12    47778004
7310072541    6000 46    0000000000000000000000008240C1000041824244404242003F12    01E6E06C
7310072541    2004 46    0000000000000000000000008240C1000041824244404242003F12    4B09E466
7310072541    4060 46    0000000000000000000000008240C1000041824244404242003F12    47F7800A
7310072541    6000 46    0000000000000000000000008240C1000041824244404242003F12    01E6E06C
7310072541    2004 46    0000000000000000000000008240C1000041824244404242003F12    4C0EE461

724F1BBA9C    6100 10    0000000000000001000002000081840000000000000000005C3C12    01FD3D39
724F1BBA9C    210B 10    0000000000000001000002000081840000000000000000005C3C12    0C423674
724F1BBA9C    4162 10    0000000000000001000002000081840000000000000000005C3C12    FD795FE5
724F1BBA9C    6100 10    0000000000000001000002000081840000000000000000005C3C12    01FD3D39
724F1BBA9C    210B 10    0000000000000001000002000081840000000000000000005C3C12    0C423674
724F1BBA9C    4162 10    0000000000000001000002000081840000000000000000005C3C12    FD795FE5
724F1BBA9C    6100 10    0000000000000001000002000081840000000000000000005C3C12    01FD3D39
724F1BBA9C    210B 10    0000000000000001000002000081840000000000000000005C3C12    0D433675
724F1BBA9C    4162 10    0000000000000001000002000081840000000000000000005C3C12    FD795FE5
724F1BBA9C    6100 10    0000000000000001000002000081840000000000000000005C3C12    01FD3D39

730761BAAF    2005 38    000000000000000000000000408080000000000000000000000012    72A86A57
730761BAAF    4060 38    000000000000000000000000408080000000000000000000000012    699B0F2C
730761BAAF    6000 38    000000000000000000000000408080000000000000000000000012    01A46F64
730761BAAF    2005 38    000000000000000000000000408080000000000000000000000012    72A86A57
730761BAAF    4060 38    000000000000000000000000408080000000000000000000000012    699B0F2C
730761BAAF    6000 38    000000000000000000000000408080000000000000000000000012    01A46F64
730761BAAF    2005 36    000000000000000000000000408080000000000000000000000012    73296A58
730761BAAF    4060 36    000000000000000000000000408080000000000000000000000012    691B0F22
730761BAAF    6000 36    000000000000000000000000408080000000000000000000000012    01246F6A
730761BAAF    2005 36    000000000000000000000000408080000000000000000000000012    73296A58

734F33656A    2000 76    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    01073806
734F33656A    4000 6C    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    03D0387E
734F33656A    600C 6C    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    830234DE
734F33656A    2000 6C    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    0199381C
734F33656A    4000 6C    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    03D0387E
734F33656A    600C 6C    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    830234DE
734F33656A    2000 6C    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    0199381C
734F33656A    4000 6C    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    03D0387E
734F33656A    600C 6A    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    830734D8
734F33656A    2000 6A    7B7B7B7B7B7B7B7B7B7B7B000C0C0C0C0C0C0C0C0C0C0C0C000012    029F3819

Однозначно очевидно, что первые 5 байт - это адрес передатчика, хотя значащих байт там только 3 и то без старших 2 бит. XOR этих 5-и байтов всегда равен 00, т.е. последний байт - это XOR-КС, а предыдущий - какой-то довесок, подгоняющий КС до нуля.

 

Следующие 2 байта абсолютно закономерно от передачи к передаче меняются попарно и по кругу, т.е. каждая третья передача будет иметь те же самые значения в этих байтах. Закономерность явно есть, но что это может значить? передавать 3 варианта по кругу - зачем?!

 

Следующий байт от передачи к передаче имеет тенденцию к закономерному уменьшению, но после длительной паузами между передачами значение байта снова возрастает (по показанным дампам это не видно, но это так) - подозреваю, что это напряжение на литиевой батарейке.

 

Дальше - неизвестно что, но всегда заканчивается на 12. Честно говоря, это как-то настораживает...

 

Последние 4 байта тоже выявили некую закономерность: четвертому от конца байту всегда в пределах одного и того же передатчика соответствует четко определенное значение второго от конца байта, аналогично и для следующей пары последних байт.

 

Но все эти закономерности пока никак не помогли мне понять, как же, блин, считаются эти КС... Пробовал при помощи reveng подбирать полиномы - ни для 16-битных, ни тем более для 32-битных не находится. пробовал брать часть пакета без адреса - тот же результат. пробовал брать без 1 или 2 последних байт, пробовал в последних 4 байтах удалять через 1, т.е. оставлять 1-3 или 2-4 байты - нулевой результат :(

 

Сегодня вечером планирую приступить к генерации пакетов самостоятельно, и буду смотреть, как отреагирует девайс. Хуже всего то, что девайс тоже закрытый, и либо показывает часть адреса передатчика, либо показывает ошибку. Судить об остальных частях пакета нет возможности :(

Share this post


Link to post
Share on other sites
... и две двухбайтовые КС одна в другой.

Может быть это инкапсуляция одного протокола другим? Типа был у них проводной протокол, запихнули его внутрь ИК-протокола. Тогда может быть две двухбайтовые контрольные суммы в конце, относящиеся к данным разной длины.

Share this post


Link to post
Share on other sites
Может быть это инкапсуляция одного протокола другим? Типа был у них проводной протокол, запихнули его внутрь ИК-протокола. Тогда может быть две двухбайтовые контрольные суммы в конце, относящиеся к данным разной длины.

Проводного точно не было - не тот тип устройства, чтобы иметь проводной интерфейс. Хотя теоретически алгоритмы могли быть использованы откуда угодно...

Ума не приложу, как расколупать все это...

Share this post


Link to post
Share on other sites
Проводного точно не было - не тот тип устройства, чтобы иметь проводной интерфейс. Хотя теоретически алгоритмы могли быть использованы откуда угодно...

Ума не приложу, как расколупать все это...

Часто проще изучить прошивку устройства, чем заниматься подбором.

Share this post


Link to post
Share on other sites
Часто проще изучить прошивку устройства, чем заниматься подбором.

Вы всерьез верите, что она незалоченная?!

Share this post


Link to post
Share on other sites

Для них, родимых.

Я продвинулся куда дальше всех, но все равно уперся в КС :(

Share this post


Link to post
Share on other sites

Однако. Не думал, что кто-то еще в такой области работает :) Мне нужно было слепить эмулятор ридера этих тагов, чтобы вместо них системе скармливать RFID какие. Главное, чтобы ID коровы отбивался. Я на атмеге смастерил аппарат, который передавал на шину блок данных. К сожалению с контрольной суммой не разобрался. Поэтому были заготовки, слитые с реальных тагов. Эти сэмплы и передавал. С виду контрольная сумма линейная. Не полиномы-хэши. Но проект заглох, поэтому дальше не разбирался.

 

Share this post


Link to post
Share on other sites
Но проект заглох, поэтому дальше не разбирался.

Не заглох, как видите... Всё ещё надеюсь разломать протокол...

Share this post


Link to post
Share on other sites

В таге у меня стоял MSP430. Я пробовал подцепиться - залочен был. Аналитически, подбором алгоритма чисто, тяжковато расколоть. Надо как-то заставить дивайс незначительно данные менять. Или слепить эмулятор и перебором пытаться формировать пакеты, пока не скормятся. Я, помню, тоже пытался и микрофон отпаивать, и не шевелил, а он все равно вываливал кучу измененных данных.

Share this post


Link to post
Share on other sites
В таге у меня стоял MSP430. Я пробовал подцепиться - залочен был. Аналитически, подбором алгоритма чисто, тяжковато расколоть. Надо как-то заставить дивайс незначительно данные менять. Или слепить эмулятор и перебором пытаться формировать пакеты, пока не скормятся. Я, помню, тоже пытался и микрофон отпаивать, и не шевелил, а он все равно вываливал кучу измененных данных.

У меня все то же самое, разве что я даже не пытался подключаться к контроллеру по очевидной причине защищенности. А остальное - так и есть. Данные меняются сами по себе, связи с внешним миром при этом не прослеживается. Но кое-что по формату стало понятнее... кроме КС.

Share this post


Link to post
Share on other sites
В таге у меня стоял MSP430. Я пробовал подцепиться - залочен был.

А какой тип и ревизия? У них кое-где был дырявый бутлодер, который до сих пор выпускают.

Share this post


Link to post
Share on other sites
А какой тип и ревизия? У них кое-где был дырявый бутлодер, который до сих пор выпускают.

 

У меня вот такой

 

post-1263-1523438196_thumb.jpg

 

post-1263-1523438211_thumb.jpg

 

Наверное, все-таки неподцепливался. Не вижу следов пайки. Надо будет попробовать из спортивного интереса. Может и незалочен. По всякому бывает. В последнее время я работал с 6 буржуйскими платами. Из них 4 незалочены.

Share this post


Link to post
Share on other sites
Приемник пока один. Статистику по пакетам буду набирать для имеющихся передатчиков... Потом буду гондобить свой передатчик и пытаться обмануть приемник... Пока это все, что в моих силах.

1. Приемник может быть (и скорее всего для этого применения есть) селективный. (принимает только "свои" корректные пакеты).

2. Если используется даже примитивное шифрование данных (XOR по всем или части данных), то разломать будет трудно.

Под разломать я понимаю разобраться как формируется CRC или чего оно там.

CRC может считаться с динамически изменяемым стартовым значением. Эти 2 или 4 байта могут передаваться в начале пакета (не обязательно).

3. То что меняется в пакетах - возможно - температура чипа. (не помню в F149 есть или нет встроенный ADC температуры)

Онаже может использоваться для кодирования в качестве "случайного" числа.

Также возможно передается данные о состоянии батарей.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now