Пример #1
0
    def test_extending_currency(self):
        new_currency = Currency('testcoin',
                                ticker='ttc',
                                validator='Base58Check',
                                networks=dict(main=(0x00, 0x05),
                                              test=(0x6f, 0xc4)))

        self.assertEqual(new_currency, Currencies.get(new_currency.name))
        self.assertEqual(new_currency, Currencies.get(new_currency.ticker))

        test_data = [(new_currency.name, new_currency.ticker,
                      b'1BoatSLRHtKNngkdXEeobR76b53LETtpyT', 'main')]
        for name, ticker, addr, net in test_data:
            with self.subTest(name=name, ticker=ticker, address=addr, net=net):
                res = coinaddr.validate(name, addr)
                self.assertEqual(name, res.name)
                self.assertEqual(ticker, res.ticker)
                self.assertEqual(addr, res.address)
                self.assertEqual(True, res.valid)
                self.assertEqual(net, res.network)

            with self.subTest(name=name, ticker=ticker, address=addr, net=net):
                res = coinaddr.validate(ticker, addr)
                self.assertEqual(name, res.name)
                self.assertEqual(ticker, res.ticker)
                self.assertEqual(addr, res.address)
                self.assertEqual(True, res.valid)
                self.assertEqual(net, res.network)
Пример #2
0
def is_valid_btc_address(address):
    try:
        if coinaddr.validate('btc', address.encode('UTF-8')).valid == True: return True
    except:
        pass
    try:
        if coinaddr.validate('btc-segwit', address.encode('UTF-8')).valid == True: return True
    except:
        pass
    return False
Пример #3
0
def ltc_verify(ltc_match):
    '''Decode and verify a Litecoin address'''
    try:
        return coinaddr.validate('ltc', ltc_match)
    except TypeError:
        return False
    except ValueError:
        return False
Пример #4
0
def xrp_verify(xrp_match):
    '''Decode and verify a Ripple address'''
    try:
        return coinaddr.validate('xrp', xrp_match)
    except TypeError:
        return False
    except ValueError:
        return False
Пример #5
0
def eth_verify(eth_match):
    '''Decode and verify a Ethereum address'''
    try:
        return coinaddr.validate('eth', eth_match)
    except TypeError:
        return False
    except ValueError:
        return False
Пример #6
0
def dash_verify(dash_match):
    '''Decode and verify a Dash address'''
    try:
        return coinaddr.validate('dash', dash_match)
    except TypeError:
        return False
    except ValueError:
        return False
Пример #7
0
def btc_verify(btc_match):
    '''Decode and verify a Bitcoin address'''
    try:
        return coinaddr.validate('btc', btc_match)
    except TypeError:
        return False
    except ValueError:
        return False
Пример #8
0
def neo_verify(neo_match):
    '''Decode and verify a Neocoin address'''
    try:
        return coinaddr.validate('neo', neo_match)
    except TypeError:
        return False
    except ValueError:
        return False
Пример #9
0
def doge_verify(doge_match):
    '''Decode and verify a Dogecoin address'''
    try:
        return coinaddr.validate('doge', doge_match)
    except TypeError:
        return False
    except ValueError:
        return False
Пример #10
0
 def test_validation_from_text(self):
     for name, ticker, addr, net in TEST_DATA:
         with self.subTest(name=name, address=addr, net=net):
             res = coinaddr.validate(name, addr.decode())
             self.assertEqual(name, res.name)
             self.assertEqual(ticker, res.ticker)
             self.assertEqual(addr, res.address)
             self.assertEqual(True, res.valid)
             self.assertEqual(net, res.network)
Пример #11
0
 def test_validation_by_ticker(self):
     for name, ticker, addr, net in TEST_DATA:
         with self.subTest(name=name, ticker=ticker, address=addr, net=net):
             res = coinaddr.validate(ticker, addr)
             self.assertEqual(name, res.name)
             self.assertEqual(ticker, res.ticker)
             self.assertEqual(addr, res.address)
             self.assertEqual(True, res.valid)
             self.assertEqual(net, res.network)
             del res
