Описание:
Данный способ работает для MELSEC FX0(S),FX0N,FX1,FX1S,FX1N(C),FXU/FX2C,FX2N(C), а так же для 3го поколения FX3U(С) и FX3G,если защита состоит только из 1го ключевого слова.
Для контроллера FX можно задать ключевое слово, которое запрашивается при записи/считывании проекта.
Ключевое слово состоит из 8ми символов, символы могут быть цифры 1-9 и буквы A-F.
Для процессоров FX3U(С) и FX3G версии выше 2.00 возможно задать 2 ключевых слова (8 символов каждая).
В этом случае данный способ не работает.
Физика процесса:
хранящийся пароль в GX Developer (т.е. сравнение введённого и заданного производится в GX Developer), поэтому при просмотре данных проходящих через COM порт программой-монитором (напр. PortMon) - пароль благополучно виден.
Для версий 2.00 и выше, при защиты 2мя ключевыми словами, после ввода пароля в окне запроса, GX Developer кодирует данные по специальному (не сильно хитрому) закону и отправляет в контроллер. Контроллер роизводит сравнение и, соответственно, присылает ответ виде 4х символов (16тиричного слова).
Ответ контроллера полностью кореллируется с дежурным регистром D8169:
H0000 Не установлено 2 ключевое слово
H0010 Только для чтения
H0011 Запретить запись и чтение
H0012 Запретить все операции онлайн
H0020 Отключение ключевого слова
(Пытался менять руками из таблицы переменных GX Developer, - не даёт=)
Введённый в окно запроса пароль кодируется всегда с использованием одного и того же кодового слова,
вот примеры моих тестов:
Пароли заданные: 11111111
22222222
Пароль введённый: 00000000
00000000
В COM Порт летит: 04070805
47854285
Пароль введённый: 11111111
00000000
В COM Порт летит: 04070805
76947394
Пароль введённый: 00000000
22222222
В COM Порт летит: 26252A27
47854285
Пароли заданные: 33333333
33333333
Пароль введённый: 33333333
22222222
В COM Порт летит: 26252A27
94B695B6
Пароли заданные: 00000000
00000000
Пароль введённый: 00000000
11111111
В COM Порт летит: 17161914
47854285
Пароль введённый: 11111111
00000000
В COM Порт летит: 04070805
76947394
Пароль введённый: 22222222
22222222
В COM Порт летит: 26252A27
65A764A7
Пароль введённый: 33333333
33333333
В COM Порт летит: 39343B36
94B695B6
В общем легко заметить, что при вводе "00000000 00000000", передаётся "04070805 47854285". Если вводить
отличне от нуля символы, к закодированному слову по-символьно добавляется разность от нуля, ну и плюс пару особенных правил, например если 1й символ будет 1 (10000000 00000000), то закодированное слово "04070805 7(!)7854285".
Собсно, двойной пароль я не победил, есть предположение, что если как-нибудь заменить ответ от контроллера на правильный (H2000), то фокус может получиться, если кто умеет пробуйте.
- Portmon (брать здесь: http://technet.microsoft.com/ru-ru/sysi ... s/bb896644)
1.Запускаем PortMon, выполняем меню Computer/Connect Local.
2.В PortMon выбираем порт Capture/Ports/COM1 (номер порта, к которому подключен FX).
3.Запускаем GX Dveloper, в нём Онлайн/Считать из контроллера, выбираем "Парам.+Прог", жмём "Считать".
4.При появлении окна с запросом пароля в GX Developer, переходим в PortMon и выбираем Capture/Capture events.
5.Возвращаемся в GX Developer и вводим любой пароль в поле "ключевое слово 1", напр. "00000000".
6.При появлении вновь окна запроса пароля, переходим в PortMon и убираем галку Capture/Capture Events.
7.В PortMon включаем поиск Edit/Find... и вводим туда "E01800808".
8.После нахождения строчки с командой "E01800808", ниже следует пароль, в столбик, в виде символов ASCII,
пример:
1 1
3
4 4
3
8 8
4
1 A
3
6 6
3
0 0
3
1 1
3
1 1
Таким образом пароль: "148A6011".