Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » Помогите понять что делает этот код. При помощи какой информации можно осознать действия описываемые в коде? [RSS Feed]

#1 Июль 23, 2021 23:45:06

burolf
Зарегистрирован: 2021-07-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите понять что делает этот код. При помощи какой информации можно осознать действия описываемые в коде?

import time
import sys
from bit import Key

key_count = 100000
baseName='C:\\gen_vall\\base1.txt'
profit='C:\\gen_vall\\out.txt'

print('Чтение базы…', flush=True, end='')

start = time.time()
f = open(baseName, ‘r’)
t=set(f.read().split('\n'))
end = time.time()
f.close()
print('sec:',end - start, flush=True)
y=0

print('start generation…', flush=True)
while True:
#генерация кошельков
y+=1
print('generation ',y, flush=True)
mass={}
for _ in range(key_count):
k = Key()
mass=k.to_wif()
mass=k.to_wif()
#проверка сгенерированного

print('проверка …', flush=True)
for key in mass:
if key in t:
with open(profit,'a') as out:
out.write('{},{}\n'.format(key,mass))
print('что-то нашли …', flush=True)

Офлайн

#2 Июль 24, 2021 01:01:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Помогите понять что делает этот код. При помощи какой информации можно осознать действия описываемые в коде?

burolf
При помощи какой информации можно осознать действия описываемые в коде?
Надо провести анализ, в результате которого выявить алгоритм. Для начала делишь код на части, отделённые друг от друга последовательно. Делишь так на этапы. Потом берёшь каждую из этих частей и с ней проделываешь то же самое. Делишь код на части, отделённые друг от друга последовательно. Делишь так на этапы. Потом берёшь каждую из этих частей и с ней проделываешь то же самое. Делишь код на части, отделённые друг от друга последовательно. Делишь так на этапы. И так ты делаешь, пока не дойдёшь до мелчайших конструкций. Должна получиться такая структура действий, которую можно словами описать.

Например
Берёшь большую часть, полученную после первого разделения:
  
print('проверка ...', flush=True)
for key in mass:
    if key in t:
        with open(profit,'a') as out:
            out.write('{},{}\n'.format(key,mass))
        print('что-то нашли ...', flush=True)
Описываешь её словами:
Вывести сообщение о начале проверки
Для каждого ключа в массиве выполнять
что-то
Дальше берёшь содержимое вложенного блока:
  
    if key in t:
        with open(profit,'a') as out:
            out.write('{},{}\n'.format(key,mass))
        print('что-то нашли ...', flush=True)
Описываешь его словами:
    Если ключ в массиве строк, то
что-то
Дальше берёшь содержимое вложенного блока:
  
        with open(profit,'a') as out:
            out.write('{},{}\n'.format(key,mass))
        print('что-то нашли ...', flush=True)
Описываешь его словами:
        Открыть файл для вывода
что-то
Вывести сообщение о найденном ключе
Дальше берёшь содержимое вложенного блока:
  
            out.write('{},{}\n'.format(key,mass))
Описываешь его словами:
            Записать в файл для вывода ключ и массив в виде одной строки
В итоге получается такое словесное описание:
Вывести сообщение о начале проверки
Для каждого ключа в массиве выполнять
Если ключ в массиве строк, то
Открыть файл для вывода
Записать в файл для вывода ключ и массив в виде одной строки
Вывести сообщение о найденном ключе
Вот это словесное описание, когда оно у тебя появляется постепенно, ты можешь варьировать как угодно, потому что это псевдокод. Функция или задача псевдокода состоит в том, чтобы облегчить работу с кодом, не заморачиваясь на синтаксисе.

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


tags: analysis reverse engineering



Отредактировано py.user.next (Июль 24, 2021 01:16:24)

Офлайн

#3 Июль 24, 2021 06:56:02

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Помогите понять что делает этот код. При помощи какой информации можно осознать действия описываемые в коде?

Кода исчерпывающе описывает функции программы. Для понимания достаточно кода и окружения в котором он запускается.

А вот понимание это вещь весьма субъективная. Это то как вы у себя в голове описываете функции кода.
Оно зависит от вашей головы и нужной степени детальности и ваших целей.

Когда я смотрю на ваше послание то

Возникают следующие уровни понимания.
1 Нефига смотреть код не помещен в теги “код” поэтому важная информация утеряна.
2 Раз есть import bit Это что-то для биткойнов. Может не смотреть, мне эта тема неинтересна.
3. Писал какойто лох. Нет комментариев о том что это и для чего. Указаны абсолютные пути. Код не запустится. Программа некорректна поскольку нет выхода из while
4. Проверить как работает нельзя, поскольку нет файла для чтения.

На этом этапе я остановлюсь. И мое понимание этого кода(сжатое описание) - Бесполезная некорректная программа написанная безграмотным кодером. Ничего полезного из нее не извлечешь.



Офлайн

#4 Июль 25, 2021 07:07:07

burolf
Зарегистрирован: 2021-07-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите понять что делает этот код. При помощи какой информации можно осознать действия описываемые в коде?

doza_and
Кода исчерпывающе описывает функции программы. Для понимания достаточно кода и окружения в котором он запускается.А вот понимание это вещь весьма субъективная. Это то как вы у себя в голове описываете функции кода.Оно зависит от вашей головы и нужной степени детальности и ваших целей.Когда я смотрю на ваше послание тоВозникают следующие уровни понимания.1 Нефига смотреть код не помещен в теги “код” поэтому важная информация утеряна.2 Раз есть import bit Это что-то для биткойнов. Может не смотреть, мне эта тема неинтересна.3. Писал какойто лох. Нет комментариев о том что это и для чего. Указаны абсолютные пути. Код не запустится. Программа некорректна поскольку нет выхода из while4. Проверить как работает нельзя, поскольку нет файла для чтения.На этом этапе я остановлюсь. И мое понимание этого кода(сжатое описание) - Бесполезная некорректная программа написанная безграмотным кодером. Ничего полезного из нее не извлечешь.


Мне удалось запустить этот код, но уже кучу времени идет перебор. Порядка 57 к вариантов было перебрано и ни одного совпадения с исходной базой. В исходной базе текст примерно такой:

“…35hK24tcLEWcgNA4JxpvbkNkoAcDGqQPsP
37XuVSEpWW4trkfmvWzegTHQt7BdktSKUs
1P5ZEDWTKTFGxQjZphgWPQUpe554WKDfHQ
1FeexV6bAHb8ybZjqQMjJrcCrHGW9sb6uF
37tRFZw7n94Jddq6TfVs3MbCXmDX6eMfeY…”

Офлайн

#5 Июль 25, 2021 07:11:16

burolf
Зарегистрирован: 2021-07-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите понять что делает этот код. При помощи какой информации можно осознать действия описываемые в коде?

py.user.next
Благодарю за такой подробный ответ. Жаль что все-равно не легко понять что к чему. Буду дальше разбираться. Спасибо!

Офлайн

  • Начало
  • » Центр помощи
  • » Помогите понять что делает этот код. При помощи какой информации можно осознать действия описываемые в коде? [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version