Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
4 июля 2012, 10:59:53 AM   # 1
 
 
Сообщения: 2212
Цитировать по имени
цитировать ответ
по умолчанию Re: Агрегирование адреса в кошельках (используя armoryengine)

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Так как в настоящее время много пуха об операциях pirateat40 (IS это Понци? Это законно? Где он получает свои монеты из / назад, если он действительно продает их OTC? Как это GPUMax фитинга в?), Я думаю, что один из лучшие способы для анализа ситуации, чтобы получить адрес, который, несомненно, принадлежит ему, надежда на объединенные входы, если он посылает что-то из этого адреса, предположим, они принадлежат ему, а также (как он должен был бы иметь закрытые ключи для этого), и работать наш путь оттуда, пока мы все связаны адреса на один адрес Bitcoin.
Кроме того, что-то вроде этого также может быть полезным для других целей, и я не нашел много проектов, касающихся этого (один будет toolongdidntread.com) ...

После этого, мы можем предположить, что это, как его бумажник и проверить баланс, денежные потоки и т.д. (которые в настоящее время немного сверх того, что я сделал до сих пор).

Первая проблема, которую я столкнулся, однако,:
Это мой код до сих пор на самом деле правильно? Я не хочу обвинять или делать выводы, когда выясняется, что я включил адрес MtGox по глупости ...

В любом случае, вот код для отслеживания любого адреса (поставляется в "trackaddr" список) для нескольких входов. Он будет перебирать весь blockchain несколько раз, пока не более новые входные данные не найдены. Из-за недавнего blockchain спама, я ограничил его в настоящее время, чтобы заблокировать 160000 (достаточно для адреса у меня есть до сих пор), и там, наверное, лучше, чем способ работы ~ 10 раз на протяжении всей цепи. У меня есть быстрый процессор, однако, так что это не очень беспокоит меня атм, тем больше беспокоит то, если она действительно делает то, что он должен делать, и не имеет никаких шансов на собирание и в том числе некоторые случайные другие адреса.

Код (пожертвования Оружейных в адрес, чтобы заблокировать 170000):
Код:
от armoryengine импорта *

BDM_LoadBlockchainFile ()

topBlock = TheBDM.getTopBlockHeight ()

trackaddr = [ '1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX']
taintedblocks = []

addratstart = Len (trackaddr)
addratend = 0

Итерации = 0
transactioncount = 0

в то время как addratstart = addratend:
  transactioncount = 0
  Итерации + 1 =
  addratstart = Len (trackaddr)
  для ч в xrange (0, 170000): # topBlock + 1):
    если ч% 10000 == 0:
      печать '\ tScanned% D блоков' % ч
      печать «Найдено% г адреса до сих пор.» % Len (trackaddr)
    
    заголовок = TheBDM.getHeaderByHeight (ч)
    txList = header.getTxRefPtrList ()
    для ТХ в txList:
      foundaddr = False
      для нин в диапазоне (tx.getNumTxIn ()):
        txin = tx.getTxInRef (нин)
        пытаться:
          senderAddr20 = TheBDM.getSenderAddr20 (txin)
          адрес = hash160_to_addrStr (senderAddr20)
          #print адрес
          если адрес в trackaddr:
            foundaddr = True
            Распечатать "НАЙДЕНО СДЕЛКИ! В блоке " + Ул (з)
        Кроме:
          проходить
      если foundaddr это правда:
        для нин в диапазоне (tx.getNumTxIn ()):
          txin = tx.getTxInRef (нин)
          пытаться:
            senderAddr20 = TheBDM.getSenderAddr20 (txin)
            адрес = hash160_to_addrStr (senderAddr20)
            trackaddr.append (адрес)
          Кроме:
            проходить
        trackaddr = список (набор (trackaddr))
        transactioncount + 1 =
        taintedblocks.append (ч)
        taintedblocks = список (набор (taintedblocks))
  addratend = Len (trackaddr)

печать trackaddr
печать taintedblocks
Распечатать "Пошел через раз blockchain% й!" % итераций
Распечатать "Найдено% D сделки" % transactioncount
Распечатать "Найдено% D блоков, где были включены эти операции" % Len (taintedblocks)
Распечатать "Найдено% D адрес" % addratend

О, и я не буду размещать какие-либо результаты (это легко с оружейным включить все найденные адреса в "бумажник" например, и читать расходуемый баланс, что в каждом блоке) публично или премьеры, пока я не проверял этот код, чтобы быть правильно! Также пират кажется довольно параноидально размещения Bitcoin адреса, принадлежащие к нему, так что удачи в поиске некоторых (если вы не клиент на BTCS&T, то вы, конечно, можете использовать ваш адрес депозита).

Редактировать:
Я использовал оружейную 0.76 rc1 - текущая версия 0,81 бросает:
Код:
Traceback (самый последний вызов последнего):
  файл "! findwallet.py", Строка 29, в <модуль>
    для нин в диапазоне (tx.getNumTxIn ()):
  файл "XXXXXXXXX \ Armory_0_81 \ CppBlockUtils.py"
