
03.11.2023, 19:00
|
|
Постоянный
Регистрация: 20.02.2022
Сообщений: 946
С нами:
2226127
Репутация:
68
|
|
Сообщение от prada666
Наоборот, мне нужно их разкодировать.
У меня строчки в таком формате - _C("\\xa4\\x97\\xa3\\xa7\\x9b\\xa4\\x97").
Пишу на питоне декриптор для этого, но что-то не получается.
Python:
Код:
import
os
import
re
def
_C
(
text
)
:
res
=
""
n
=
ord
(
text
[
0
]
)
+
ord
(
text
[
-
1
]
)
text
=
text
[
1
:
-
1
]
for
i
in
range
(
len
(
text
)
)
:
res
+=
chr
(
(
ord
(
text
[
i
]
.
encode
(
'utf-8'
)
)
-
n
)
%
256
)
return
res
file_path
=
input
(
"Введите путь к файлу Lua: "
)
file_name
=
os
.
path
.
basename
(
file_path
)
with
open
(
file_path
,
'r'
,
encoding
=
'utf-8'
,
errors
=
'ignore'
)
as
file
:
lines
=
file
.
readlines
(
)
result
=
''
for
line
in
lines
:
match
=
re
.
search
(
r'_C\("([^"]+)"\)'
,
line
)
while
match
:
encrypted_string
=
match
.
group
(
1
)
decrypted_string
=
_C
(
encrypted_string
)
line
=
line
.
replace
(
f'_C("{encrypted_string}")'
,
f'"{decrypted_string}"'
,
1
)
match
=
re
.
search
(
r'_C\("([^"]+)"\)'
,
line
)
result
+=
line
with
open
(
f'{file_name}_unprot.lua'
,
'w'
,
encoding
=
'utf-8'
,
errors
=
'ignore'
)
as
result_file
:
result_file
.
write
(
result
)
print
(
f'Декодирование завершено. Проверьте файл{file_name}_unprot.lua.'
)
input
(
)
Вся проблема в функции _C
upd:
В луашнике, который мне нужно декодировать, эта функция выглядит так:
Lua:
Код:
function
_C
(
slot0
)
for
slot5
in
string
.
gmatch
(
slot0
,
"."
)
do
slot1
=
""
..
string
.
char
(
string
.
byte
(
slot5
)
-
50
)
end
return
slot1
end
Так тут вообще кодировки нет, от каждого числа в хексе 50 отнимай и все
|
|
|