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

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

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

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

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

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

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

Для разгадывания кодов я разработал и создал специальную установку. Основа устройства - плата управления от контроллера для технологического лазера. Она собрана на основе микропроцессора К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
' #############################################
'
  .
  .
  .
  .
  .
  .


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

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

Если бы я захотел повторить свою систему, я бы лучше разработал совершенно новую схему. Я бы использовал процессор AT89C2051. У этой микросхемы имеется встроенный последовательный прорт и таймер. Поучилась бы конструкция в 10 раз
проще и меньше по размерам и не уступающая моей ни в чем.

Разрабатывать такую систему лично я не собираюсь ни в далеком ни в близком будующем, так как рынок нераскодированных магнитофонов уже давно иссяк (во всяком случае у нас в городе). Никакой прибыли от этой деятельности я получить не смогу.

Предлагаю вам самим разработать установку. А основные принципы ее работы вы могли подробно прочитать в данной статье.

 

 

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


HomePage