Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2024, 19:12   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,152
По умолчанию Где в punto switcher хранятся автозамены

здравствуйте приглашаю в том числе к обсуждению BDA - видел его посты в ноябре прошлого года на другом форуме....
я в теме, например пунто 2.95 имел файл реплейс.дат он бы НЕ зашифрован, но на вин11 - где мне нужно пунто не работает. Поэтому скачал и установил последнюю версию пунто, добавил одну автозамену - она работает, но все файлы в папке C:\Users\start\AppData\Local\Yandex \Punto Switcher от 24 июля сего года ну и где в punto switcher хранятся автозамены? настройка показывать скрытые файлы и папки включена, спасибо
Ципихович Эндрю на форуме Ответить с цитированием
Старый 19.11.2024, 19:30   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,792
По умолчанию

C:\Users\username\AppData\Roaming\Y andex\Punto Switcher\User Data\replace.dat
p51x вне форума Ответить с цитированием
Старый 20.11.2024, 05:58   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,152
По умолчанию

всё где то рядом:
C:\Users\start\AppData\Local\Yandex \Punto Switcher
C:\Users\username\AppData\Roaming\Y andex\Punto Switcher\User Data\replace.dat
но у меня в C:\Users\ нет username, есть только
Default
старт
Общие
и где его искать искомое?
Ципихович Эндрю на форуме Ответить с цитированием
Старый 20.11.2024, 07:07   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,394
По умолчанию

Вместо username нужно имя своего пользователя подставить. Наверное, у вас "старт". Или можно открыть проводник и ввести путь "%AppData%\Yandex\Punto Switcher\User Data" (без кавычек).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 20.11.2024, 18:17   #5
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,152
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Или можно открыть проводник и ввести путь
поиск таким образом мне НЕ очень нравится, код в помощь:
Код:
import os

def find_file(filename, search_path):
    for root, dirs, files in os.walk(search_path):
        if filename in files:
            print(os.path.join(root, filename))

# Указываем имя файла и путь для поиска
file_to_find = 'replace.dat'
search_directory = 'C:\\'

find_file(file_to_find, search_directory)
C:\Users\start\AppData\Roaming\Yand ex\Punto Switcher\User Data\replace.dat
Ципихович Эндрю на форуме Ответить с цитированием
Старый 20.11.2024, 18:47   #6
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,152
По умолчанию

BDA, так в вашем коде
Код:
from struct import *
from codecs import open

def xor_bytes(bb):
    seed = 0x91DAFA48
    res = bytearray()
    for b in bb:
        seed = (seed * 214013 + 2531011) & 0xFFFFFFFF
        res.append(b ^ ((seed >> 16) & 0xFF))
    return bytes(res)

# dat -> txt
with open('replace.dat', 'rb') as f, open('replace-decoded.txt', 'w', encoding = 'utf-8') as g:
    f.read(4) # signature

    while True:
        length_bytes = f.read(4)
        if not length_bytes:
            break
        length = unpack('<I', length_bytes)[0]
        f.read(1) # ignore one byte
        g.write(';'.join(xor_bytes(f.read(length - 5)).decode('utf-16-le').split('\x00')[:-1]) + '\n')

# txt -> dat
with open('replace-decoded.txt', 'r', encoding = 'utf-8') as g, open('replace-encoded.dat', 'wb') as f:
    f.write(b'PSRF')

    for replace in g:
        replace_bytes = bytearray()

        for r in replace.strip().split(';'):
            replace_bytes.extend(r.encode('utf-16-le'))
            replace_bytes.extend(b'\x00\x00')

        f.write(pack('<I', len(replace_bytes) + 5))
        f.write(b'\x00') # ignored byte
        f.write(xor_bytes(replace_bytes))
