Como Dividir Intervalos Numéricos em Blocos com Python e Salvar em CSV
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Como Dividir Intervalos Numéricos em Blocos com Python e Salvar em CSV
Se você precisa processar grandes intervalos numéricos — como endereços em formato decimal — e deseja dividir esses intervalos em blocos para facilitar o manuseio e análise posterior, este artigo apresenta uma solução prática com Python.
Além de dividir o intervalo, o script também imprime os blocos, estima a memória disponível, e exporta os dados em um arquivo CSV de forma automatizada. Ideal para tarefas envolvendo grandes volumes de dados e entropia computacional, como em criptografia, blockchain ou big data.
Pré-requisitos
- Python 3 instalado
- Bibliotecas:
psutil,gc,csv(todas incluídas na biblioteca padrão, excetopsutil)
Explicação do Código
1. Cálculo de Endereços Possíveis
A função calcular_enderecos_possiveis(inicio, fim) determina o número total de endereços em um intervalo. Isso é útil para saber a magnitude da operação.
2. Divisão em Blocos
Com dividir_blocos(), você pode quebrar grandes intervalos numéricos em blocos menores e manipuláveis. Por exemplo, dividir entre 295147905179352825856 e 590295810358705651711 em blocos de 1 quatrilhão (1015) de endereços.
3. Impressão e Liberação de Memória
A função imprimir_blocos() percorre os blocos e os imprime individualmente, liberando a memória após cada loop com gc.collect(). Isso ajuda a manter o desempenho estável mesmo com grandes volumes de dados.
4. Exportação para CSV
O conteúdo dos blocos pode ser salvo com salvar_em_csv(). O arquivo gerado terá colunas “Bloco”, “Inicio” e “Fim”, útil para importar posteriormente em bancos de dados ou planilhas.
Exemplo de Saída
[+] Estimativa de memória disponível: 15782.00 MB [+] Dividindo os endereços entre 295147905179352825856 e 590295810358705651711 em blocos de 1000000000000000 endereços. Existem 295147905179352825856 endereços possíveis com 69 bits de entropia. Bloco 1: Endereços de 295147905179352825856 a 296147905179352825855 ... [+] Blocos salvos no arquivo enderecos_blocos.csv
Script Python Completo
Segue abaixo o script completo que você pode executar em seu ambiente local:
import psutil
import gc
import csv
def calcular_enderecos_possiveis(inicio, fim):
num_enderecos = fim - inicio + 1
print(f"Existem {num_enderecos} endereços possíveis com 69 bits de entropia.")
return num_enderecos
def dividir_blocos(inicio, fim, tamanho_bloco):
num_enderecos = fim - inicio + 1
blocos = []
num_blocos = num_enderecos // tamanho_bloco
if num_enderecos % tamanho_bloco != 0:
num_blocos += 1
for i in range(num_blocos):
bloco_inicio = inicio + i * tamanho_bloco
bloco_fim = bloco_inicio + tamanho_bloco - 1
if bloco_fim > fim:
bloco_fim = fim
blocos.append((bloco_inicio, bloco_fim))
return blocos
def imprimir_blocos(blocos):
for i, bloco in enumerate(blocos):
bloco_inicio, bloco_fim = bloco
print(f"Bloco {i+1}: Endereços de {bloco_inicio} a {bloco_fim}")
gc.collect()
def salvar_em_csv(blocos, arquivo_csv):
with open(arquivo_csv, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(["Bloco", "Inicio", "Fim"])
for i, bloco in enumerate(blocos):
writer.writerow([i+1, bloco[0], bloco[1]])
print(f"\n[+] Blocos salvos no arquivo {arquivo_csv}")
def main():
inicio = int(295147905179352825856)
fim = int(590295810358705651711)
tamanho_bloco = 10**15
memoria_disponivel = psutil.virtual_memory().available
memoria_disponivel_mb = memoria_disponivel / (1024 ** 2)
print(f"\n[+] Estimativa de memória disponível: {memoria_disponivel_mb:.2f} MB")
print(f"[+] Dividindo os endereços entre {inicio} e {fim} em blocos de {tamanho_bloco} endereços.")
calcular_enderecos_possiveis(inicio, fim)
blocos = dividir_blocos(inicio, fim, tamanho_bloco)
imprimir_blocos(blocos)
salvar_em_csv(blocos, "enderecos_blocos.csv")
if __name__ == "__main__":
main()
Casos de Uso Comuns
- Análise de grandes intervalos de endereços IP ou carteiras blockchain
- Divisão de tarefas computacionais em clusters
- Organização de ranges para mineração de dados ou brute-force ético
Responsabilidade e Ética
Este artigo tem caráter educacional e deve ser usado com responsabilidade. Ao lidar com scripts que manipulam grandes volumes de dados ou são aplicáveis em áreas como segurança da informação, é essencial avaliar cada aplicação de forma ética e legal.
Cada leitor é responsável por realizar sua própria análise crítica e não utilizar ou investir recursos em áreas que não compreende totalmente. O uso indevido de automações em ambientes sensíveis pode causar danos significativos.
Fonte e Contribuidores
O script foi construído com base em boas práticas da linguagem Python e pode ser adaptado conforme sua necessidade. Para mais informações sobre a biblioteca psutil, acesse o site oficial:
https://psutil.readthedocs.io/en/latest/

Comentários
Comente só assim vamos crescer juntos!