Здравствуйте !
Есть технологическая линия китайского производства. В шкафу управления стоит контроллер S200 с программой под паролем внутри. Мне понадобился пароль, для манипуляций с программой. Как мне распаролить программу ? Может есть специальный софт для этого ?
Как узнать пароль от программы S200 контроллера
-
- Posts: 19
- Joined: Tue Aug 31, 2021 3:08 pm
-
- Posts: 224
- Joined: Wed Dec 26, 2018 5:39 pm
Re: Как узнать пароль от программы S200 контроллера
Есть софт, если версия прошивки ниже 2.0, и стоит именно 3-х уровненный пароль.
Хотя есть 4 уровень или версия 2.0 или выше - то тоже есть решение, которое на форуме не раз проскакивало.
Хотя есть 4 уровень или версия 2.0 или выше - то тоже есть решение, которое на форуме не раз проскакивало.
-
- Posts: 13
- Joined: Sun Aug 08, 2021 10:00 am
Re: Как узнать пароль от программы S200 контроллера
считываешь память программы
устройством CH341A .
как расшифровать в дампе пароль стораз описано.
если 4 уровень защиты, то взлом аппаратный.
устройством CH341A .
как расшифровать в дампе пароль стораз описано.
если 4 уровень защиты, то взлом аппаратный.
-
- Posts: 3
- Joined: Fri Feb 03, 2023 5:17 am
-
- Posts: 13
- Joined: Sun Aug 08, 2021 10:00 am
Re: Как узнать пароль от программы S200 контроллера
Spoiler
Show
Code: Select all
#!/usr/bin/python3
def byte_char(hexstr): # from "pass_for_s7.pdf"
if ( hexstr=='8a'): return ' ' #space
if ( hexstr=='8b'): return '!'
if ( hexstr=='88'): return '"'
if ( hexstr=='89'): return '#'
if ( hexstr=='8e'): return '$'
if ( hexstr=='8f'): return '%'
if ( hexstr=='8c'): return '&'
if ( hexstr=='8d'): return "'"
if ( hexstr=='82'): return '('
if ( hexstr=='83'): return ')'
if ( hexstr=='80'): return '*'
if ( hexstr=='81'): return '+'
if ( hexstr=='86'): return ','
if ( hexstr=='87'): return '-'
if ( hexstr=='84'): return '.'
if ( hexstr=='85'): return '/'
if ( hexstr=='9a'): return '0'
if ( hexstr=='9b'): return '1'
if ( hexstr=='98'): return '2'
if ( hexstr=='99'): return '3'
if ( hexstr=='9e'): return '4'
if ( hexstr=='9f'): return '5'
if ( hexstr=='9c'): return '6'
if ( hexstr=='9d'): return '7'
if ( hexstr=='92'): return '8'
if ( hexstr=='93'): return '9'
if ( hexstr=='90'): return ':'
if ( hexstr=='91'): return ';'
if ( hexstr=='96'): return '<'
if ( hexstr=='97'): return '='
if ( hexstr=='94'): return '>'
if ( hexstr=='95'): return '?'
if ( hexstr=='ea'): return '@'
if ( hexstr=='eb'): return 'A'
if ( hexstr=='e8'): return 'B'
if ( hexstr=='e9'): return 'C'
if ( hexstr=='ee'): return 'D'
if ( hexstr=='ef'): return 'E'
if ( hexstr=='ec'): return 'F'
if ( hexstr=='ed'): return 'G'
if ( hexstr=='e2'): return 'H'
if ( hexstr=='e3'): return 'I'
if ( hexstr=='e0'): return 'J'
if ( hexstr=='e1'): return 'K'
if ( hexstr=='e6'): return 'L'
if ( hexstr=='e7'): return 'M'
if ( hexstr=='e4'): return 'N'
if ( hexstr=='e5'): return 'O'
if ( hexstr=='fa'): return 'P'
if ( hexstr=='fb'): return 'Q'
if ( hexstr=='f8'): return 'R'
if ( hexstr=='f9'): return 'S'
if ( hexstr=='fe'): return 'T'
if ( hexstr=='ff'): return 'U'
if ( hexstr=='fc'): return 'V'
if ( hexstr=='fd'): return 'W'
if ( hexstr=='f2'): return 'X'
if ( hexstr=='f3'): return 'Y'
if ( hexstr=='f0'): return 'Z'
if ( hexstr=='f1'): return '['
if ( hexstr=='f6'): return '\\'
if ( hexstr=='f7'): return ']'
if ( hexstr=='f4'): return '^'
if ( hexstr=='f5'): return '_'
#03 fc ef 04 07 ef f9 0c 6f
# V E R B A T I <
# | |
# xor (fc,04) = f8
def xor_str(a,b):
result = int(a, 16) ^ int(b, 16) # convert to integers and xor them
return '{:x}'.format(result) # convert back to hexadecimal
def byte_translate(_16byte_string):
print ('_16byte_string',_16byte_string)
hexstr=''
i=0
hexstr=[0,0,0,0,0,0,0,0,0]
for j in range(0,16,2):
code=''
hexstr[i] = _16byte_string[j] + _16byte_string[j+1]
if j<3:
#print(j,'=jhexstr',hexstr[i],
print('decoded char ', byte_char (hexstr[i]) )
#if (byte_char (hexstr) == None): continue
if j>2:
print('decoded with XOR', byte_char (xor_str(hexstr[i], hexstr[i-2] ) ))
i=i+1
return
with open('FILENAME.Bin', 'rb') as f:
hexdata = f.read().hex()
f.close()
LenHex=len(hexdata)
if (LenHex<1000 or hexdata[0:12] != '4e4f44494e4e') : # in my case it was 4e4f44494e4e
print (LenHex)
print ("wrong file format")
print ( hexdata[0:12])
exit(0)
#if protection level=04
#decrease level down to 03
#change CRC
# if result None that means here is wrong place for password
for i in range (0, LenHex - 15): #in my case poiner was 48510
if ( hexdata[i]=='0' and ( hexdata[i+1]=='3' or hexdata[i+1]=='4') ):
if (hexdata[i+2]=='8' or hexdata[i+2]=='9' or hexdata[i+2]=='e' or hexdata[i+2]=='f'):
print ('pointer', i, hexdata[i:i+20])
byte_translate( hexdata[i+2:i+18])
i=i+18
exit(0)