как я понимаю перед запуском скрипта
нужно чтобы были три файла
replace.dat - понятно
replace-decoded.txt - понятно, создам
replace-encoded.dat - НЕ понятно, как его создать?
Ципихович Эндрю на форуме Ответить с цитированием
Старый 20.11.2024, 19:13   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,792
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
как я понимаю перед запуском скрипта
нужно чтобы были три файла
Не правильно понимаете

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
replace-decoded.txt - понятно, создам
Скрипт его сам запишет

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
replace-encoded.dat - НЕ понятно, как его создать?
Никак. Скрипт его сам запишет
p51x вне форума Ответить с цитированием
Старый 21.11.2024, 09:52   #8
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,152
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Скрипт его сам
ну да это я, что-то киксанул, но тогда текст в файлах dat должен же быть одинаков?, но у меня он отличается:
PSRF Щgё=»A3ҐjЙCO
PSRF hЩgё=»A3ҐjЙCO
смотрел с помощью Блокнота ++
файлы заполучил кодом:
Код:
import os
def find_file(filename, search_path):
    for root, dirs, files in os.walk(search_path):
        if filename in files: return os.path.join(root, filename)
# Указываем имя файла и путь для поиска
file_to_find = 'replace.dat'
search_directory = 'C:\\'
file_to_path = find_file(file_to_find, search_directory)
print(file_to_path)
replace_decoded_txt = file_to_path.replace('replace.dat', 'replace-decoded.txt')
replace_encoded_dat = file_to_path.replace('replace.dat', 'replace-encoded.dat')
from struct import *
from codecs import open

def xor_bytes(bb):
    seed = 0x91DAFA48
    res = bytearray()
    for b in bb:
        seed = (seed * 214013 + 2531011) & 0xFFFFFFFF
        res.append(b ^ ((seed >> 16) & 0xFF))
    return bytes(res)

# dat -> txt
with open(file_to_path, 'rb') as f, open(replace_decoded_txt, 'w', encoding = 'utf-8') as g:
    f.read(4) # signature
    while True:
        length_bytes = f.read(4)
        if not length_bytes:
            break
        length = unpack('<I', length_bytes)[0]
        f.read(1) # ignore one byte
        g.write(';'.join(xor_bytes(f.read(length - 5)).decode('utf-16-le').split('\x00')[:-1]) + '\n')
# txt -> dat
with open(replace_decoded_txt, 'r', encoding = 'utf-8') as g, open(replace_encoded_dat, 'wb') as f:
    f.write(b'PSRF')
    for replace in g:
        replace_bytes = bytearray()
        for r in replace.strip().split(';'):
            replace_bytes.extend(r.encode('utf-16-le'))
            replace_bytes.extend(b'\x00\x00')
        f.write(pack('<I', len(replace_bytes) + 5))
        f.write(b'\x00') # ignored byte
        f.write(xor_bytes(replace_bytes))
Ципихович Эндрю на форуме Ответить с цитированием
Старый 22.11.2024, 08:15   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,394
По умолчанию

Различия лучше смотреть в каком-нибудь Hex-редакторе, а не Notepad++. А различия возникают, т.к. в записи каждой замены есть неизвестный байт (я не понял, для чего именно он нужен), который игнорируется при преобразовании из dat в txt, и записывается нулевое значение (а исходное значение могло быть ненулевым) при преобразовании из txt в dat. Но Punto Switcher принимает такой файл замен, поэтому не стал с этим байтом разбираться.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.11.2024, 08:25   #10
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,152
По умолчанию

BDA - спасибо понял, как думаете пунто после версии 2.95 стало шифровать для
1 скорости
2 подтверждения своего величия
3 что-то ещё
??
Ципихович Эндрю на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Punto Switcher replace.dat AlexKent Софт 0 10.11.2023 01:37
Punto Switcher AlexKent Софт 5 13.07.2023 21:55
Аналог punto switcher andrey_abc Общие вопросы C/C++ 6 04.06.2015 22:47
прочитать файл replace.dat из Punto Switcher Ципихович Эндрю Свободное общение 10 12.03.2012 05:51
Свой Punto Switcher Ципихович Эндрю Фриланс 38 08.02.2012 06:00