<<На главную страницу  
Белов Александр Владимирович

Раскодировка авто магнитол

Примерно с 1997 по 2000 годы я занимался раскодированием авто магнитол. Я не пользовался ни чьей информацией. Все, что я делал - придумал сам. Теперь хочу поделиться опытом.

ВНИМАНИЕ! Прежде чем посылать мне просьбу разгадать вам код, прочтите этот текст:
Во-первых, хочу сразу же заявить: в настоящее время я раскодировкой НЕ ЗАНИМАЮСЬ! Данную статью я написал давно. Уже после того, как я закончил активно заниматься раскодировкой. С тех пор прошло уже 13 лет. И все это время я ни разу не разгадал ни одного кода. Просто все магнитолы, которые я мог разгадать при помощи моего метода закончились. Приносили иногда отдельные аппараты, которые никто разгадать не может.

Поэтому прошу, не посылайте пожалуйста мне подробные названия своих магнитол. Мне ничего не говорят эти названия. В мире существует такое большое количество моделей, что очень редко попадаются одинаковые. Но даже, если две модели по названию внешне одинаковые, то это еще не гарантия, что внутри они тоже идентичны. Бывает так, что внутренности отличаются кардинально! Нужно смотреть на месте!

Теперь для тех, кто хочет повторить мой способ раскодировки.
Советую сначала внимательно прочитать приведенную ниже статью. Если вы поймете о чем там идет речь, можете попробовать сделать то же самое сами. Но я не привожу готовых схем и программ. И не потому, что мне жалко. Просто установку, которую я применяю повторять один к одному не имеет смысла. Моя установка собрана на основе уже готового специализированного устройства промышленного производства. Это промышленный контроллер для станка с программным управлением. Этот контроллер достался мне в свое время бесплатно. Я добавил к нему дополнительную плату и переделал прошитую в его ПЗУ программу. Теперь это автомат для подбора кодов. Публиковать все это в интернет не имеет смысла. Использованный мной контроллер во первых давно устарел и снят с производства. Во вторых он выпускался очень ограниченным тиражом для узко профессиональных целей. Повторять все, один к одному не имеет смысла. Вы нигде не достанете такой микроконтроллер (плату), а делать его самому слишком сложно. К тому же там используется устаревший микропроцессор 580 серии.

Ну а теперь описание моего метода:

Для разгадывания кодов я разработал и создал специальную установку. Основа устройства - плата управления от контроллера для технологического лазера. Она собрана на основе микропроцессора К580ИК80. Установка имеет последовательный канал, при помощи которого я соединил его с COM-портом компьютера, а также свою маленькую клавиатуру и газоразрядный дисплей типа ПИУ. Дисплей имеет 16 знакомест, на каждом из которых может отображаться цифры, русские и английские буквы и еще довольно много символов из внутренней таблицы.

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

Получившаяся установка может работать под управлением компьютера. Управление происходит через последовательный канал (COM). После ввода подбирающей программы основной компьютер можно выключить. В режиме подбора кода установка может работать в автономном режиме. Для этого у нее имеется автономный дисплей (газоразрядный индикатор ПИУ - строка 16 знаков) и мини клавиатуру. С этой клавиатуры можно запустить или остановить процесс подбора, ввести новый начальный код, управлять установкой вручную. К установке подключаются два выносных блока: Набиратель и I2C Reader.

Набиратель имеет 14 реле (обозначенных на схеме К0...К13) и контактное поле. Устанавливается в непосредственной близости от контактных площадок кнопок управления разгадываемого аппарата. Специальные короткие проводники со штырьками сначала припаиваются к выводам кнопок управления (на каждом аппарате по своему), а затем штырьки подключаются посредством контактного поля, каждый к своему реле.