Пример #12
0
def validate_DASH(request, public_key):
    try:
        validation = coinaddr.validate('dash', public_key)
        if validation.valid:
            return JsonResponse(
                {
                    "Address": public_key,
                    "validation": validation.valid
                },
                safe=False)
        else:
            return JsonResponse(
                {
                    "Address": public_key,
                    "validation": validation.valid
                },
                safe=False,
                status=417)
    except:
        return JsonResponse({"Error": "An unknown error happened"},
                            safe=False,
                            status=500)
Пример #13
0
def isValidEthereumAddress(addr):
    check_address = validate('eth', bytes(addr, 'utf-8'))
    return check_address.valid
Пример #14
0
def is_valid_doge_address(address):
    try:
        if coinaddr.validate('doge', address.encode('UTF-8')).valid == True: return True
    except:
        pass
    return False
Пример #15
0
                       quotechar='|', quoting=csv.QUOTE_MINIMAL)

# header
csvwriter.writerow(['timestamp', 'datetime', 'timestamp_desc','message',  'report', 'attribution','source', 'md5','ip','domain'])

filename = 'input.txt'
fin=open(filename,'r')


for line in fin:
    line = line.replace('\n', '')
    line = line.replace('\t', '')
    print(line)
    encoded_line = line.encode('UTF-8')
    try:
        is_line_btc = coinaddr.validate('btc', encoded_line)
        if is_line_btc.valid:
            bitcoin = True
    except ValueError:
            bitcoin = False

    if line.split('.')[-1].isdigit():
        # ip
        vt_investigate_ip(line)
        pssl_investigate_ip(line)
    elif bitcoin is True:
        investigate_bitcoin(line)
    elif "." in line:
        investigate_domain(line)
    else:
        investigate_md5(line)
Пример #16
0
def proc_file(fname, tm=10):
    coin_dict = {f"{c}": [] for c in coinsres.keys()}
    coin_dict["has_coins"] = False
    res = {"coins": coin_dict}
    cmd = f'{__floss_location__} {fname} -q --output-json {fname}.json 2> /dev/null'
    try:
        process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
        process.wait(timeout=tm)
        with open(f"{fname}.json") as f:
            data = json.loads(f.read())
        strs = []
        for str_cat in data["strings"].keys():
            strs += data["strings"][str_cat]
        res["timeout"] = False
    except:
        process = subprocess.run(['strings', fname], stdout=subprocess.PIPE)
        strs = process.stdout.split(b"\n")
        strs = map(str, strs)
        res["timeout"] = True
    res["name"] = fname
    res["urls"] = []
    res["mails"] = []
    res["IPs"] = []
    with open(fname, "rb") as f:
        data = f.read()
    res["md5"] = hashlib.md5(data).hexdigest()
    res["sha256"] = hashlib.sha256(data).hexdigest()
    res["ssdeep"] = ssdeep.hash(data)
    res["tlshash"] = tlsh.hash(data)
    res["rich"] = get_richpe(fname)
    res["entropy"] = entropy(data)
    if res["rich"] is None:
        res["rich"] = ""
    fmagic = magic.Magic(mime=True, uncompress=True)
    res["magic"] = fmagic.from_file(fname)

    try:
        pe = pefile.PE(fname)
        res["imphash"] = pe.get_imphash()
    except:
        res["imphash"] = ""
    for s in strs:
        if ip_re.match(s):
            res["IPs"].append(s)
        elif url_re.match(s):
            res["urls"].append(s)
        elif mail_re.match(s):
            res["mails"].append(s)
        else:
            for coin in coinsres:
                if coinsres[coin].match(s):
                    try:
                        a = coinaddr.validate(coin, s.encode())
                        if a.valid:
                            res["coins"][coin].append(s)
                            res["coins"]["has_coins"] = True
                    except:
                        pass
    if os.path.exists(f"{fname}.json"):
        os.remove(f"{fname}.json")
    return res