mirror of https://github.com/CIRCL/AIL-framework
56 lines
1.7 KiB
Python
Executable File
56 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import sys
|
|
import json
|
|
import requests
|
|
|
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'packages/'))
|
|
import Cryptocurrency
|
|
|
|
blockchain_all='https://blockchain.info/rawaddr'
|
|
|
|
# pre-alpha script
|
|
|
|
# default nb_transactions = 50
|
|
def get_bitcoin_info(bitcoin_address, nb_transaction=50):
|
|
dict_btc = {}
|
|
set_btc_in = set()
|
|
set_btc_out = set()
|
|
req = None
|
|
try:
|
|
req = requests.get('{}/{}?limit={}'.format(blockchain_all, bitcoin_address, nb_transaction))
|
|
jreq = req.json()
|
|
except Exception as e:
|
|
print(e)
|
|
return dict_btc
|
|
|
|
#print(json.dumps(jreq))
|
|
dict_btc['n_tx'] = jreq['n_tx']
|
|
dict_btc['total_received'] = float(jreq['total_received'] / 100000000)
|
|
dict_btc['total_sent'] = float(jreq['total_sent'] / 100000000)
|
|
dict_btc['final_balance'] = float(jreq['final_balance'] / 100000000)
|
|
|
|
for transaction in jreq['txs']:
|
|
for input in transaction['inputs']:
|
|
if 'addr' in input['prev_out']:
|
|
if input['prev_out']['addr'] != bitcoin_address:
|
|
set_btc_in.add(input['prev_out']['addr'])
|
|
for output in transaction['out']:
|
|
if 'addr' in output:
|
|
if output['addr'] != bitcoin_address:
|
|
set_btc_out.add(output['addr'])
|
|
|
|
dict_btc['btc_in'] = filter_btc_seen(set_btc_in)
|
|
dict_btc['btc_out'] = filter_btc_seen(set_btc_out)
|
|
return dict_btc
|
|
|
|
# filter btc seen in ail
|
|
def filter_btc_seen(btc_addr_set):
|
|
list_seen_btc = []
|
|
for btc_addr in btc_addr_set:
|
|
if Cryptocurrency.cryptocurrency._exist_corelation_field('bitcoin', btc_addr):
|
|
list_seen_btc.append(btc_addr)
|
|
return list_seen_btc
|