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)
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
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
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
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
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
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
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
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
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)
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
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)
def isValidEthereumAddress(addr): check_address = validate('eth', bytes(addr, 'utf-8')) return check_address.valid
def is_valid_doge_address(address): try: if coinaddr.validate('doge', address.encode('UTF-8')).valid == True: return True except: pass return False
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)
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