I2C Reader - служит для считывания по шине I2C. Он состоит из двух реле (оба обозначены, как К14) и адаптера I2C шины собранного на микросхемах К155ТМ2 и К155ЛН2 (см. схему). Он располагается в непосредственной близости от Flesh-памяти разгадываемого аппарата и подключается к ней при помощи таких же коротких проводников со штырьками. Содержащееся в блоке реле позволяет перерезать печатные проводники на плате и подключить устройство в разрыв цепей. При этом на время чтения Flesh-памяти реле подключает вход I2C Reader-а к памяти и отключает ее от остальной схемы, а сразу после считывания реле восстанавливает соединение в схеме разгадываемого приемника и отключает от него I2C Reader.

Я разработал программу для компьютера (назвал ее SymSym) и для установки (зашита в ПЗУ).
В основном я применяю три метода разгадывания кодов. Все они требуют обхода защиты от подбора.

Первый способ применяется в тех магнитофонах, в которых информация о количестве неверных наборов хранится в ОЗУ с питанием от конденсатора сверхвысокой емкости (0,5 фарада 5,1 В). В таких магнитофонах я выпаиваю конденсатор большой емкости и впаиваю вместо него конденсатор примерно 10 мкф. Затем подключаю к нему Набиратель. При помощи набирателя моя установка производит перебор всех кодов по очереди. Если, например, в магнитофон заложено три попытки, то после трех наборов кода установка сначала снимает напряжение с подбираемого магнитофона, затем замыкает накоротко конденсатор, впаянный вместо конденсатора сверхбольшой емкости, размыкает его и опять включает питание на магнитофон. После этой процедуры опять вводится три кода и т.д. И так пока не подберется. При таком способе приходится постоянно следить за процессом подбора кода, так как невозможно (или очень сложно) сделать автоматическую остановку программы подбора.

Второй способ применяется для некоторых магнитофонов, в которых флэш-память, работает не по I2C протоколу, а программа защиты имеет один изъян. А именно, если замкнуть информационный вывод микросхемы памяти на землю, через резистор 10 кОм, то процессор со всех ячеек памяти будет считывать 0. Так вот в некоторых магнитофонах программа, не имеет ни каких проверок на такой случай и при считывании количества неверных наборов из памяти получает 0 неверных наборов. Я использую эту лазейку. При этом используется так же только Набиратель. Он подключается к магнитофону и установка при его помощи производит последовательный перебор кодов. При исчерпании количества попыток набиратель замыкает информационный вывод микросхемы памяти и производит холостой ввод кода. После этого вывод памяти размыкается, и подбор кода продолжается.

Ну и третий - самый лучший способ. Он применяется в том случае, когда магнитофон имеет внешнюю флэш-память, работающую по протоколу I2C. В этом случае, кроме Набирателя используется I2C Reader. Алгоритм разгадывания таков:
1. Сначала я подключаю I2C Reader к микросхеме памяти магнитофона, включаю магнитофон и считываю содержимое памяти. Для этого служит программа "Монитор", входящая в состав программного комплекса моей установки.
2. Записываю содержимое памяти на жесткий диск компьютера. При этом указываю все данные о магнитофоне, из которого я считал информацию: Фирму производитель; Модель; Заводской номер.
3. Вручную набираю любой код.
4. Повторно считываю содержимое памяти магнитофона. Моя программа построена таким образом, что сразу после считывания сравнивает старую и новую информацию и разницу выделяет повышенной яркостью.
После ввода неверного кода (а если вы случайно введете верный, то и подбирать больше нечего), программа управления магнитофона увеличит показание счетчика неверных попыток и занесет эту информацию во флэш-память. Эту ячейку и выделит моя программа большей яркостью. Теперь он "попался"! При помощи того же "Монитора" я записываю в найденную ячейку различные числа и нахожу, какому коду соответствует 0 неверных попыток (это не обязательно код 0). Затем ставлю магнитофон на подбор.
В процессе подбора установка производит перебор кодов. После набора каждого очередного кода, установка читает содержимое ячейки, хранящей количество неверных попыток, и проверяет: изменилось ли оно. Если изменилось, то подбор продолжается. Когда допустимое количество попыток исчерпается, установка производит запись в эту ячейку памяти кода, соответствующего нулю неверных попыток. Затем выключает и включает питание магнитофона. Это нужно потому, что внутренний процессор магнитофона работает со своей внутренней ОЗУ. И хранит свои переменные там. А во флэш-память количество неверных попыток сбрасывается лишь для того, чтобы при внезапном выключении питании эта информация не потерялась. Считывание информации из флэш-памяти во внутреннее ОЗУ происходит лишь при включении питания магнитофона.
Подбор кода в этом режиме производится полностью автоматически и завершается тогда, когда после очередного ввода кода, содержимое ячейки счетчика неверных попыток не изменится.
Обычно я подготавливаю магнитофон к подбору и ставлю на подбор на ночь. Утром уже подбор окончен, а на дисплее установки искомый код.