, линия 813, в <лямбда>
    __getattr__ = лямбда самость, имя: _swig_getattr (я, TxRef, имя)
  файл "XXXXXXXXX \ Armory_0_81 \ CppBlockUtils.py"
, линии 51, в _swig_getattr
    поднять AttributeError (имя)
AttributeError: getNumTxIn
Sukrim сейчас офлайн Пожаловаться на Sukrim   Ответить с цитированием Мультицитирование сообщения от Sukrim Быстрый ответ на сообщение Sukrim


Как заработать Биткоины?
Без вложений. Не майнинг.


5 июля 2012, 6:52:57 PM   # 2
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Агрегирование адреса в кошельках (используя armoryengine)

Получил 1806 Биткоинов
Реальная история.





Версия 0.80 была переделка базовой blockchain двигателя, в результате чего мне пришлось изменить некоторые из интерфейсов несколько более масштабируемым. Как таковой, "TxRef" объекты в основном только указатели на blk000X.dat местоположения файлов. Все методы теперь являются частью "Техас" объекты, которые являются копиями TX-данных. Таким образом, следующий код необходимо изменить

ИЗ

котировка

    txList = header.getTxRefPtrList ()
    для Техас в txList:
      foundaddr = False
      для нин в диапазоне (tx.getNumTxIn ()):
      ...


К


котировка

    txList = header.getTxRefPtrList ()
    для txref в txList:
      Тх = txref.getTxCopy ()
      foundaddr = False
      для нин в диапазоне (tx.getNumTxIn ()):
      ...


И я заметил, что вы отслеживаете свой адрес в вашем примере ...
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

5 июля 2012, 11:17:57 PM   # 3
 
 
Сообщения: 2212
Цитировать по имени
цитировать ответ
по умолчанию Re: Агрегирование адреса в кошельках (используя armoryengine)

Спасибо за помощь, я изменил сценарий теперь немного следующий (запускается теперь с оружейной 0.81):
Код:
от armoryengine импорта *

BDM_LoadBlockchainFile ()

topBlock = TheBDM.getTopBlockHeight ()

trackaddr = ДИКТ ({ 'pirateat40 GPUMAX': [ '1PSf86KnLuzM7Ris5kDhTEZwooR3p2iyfV'],
                  'Оружейная Client Developer': [ '1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX']})

addratstart = 0
для пункта в trackaddr.itervalues ​​():
     addratstart + = Len (пункт)

addratend = 0

Итерации = 0

в то время как addratstart = addratend:
  Итерации + 1 =
  addratstart = 0
  для пункта в trackaddr.itervalues ​​():
     addratstart + = Len (пункт)
  для ч в xrange (0, topBlock + 1):
    если ч% 5000 == 0:
      печать '\ tScanned% D блоков' % ч
   
    заголовок = TheBDM.getHeaderByHeight (ч)
    txList = header.getTxRefPtrList ()
    для txref в txList:
      Тх = txref.getTxCopy ()
      foundaddr = False
      addressowner = ''
      для нин в диапазоне (tx.getNumTxIn ()):
        txin = tx.getTxIn (нин)
        пытаться:
          senderAddr20 = TheBDM.getSenderAddr20 (txin)
          адрес = hash160_to_addrStr (senderAddr20)
          #print адрес
          для владельца в trackaddr.keys ():
            если адрес в trackaddr [владелец]:
              foundaddr = True
              addressowner = владелец
              Распечатать "НАЙДЕНО СДЕЛКИ! В блоке " + Ул (Н) + 'принадлежит' + addressowner
              ломать
        Кроме:
          проходить
      если foundaddr это правда:
        для нин в диапазоне (tx.getNumTxIn ()):
          txin = tx.getTxIn (нин)
          пытаться:
            senderAddr20 = TheBDM.getSenderAddr20 (txin)
            адрес = hash160_to_addrStr (senderAddr20)
            trackaddr [addressowner] .append (адрес)
          Кроме:
            проходить
        trackaddr [addressowner] = лист (комплект (trackaddr [addressowner]))
  addratend = 0
  для пункта в trackaddr.itervalues ​​():
     addratend + = Len (пункт)

печать trackaddr
Распечатать "Пошел через раз blockchain% й!" % итераций
Распечатать "Найдено% D адреса в общей сложности" % addratend
для владельца в trackaddr.keys ():
     владелец печати + 'имеет' ул (Len (trackaddr [владелец])) + 'адрес' +

Адрес пират приходит от Кстати. а также адрес пожертвование общественности в любом случае, и один из первых я случайно найденных при поиске адреса.

Это легко теперь ввести более "Название Адрес" отношения и искать для них всех, хотя он может получить странно, если вы пытаетесь дать 2 разные названия одной и той же группе адресов я боюсь ... Я proabably нужен список имен, а также для каждой сущности там. Кроме того, я не протестированные очень жесткие печенье (GLBSE, MtGox (!)), Так что я не знаю, если это хорошо масштабируется. Для отслеживания меньших / бумажников среднего размера должно быть достаточно, хотя.
Sukrim сейчас офлайн Пожаловаться на Sukrim   Ответить с цитированием Мультицитирование сообщения от Sukrim Быстрый ответ на сообщение Sukrim



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW