Ладно, может это я так невнятно описал. По пунктам.
1) ок
2) по этому числу я не пытаюсь ничего понять. Я использую его для проверки сгенерированного приватного ключа. Если ключи сойдутся, то параметры подобраны правильно. Параметры я подбираю независимо ни от какого ключа абсолютно. Я уже описывал ранее, что у нас известен диапазон времени, диапазон размеров свободной оперативки и так далее. Всё это подбираемые параметры, каждый из которых в отдельности перебирается со сложностью O(1) в среднем. Но вкупе конечно имеем сложность перебора всех параметров (чтобы они сошлись в нужные нам значения) что-то наподобие O^5 (это примерно). Что гораздо гораздо меньше O^32, если тупо генерировать приватники. Пожалуй, я лучше опишу кодом:
//так выглядит или должна выглядеть исходная функция для генерирования приватника:
var key= GenerateKey();
func GenerateKey(){
var seed= GetSeed();
return GenerateHash(seed); //в итоге получаем приватник, который был сгенерирован кодом битка и продан нам
}
//внутри GetSeed() собираются параметры, такие как время, имя компа итд, генерируются их хеши и проводится какая нибудь бинарная операция, в зависимости от имплементации. Наша задача подобрать эти параметры. Переписываем код как-то так:
var dateTime = getNextDateTime(); //возвращаем время в милисекундах, начиная например от минус один день с того момента, как адрес засветился в блокчейне.
var pcName = getNextName(); //возвращаем хэш имени компа из словаря
итд. для всех параметров, причём меняем только один из пяти, не все пять сразу, повторяем пока не найдём наш приватник, который мы знаем или пока все параметры не переберутся и мы в обломе...
var seed = GetSeed(datetime, pcName, diskSize, ramSize, processNr);
var key = GenerateKey(seed);
func GetSeed(datetime, pcName, diskSize, ramSize, processNr){
//смотрим имплементацию исходного метода, который возвращает сид и подставляем наши параметры, что-то наподобие:
return dateTime^pcName^diskSize^ramSize^processNr;
}
func GenerateKey(seed)
{
return GenerateHash(seed);//используем исходную функцию с нашим сидом для генерации приватника, как и биток. если наш сид верный, получаем наш приватник, ура.
}
3) это уже дело техники, потому что тебе надо будет изменить уже меньше параметров в ещё меньшем диапазоне: оперативка, диск. Номер процесса незначителен, к тому же мы можем предположить, что он не менялся, так как имеем дело с майнером. Тут нужно идти от простого к сложному, если ничего не подобрали, то меняем. Имя компа уже точно не меняем, а это упадок сложности в разы. Разница в том, что приватники нам неизвестны, мы подставляем наши параметры в полученную функцию GetKey() и пытаемся из полученного приватника сгенерировать публичный ключ и сравнить его с теми, на котором шота лежит. Правда не смотрел, как делается публичный ключ, удастся ли его воспроизвести при имеющихся параметрах или нет. В любом случае, приватник можно импортировать и посмотреть баланс.