Для составления подбирающих программ мною был разработан специальный язык. Управляющая программа комплекса транслирует программу с этого языка в специальный код и передает в установку. Там код хранится во внутреннем ОЗУ (пока включено питание). В автономном режиме установка работает по этой программе. Но некоторые параметры можно менять с клавиатуры установки. Например, темп подбора, начальный код. А также имеется ручной режим работы. В этом режиме можно заставить сработать любое реле Набирателя.
Теперь о языке составления подбирающих программ. Ниже я привожу начальный кусочек файла, с реальными подбирающими программами. Этот файл работал у меня около 10 лет.
Все подбирающие программы у меня располагаются в одном файле. Причем в нем организована иерархическая структура. Все тесты разбиты по фирмам производителям, а затем по моделям. Строки, начинающиеся с символа # , объявляют начало раздела по типу (фирме производителю). А строки, начинающиеся с символа $, объявляют начало описания конкретной модели. Управляющая программа SymSym читает при выборе режима "Загрузить тест", читает этот файл и выдает сначала список строк, начинающихся с # в виде меню "Тип магнитофона". После выбора типа, программа читает в выбранном разделе все строки, начинающиеся с $, и выводит их в виде меню "Модель магнитофона". Далее нужно выбрать модель. Программа производит трансляцию теста (т. е. подбирающей программы) в специальный код. В этом коде на каждую команду выделяется 4 байта. Первый из них - код операции. Остальные байты - это параметры. Если у конкретной команды параметров меньше трех, то лишние байты не используются, но в коде присутствуют для упрощения выполнения команд передачи управления. В процессе трансляции могут возникать синтаксические ошибки. Если они возникнут, то загрузки теста не происходит и на экран выводится список ошибок.
Если трансляция прошла нормально, то оттранслированный код передается в память установки по последовательному каналу. После этого на экран выводятся все строки дополнительной информации, которые стоят в начале теста и начинаются с символа @. Дополнительная информация служит для напоминания правил работы с конкретным тестом. Тексте теста возможны любые комментарии. Комментарий начинается с символа одинарной кавычки или точки с запятой и заканчивается с концом строки.
После загрузки теста в память установки управляющий компьютер можно выключить. Далее все управление происходит с клавиатуры установки. Если вы внимательно прочтете комментарий в приведенном фрагменте теста, вы увидите, что в системе имеются четыре системных переменных A, B, C, D. Они содержат четыре разряда текущего подбираемого кода. Например, если вы хотите начать подбор с кода 2431 (это может быть, если коды с 0000 по 2430 вы уже перебрали в предыдущем сеансе подбора), то вы вводите этот код с клавиатуры установки. При этом системные переменные принимают следующие значения:
A=3, B=4, C=3, D=1
Затем, нажатием кнопки "Пуск" установки, запускаю систему на подбор. Сначала выполняется начальная часть программы, которая служит для подготовки магнитофона к процедуре подбора кода. Чаще всего она сводится в переводе счетчика неверных наборов магнитофона в положение, соответствующее нулю неверных наборов. Затем выполняется цикл. Цикл в тексте программы это набор команд между BEGIN и END. Цикл выполняется много раз. После выполнения очередного цикла значение кода автоматически увеличивается на единицу. Сначала увеличивается значение переменной D. Когда она переполнится, увеличивается C и т. д.
Цикл заканчивается либо при повторном нажатии кнопки "Пуск" установки, либо при переполнении счетчика кода.
Для каждого разряда счетчика кода можно установить свои пределы изменения. Так команда B3,5 устанавливает для системной переменной B нижний предел 3, а верхний 5. При этом в процессе подбора значение переменной B будет принимать значения 3, 4, 5 а затем снова 3. Это нужно для того, что некоторые магнитофоны имеют в отдельных (а то и во всех) разрядах более узкие пределы изменения кода.
В процессе подбора с клавиатуры установки можно менять темп набора кодов (некоторые магнитофоны не успевают срабатывать при слишком большой скорости нажатия клавиш). При чем отдельно задается время удержания и время паузы. Чтобы не выставлять задержку каждый раз вручную, в языке программирования предусмотрены команды TK и TP. Первая устанавливает задержку нажатия для основных клавиш. А вторая отдельно определяет задержку для команд "Включить питание магнитофона" и "Выключить питание магнитофона". Задержки, установленные программно срабатывают только в момент загрузки теста в установку. В процессе подбора можно изменить значения задержек с пульта установки. Затем можно сколько угодно раз запускать и останавливать программу подбора. При этом будут сохраняться значения задержек, установленные вручную.
Назначение остальных команд моего языка понятно из комментария в тексте файла. Хочу отметить лишь необычное использование команды безусловного перехода GOTO. В отличии от других языков она имеет дополнительный параметр. Дело в том, что через определенное количество циклов подбора, равное допустимому количеству попыток, необходимо выполнить некие действия по обнулению счетчика попыток. Для этого пригодится дополнительный параметр. Например, команда GOTO m1, 5 означает, что в этом месте необходимо выполнить переход на метку m1 пять циклов подряд. На шестой цикл переход не выполняется, и управление передается на строку, непосредственно следующую за этой командой. А затем все повторяется сначала: пять раз переход, один раз нет перехода.
Далее смотрите фрагмент моего файла с текстами тестов или подбирающих программ (я никак не определюсь с названием). Для сокращения объема некоторые части секста изъяты и заменены точками.

'####################################################################
'##            ФАЙЛ С ТЕКСТАМИ АЛГОРИТМОВ ПОДБОРА КОДОВ            ##
'##                  написанными на языке "БЕЛ1 "                  ##
'####################################################################
'
' Описание языка "БЕЛ1"
'
' К cost1 [, const2] - "нажать" кнопку номер const1 const2 раз
'--------------------
'             const1 и const2 могут принимать значения:
'             0...11 - прямая адресация кнопок
'             A,B,C,D - косвенная адресация. Номер кнопки или число нажатий
'             устанавливается равным одному из разрядов счетчика
'             кодов. A - старший разряд, D - младший разряд.
'             Кроме того const1 может быть равно:
'             E - для кнопки ввода (ENTER)
'             R - для кнопки сброс (RESET)
'
' K const ON  - включить реле номер const
' K const OFF - выключить реле номер const
'---------------
'
' P ON  - включить питание
' P OFF - выключить питание
'-------
'
' R adr, data1 [, data2] [, data3] ... [, data255] - записать в ЗУ
'--------------------------------------------------  цепочку байтов
' с адреса adr
'
' F adr, len [, data] - заполнить ЗУ цепочкой одинаковых байт
'---------------------  с адреса adr. Длина цепочки len.
'
' M xxxxxxxx - установка маски на логические входы. xxxxxxxx - двоичное
'------------  число - маска. При x=0 вход отключен при x=1 - включен.
' Его младший разряд соответствует входу D0, а старший D7.
' Незначащие нули можно опустить.
'
' : str - метка. (str - любая строка символов)
'-------
'
' GOTO str [, const] - безусловный переход к строке программы с меткой str.
'--------------------  Если указан const то каждый const раз переход не
'                      выполняется.
'
' IF (adr) = data, str  - Условный переход к строке с меткой str, если байт
' IF (adr) <> data, str   в ЗУ по адресу adr равен (не равен) data.
'-----------------------
'
' IF I = xxxxxxxx, str  - Условный переход к строке с меткой str, если сигналы
' IF I <> xxxxxxxx, str   на логических входах соответствуют (не соответствуют)
'------------------       двоичному числу xxxxxxxx. Его младший разряд соответ-
'                         ствует входу D0, а старший D7.
'                         Незначащие нули можно опустить.
'
' IF S = Sn, str  - Условный переход к строке с меткой str, если текущий
' IF S <> Sn, str   экран соответствуют (не соответствуют) экрану Sn.
'-----------------  Где Sn это S1, S2, ... S16.
'
' PAUSE [const]   - пауза в const единиц времени. Если const не указан,
'---------------    пауза длится до нажатия любой клавиши.
'
' TK const1, const2 - установка скорости нажатия основных клавиш
' TP const1, const2 - установка скорости включения/выключения питания
'-------------        Сдесь const1 - период между двумя нажатиями
'                           const1 - время удержания клавиши.
'
' BEGIN  - начало основного цикла подбора
' END    - конец основного цикла подбора
' STOP   - метка или команда, по которой подбор прекращается
'-------
'
' A const1, const2  - Установка диапазона изменения разрядов счетчика кода.
' B const1, const2    Где: A - старший разряд const1 - нижний предел
' C const1, const2         D - младший разряд const2 - верхний предел
' D const1, const2
'------------------
'
' # - префикс строки с названием типа магнитофона
' $ - префикс строки с названием модели магнитофона
' @ - префикс строки с дополнительной информацией
' * - префикс строки с номером теста
'
'---------------------------------------------------------------------
'


