Рассмотрим на примере ПЛК фирмы SAMSUNG RS Oemax CPU750A подбор пароля. Из документации выяснено, что пароль содержит в себе 4 знака в 16-тиричном формате (HEX). Подключение производится через TOOL-PORT с помощью преобразователя USB-COM. Для этого необходимо заранее выбрать в настройках программы необходимый Com-порт.
В настройках Windows узнаем номер порта = 3
Указываем этот номер в настройках программы WinFPST v2.24
Пример подключения ПК к ПЛК
Листинг кода программы в AutoIT v3.5.4
run ("C:\Program Files\FARA PLC\WinFPST 2\WinFPST.exe")
winwaitactive('WinFPST','U p l o a d f r o m P L C')
ControlClick ('WinFPST','U p l o a d f r o m P L C', '[CLASS:Button; INSTANCE:3]')
winwaitactive('WinFPST','PLC is disabled to write/read')
ControlClick ('WinFPST','PLC is disabled to write/read', '[CLASS:Button; INSTANCE:1]')
winwaitactive('Set PLC Password - Untitle1')
send('{tab}')
clipput('')
$a=0
$b=65535
for $i=$a to $b; от 0 до 65535
$pas = hex($i,4)
clipput($pas)
send('^v')
$c=clipget()
send('{enter}')
sleep(500)
if winactive ('WinFPST','Entered password is incorrect') then
send('{enter}')
elseif not winactive ('WinFPST','Entered password is incorrect') then
sleep(500)
if winactive ('WinFPST','Entered password is incorrect') then
send('{enter}')
elseif not winactive ('WinFPST','Entered password is incorrect') then
sleep(500)
if winactive ('WinFPST','Entered password is incorrect') then
send('{enter}')
elseif not winactive ('WinFPST','Entered password is incorrect') Then
sleep(2500)
if winactive ('WinFPST','Entered password is incorrect') then
send('{enter}')
elseif not winactive ('WinFPST','Entered password is incorrect') Then
sleep(2500)
if winactive ('WinFPST','PLC became enabled to write/read') then
MsgBox(0,"пароль определен",$c)
exit
elseif not winactive ('WinFPST','PLC became enabled to write/read') then
msgbox(16,'ошибка!! подбор остановился на',$c)
exit
endif
endif
EndIf
EndIf
EndIf
next
MsgBox(48, "","пароль не определен. попробуй еще!")
Сохраняет в текстовый файл все перебранные пароли в файл AllPasswords.txt, а также сохраняет отдельно подобранный пароль в файл CorrectPassword.txt.
run ("C:\Program Files\FARA PLC\WinFPST 2\WinFPST.exe")
winwaitactive('WinFPST','U p l o a d f r o m P L C')
ControlClick ('WinFPST','U p l o a d f r o m P L C', '[CLASS:Button; INSTANCE:3]')
winwaitactive('WinFPST','PLC is disabled to write/read')
ControlClick ('WinFPST','PLC is disabled to write/read', '[CLASS:Button; INSTANCE:1]')
;winwaitactive('Set PLC Password - Untitle1')
sleep (100)
send('{tab}')
clipput('')
$a=0
$b=65535
for $i=$a to $b; от 0 до 65535
$pas = hex($i,4)
;winwaitactive('Set PLC Password - Untitle7')
;sleep(150)
;MsgBox(0, "текущий проверяемый пароль", $pas)
;-----------------------------------------------------------------------------
;--------- ЗАПИСЬ ДАННЫХ В ТХТ ФАЙЛ -------------------
;-----------------------------------------------------------------------------
; Открываем текстовый файл для записи и добавляем в конец новую строчку
; В режиме для записи файл создается, даже если его нет.
$TXTAll = FileOpen ( 'C:\AllPasswords.txt', 1)
sleep (50)
; Пишем в ранее открытый файл в первую строку текущую дату ДЕНЬ.МЕСЯЦ.ГОД
FileWrite($TXTAll ,$pas & @CRLF)
; Закрываем ранее открытый файл
FileClose($TXTAll)
sleep (50)
clipput($pas)
send('^v')
$c=clipget()
send('{enter}')
sleep(850)
if winactive ('WinFPST','PLC became enabled to write/read') then
MsgBox(0,"пароль определен",$c)
sleep (1000)
send('{enter}')
$TXT = FileOpen ( 'C:\CorrectPassword.txt', 1)
sleep (100)
; Пишем в ранее открытый файл в первую строку текущую дату ДЕНЬ.МЕСЯЦ.ГОД
FileWrite($TXT ,$c & @CRLF)
; Закрываем ранее открытый файл
FileClose($TXT)
sleep (100)
exit
endif
send('{enter}')
sleep(350)
next
MsgBox(48, "","цикл завершен")