Некоторое время назад я установил приложение Bitcoin для Android и перевел на него 5 BTC. Перенесемся в настоящее, новый телефон, новое ПЗУ, и приложение, похоже, совершенно не желает обновлять свою цепочку блоков, а это означает, что у меня нет возможности переместить свои BTC в другое место.
Глядя на источник, он построен на ранней версии BitcoinJ, где файл кошелька, по сути, является сериализованным классом кошелька.
Взгляд на сам файл кошелька не слишком дружелюбен, хотя я уверен, что закрытый ключ находится где-то там в относительно простой форме.
Итак, это оставляет мне следующие возможности:
напишите небольшое Java-приложение, которое ссылается на ту же версию BitcoinJ, загрузите файл кошелька, получите закрытый ключ и распечатайте его.
напишите действительно тупой скрипт, который извлекает каждую последовательность 32 байтов из файла кошелька, обрабатывает его как закрытый ключ, сопоставляет его с открытым ключом, проверяет blockexplorer.com на предмет любой активности, связанной с ним. Или просто импортируйте каждую из этих последовательностей в биткойн-клиент и дайте ей пострадать.
Прежде чем я приступлю к поиску пяти биткойнов, есть ли уже что-то, что может анализировать файлы кошелька BitcoinJ и экспортировать из них ключи?
Я написал подробный ответ на это некоторое время назад. По сути, вам нужно будет рутировать свой телефон и извлечь файл кошелька с помощью apd.
После того, как вы это сделаете, вы можете расшифровать его, заглянув в сериализованный кошелек с подключенным отладчиком Java в поисках ссылки на ECKey. Затем, когда у вас есть закрытый ключ, вы можете просто передать его MtGox, который сделает для вас декодирование, а затем вы сможете перевести биткойны куда угодно.
Кроме того, проект BitCoinJ содержит несколько полезных примеров инструментов в исходном дереве. Возможно, использование одного из них поможет вам с десериализацией.
Я бы сначала попробовал вариант 1, если вы сможете найти нужную версию библиотеки. Я бы хотел попробовать сделать инструмент общего назначения для этого, но у меня нет телефона Android. Есть ли способ создать новый, пустой кошелек и разместить его копию где-нибудь в Интернете вместе с соответствующим биткойн-адресом или двумя?
Если вы пытаетесь использовать вариант 2, вы, вероятно, знаете по крайней мере один из адресов в кошельке, и поэтому вам не нужно нажимать blockexplorer для каждого предположения. Вы ожидаете, что закрытые ключи будут равномерно распределены по кошельку, поэтому, найдя несколько, вы сможете сделать более разумные предположения о том, где находятся остальные.
[Устаревший ответ, см. ниже]
В качестве обновления: текущие версии приложения Биткойн имеют функцию «Резервное копирование ключей». Это записывает резервную копию всех ключей в кошельке в файл с именем bitcoin-wallet-keys-YYYY-MM-DD
(с использованием текущей даты) в памяти телефона, который затем можно скопировать или перенести куда угодно. Файл зашифрован паролем, который вы указываете; его можно расшифровать вручную с помощью OpenSSL, запустив
openssl enc -d -aes-256-cbc -a -in bitcoin-wallet-keys-YYYY-MM-DD
После расшифровки файл представляет собой просто список закрытых ключей, по одному на строку, в стандартном сжатом формате base 58 (начиная с K). Вы можете импортировать эти ключи в другой кошелек. В биткойн-qt вы должны использовать importprivkey
консольную команду.
Дальнейшее обновление : начиная с биткойн-кошелька 3.53, описанная выше функция «Резервное копирование ключей», по-видимому, больше не существует.
org.bitcoin.production
), но остальная часть является двоичной.Safety
пункт меню.Этот скрипт, кажется, работает
https://github.com/jleni/кошелек-расшифровать
Вам просто нужно создать резервную копию, и она вернет вам мнемонику, которую вы сможете использовать в электруме или наличных из электрума.
о0'.
Двоичный маг
Металл
Сильно нерегулярный