# BECKER
' #############################################
'


$ MEXICO BE2330R1002301 (16)
@ В начале теста магнитофон должен быть включен
@
@ Подключение клавиш:
@ ----------------------
@ 0 => K0 3 => K3 6 => K6 9 => K9
@ 1 => K1 4 => K4 7 => K7 ON => K11
@ 2 => K2 5 => K5 8 => K8 ^ => KE

*16
R 9B, AC
R A0, AA
K11 ; кнопка "ON" на передней панели
PAUSE 5
K11
PAUSE 10

BEGIN
  K A
  K B
  K C
  K D
  K E
  IF (9B) = AC, STOP
  R 9B, AC
  GOTO M1, 3
    R 9B, AC
    R A0, AA
    K11       ; кнопка "ON" на передней панели
    PAUSE 5
    K11
    PAUSE 10
  :M1
END


$ Brand Mexico Cassette Electronic Model N 794 (2)
@ сер. N 6481720
@ В начале теста магнитофон должен быть включен.
@
@ Подключение клавиш:
@ ----------------------
@ 0 => K0 3 => K3 6 => K6 9 => K9
@ 1 => K1 4 => K4 7 => K7 DK => K11
@ 2 => K2 5 => K5 8 => K8 конденсатор => KR
@ Коллектор ключа включения светодиода должен быть подключен ко входу D1.

*2
M 1; включение первого логического входа
P OFF
K R
P ON
BEGIN
  K A
  K B
  K C
  K D
  K E
  IF I = 0, STOP
  K 11; кнопка "DK"
  IF I = 0, STOP
  GOTO M1, 3
    P OFF
    K R
    P ON
  :M1
END


  .
  .
  .
  .


# BLAUPUNKT
' #############################################
'


$ LUBECK CC22 7 642 751 010 (30)
  .
  .
  .
  .

# BMW
' #############################################
'
  .
  .
  .
  .
  .
  .


ВНИМАНИЕ!
Пожалуйста не ищите полной схемы описываемой установки и управляющей программы к ней. На этом сайте я разместил лишь схему разработанной мной дополнительной платы. Схему остальных плат и всего устройства я ни где не публиковал. Не на этом сайте, ни где либо еще. Все схемы я передам вам только в том случае, если вы купите у меня устройство подбора кодов.

 

Ну вот пока все. Если есть вопросы пишите по E-mail:   avbelov@ukr.net или belov@mirmk.ru
Если под рукой у вас нет электронной почты, отправьте мне письмо отсюда >>


HomePage