plcforum.uz.ua

International PLC Forum
It is currently Sun Jul 23, 2017 11:32 am

All times are UTC + 3 hours




Post new topic Reply to topic  [ 8 posts ] 
Author Message
PostPosted: Wed May 16, 2012 6:39 pm 

Joined: Thu Feb 24, 2011 1:38 pm
Posts: 5
Снятие пароля на чтение/запись Mitsubishi MELSEC FX
Описание:
Данный способ работает для 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 символов каждая).
В этом случае данный способ не работает.

Физика процесса:
До версии 2.00 3го поколения (FX3U,FX3G), после ввода пароля в окне запроса, контроллер передаёт
хранящийся пароль в 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), то фокус может получиться, если кто умеет пробуйте.


Необходимый софт:
- GX Developer
- Portmon (брать здесь: http://technet.microsoft.com/ru-ru/sysinternals/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,

пример:
3
1 1
3
4 4
3
8 8
4
1 A
3
6 6
3
0 0
3
1 1
3
1 1

Таким образом пароль: "148A6011".


P.S. Тестировалось на FX3U,FX3G,FX2N.

Top
 Profile  
 
PostPosted: Wed May 16, 2012 7:06 pm 

Joined: Tue Aug 21, 2007 10:05 am
Posts: 797
при паролировании доступа к контроллерам существует тока 1 уровень доступа-это цифровой пароль из 8 цифр.
а вы про что говорите (какое такое 1е ключевое слово).
пароль вскрывается гораздо проще чем вы говорите и программ для этого куча.
тем паче эта тема уже обсуждалась на форуме. (sbutton)


Top
 Profile  
 
PostPosted: Thu May 17, 2012 3:25 pm 

Joined: Thu Feb 24, 2011 1:38 pm
Posts: 5
Поставьте себе более новый GX Developer и Вы откроете для себя возможность запароливания 2мя комбинациями ("ключевое слово" - это метсубишин термин) из 8ми цифр или букв A-F.

Самодельные программы "нажал кнопку -> получил пароль", писанные для FX0-FX2 отсылают запрос "E00800808", поэтому для FX3 они не работают
(нужна команда "E01800808").

Когда мне нужно было решить вопрос с паролем для FX3U на этом форуме ничего работающего я не нашел, поэтому решил для страждущих выложить, то что накопал в других местах.


Top
 Profile  
 
PostPosted: Thu May 17, 2012 5:15 pm 

Joined: Tue Aug 21, 2007 10:05 am
Posts: 797
искали плохо.
за совет спасибо тем паче что все последние релизы софта выложены мною :D .
:lol: вам сюда http://www.melsec.ru/forum/index.php?showtopic=4698


Top
 Profile  
 
PostPosted: Fri May 18, 2012 12:01 pm 

Joined: Thu Feb 24, 2011 1:38 pm
Posts: 5
За совет - пожалуйста, обращайтесь ещё, если что-то будет непонятно))


Top
 Profile  
 
PostPosted: Fri Aug 17, 2012 10:41 am 

Joined: Mon Mar 31, 2008 2:29 pm
Posts: 398
Location: Ryazan, Russia
Спасибо, anton2703, Ваша методика меня выручила.


Top
 Profile  
 
PostPosted: Fri Oct 04, 2013 12:14 am 

Joined: Mon Nov 14, 2011 6:17 pm
Posts: 1
anton2703 wrote:
Собсно, двойной пароль я не победил,


Удалось кому-нибудь победить двойной пароль (два keyword по 8 символов) от FX3G/3U ?
Только просьба, не отсылать к portmon, утилите вытаскивания пароля и т.п.. На FX3G/3U при 2-х keyword это не работает.

anton2703 wrote:
есть предположение, что если как-нибудь заменить ответ от контроллера на правильный (H2000), то фокус может получиться, если кто умеет пробуйте.

Нет, это не работает. При подмене девелопер ругается, что у Вас сбои в обмене данными. (Да, CRC подправил - причина не в этом). Было бы забавно, если бы избавившись от передачи пароля в явном виде разработчики совершили такую ошибку, как передачу ответа в незапароленом виде.
Интересно, что смотря за обменом, видно, что разница в порядке обмена данными в случае если пароль есть и если его нет, наступает с того момента, как ПК отсылает запрос с первыми двумя полезными байтами "EC". так же интересно, что последующее содержимое запроса каждый раз разное. и ответ всегда разный. То есть отправляем каждый, например, пустой пароль и каждый раз посылка новая.
пример

Code:
2->1 (00011)EC 1E DC A2 4C 5 (!) 1->2 (00008)30 B8 F2 16
2->1 (00011)EC 28 70 21 91 1 (!) 1->2 (00008)94 EF D3 D2
2->1 (00011)EC 22 DA 74 17 D (!) 1->2 (00008)E3 99 6C 09
2->1 (00011)EC 17 A4 3F BE 2 (!) 1->2 (00008)C1 8A F2 79
2->1 (00011)EC 12 0A 1D CB E (!) 1->2 (00008)96 88 0B 52
2->1 (00011)EC 31 3D 79 91 4 (!) 1->2 (00008)00 AA 65 36

Установить кукую-то систему не удалось. Похоже ПК закодировано запрашивает, или передаёт хэш, состояние запаролинности ПЛК. Тот отвечает, опять же зашифровано, что да пароль есть (даже 2) и далее при подмене ответа на запрос E0 08 15 20 2 на 0000 или 2000, в ПК происходит "не контакт" - типа по этому запросу закодировано, а по этому - нет. И он интеллигентно предполагает, что это из-за неполадок со связью. Ну, в общем он прав :)


anton2703 wrote:
В общем легко заметить, что при вводе "00000000 00000000", передаётся "04070805 47854285". Если вводить
отличне от нуля символы, к закодированному слову по-символьно добавляется разность от нуля, ну и плюс пару особенных правил, например если 1й символ будет 1 (10000000 00000000), то закодированное слово "04070805 7(!)7854285".

не совсем верно. Ну, то есть идея верная. Есть база, и посимвольное изменение в зависимости от отличия от 0. Да, это предположение верно. Но только там не разность добавляется. Там интереснее. Во первых изменение в, например, последнем символе второго слова изменяет вовсе не последний символ кода. Во вторых, разные символы изменяются по разному: к одним, например, прибавляется разность, а от других вычитается. Есть и более сложные вычисления. Но в целом сопоставить это не сложно. Только без толку. Если установить правило кодирования/декодирования - что это даст? программа перебора пароля в 16 цифер по СОМ порту будет работать вечно.

В общем единственный вариант - попытаться убедить девелопер, что пароля нет. Но не факт, что сделав это, мы получим результат. Поскольку ПЛК, то знает, что пароль ещё есть и может запросто не отдать ничего, не смотря на все просьбы ПК.


Top
 Profile  
 
PostPosted: Thu Dec 01, 2016 9:21 am 

Joined: Thu Dec 01, 2016 9:15 am
Posts: 1
anton2703 wrote:
Снятие пароля на чтение/запись Mitsubishi MELSEC FX

Спасибо, anton2703. Данный способ помог решить проблему снятия пароля с контроллера FX2U.
Только вместо PortMon (не идёт на Windows7 x64) пришлось использовать AccessPort.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by International PLCforum® Forum Software © PLCforum
Mobile version