├── Brain33.py ├── Brain33_V5.py ├── INSTALL.bat ├── INSTALL.sh ├── README.md ├── brain33-s.gif ├── media ├── Brain33_tagCoveredtrans.png ├── README.md ├── Screen_Brain33-Setup_Portabl.png ├── Screen__Brain33__Words.png ├── brain33-s.gif ├── brain33-v4.3.0.png ├── brain33__screen-01.png ├── brain33__screen-02.png ├── brain33_v3.gif └── brain33_v3_s.gif └── script ├── README.md ├── download_addr.sh ├── download_words.md ├── download_words.sh ├── install_dependencies.sh └── setup_brain33.sh /Brain33.py: -------------------------------------------------------------------------------- 1 | import os, requests, base64 2 | import json 3 | from requests_html import HTMLSession 4 | import codecs, random, hashlib, ecdsa, sys, time 5 | from bit import Key 6 | from bit.format import bytes_to_wif 7 | import requests_random_user_agent 8 | from rich.console import Console 9 | 10 | cl = Console() 11 | 12 | 13 | e = b'Q29sb3IgPSBiJ1kyeGhjM01nUTI5c2IzSW9LVG9LSUNBZ0lGSmxaQ0E5SUNkY016TmJNekZ0SndvZ0lDQWdSM0psWlc0Z1BTQW5YRE16V3pNeWJTY0tJQ0FnSUZsbGJHeHZkeUE5SUNkY016TmJNek50SndvZ0lDQWdRbXgxWlNBOUlDZGNNek5iTXpSdEp3b2dJQ0FnVFdGblpXNTBZU0E5SUNkY016TmJNelZ0SndvZ0lDQWdRM2xoYmlBOUlDZGNNek5iTXpadEp3b2dJQ0FnVjJocGRHVWdQU0FuWERNeld6TTNiU2NLSUNBZ0lFZHlaWGtnUFNBblhETXpXekp0SndvZ0lDQWdVbVZ6WlhRZ1BTQW5YREF6TTFzd2JTY0tDZ3BTWldRZ1BTQkRiMnh2Y2k1U1pXUUtSM0psWlc0Z1BTQkRiMnh2Y2k1SGNtVmxiZ3BaWld4c2IzY2dQU0JEYjJ4dmNpNVpaV3hzYjNjS1EzbGhiaUE5SUVOdmJHOXlMa041WVc0S1RXRm5aVzUwWVNBOUlFTnZiRzl5TGsxaFoyVnVkR0VLVjJocGRHVWdQU0JEYjJ4dmNpNVhhR2wwWlFwU1pYTmxkQ0E5SUVOdmJHOXlMbEpsYzJWMCcKdHhzID0gYidaR1ZtSUVkbGRGUnlZVzV6WVdOMGFXOXVLSE4wY25JcE9nb2dJQ0FnYkdsdWExOTFjbXdnUFNCbUltaDBkSEJ6T2k4dlluUmpNUzUwY21WNmIzSXVhVzh2WVdSa2NtVnpjeTk3YzNSeWNuMGlDaUFnSUNCMGNuazZDaUFnSUNBZ0lDQWdVeUE5SUVoVVRVeFRaWE56YVc5dUtDa0tJQ0FnSUNBZ0lDQlNaWEVnUFNCVExtZGxkQ2hzYVc1clgzVnliQ2tLSUNBZ0lDQWdJQ0I0Y0dGMGFDQTlJQ0l2YUhSdGJDOWliMlI1TDIxaGFXNHZaR2wyTDNSaFlteGxMM1JpYjJSNUwzUnlXelZkTDNSa1d6SmRJZ29nSUNBZ0lDQWdJRTFsZEdGa1lYUmhJRDBnVW1WeExtaDBiV3d1ZUhCaGRHZ29lSEJoZEdncENpQWdJQ0FnSUNBZ2NtVjBkWEp1SUUxbGRHRmtZWFJoV3pCZExuUmxlSFFLSUNBZ0lHVjRZMlZ3ZERvS0lDQWdJQ0FnSUNCeVpYUjFjbTRnSWkweElnPT0nCg==' 14 | 15 | exec(base64.b64decode(e).decode()) 16 | 17 | exec(base64.b64decode(Color).decode()) 18 | 19 | 20 | 21 | def PrivateKeyFromPassphrase(passphrase): 22 | return str(hashlib.sha256(passphrase.encode('utf-8')).hexdigest()) 23 | 24 | 25 | def AddrFromPrivateKeyBytes(PrivateKey): 26 | PrivateKey_Bytes: str = codecs.decode(PrivateKey, 'hex_codec') 27 | bit_compressed = Key.from_hex(PrivateKey) 28 | address_compressed = bit_compressed.address 29 | wif_uncompressed = bytes_to_wif(PrivateKey_Bytes, compressed=False) 30 | bit_uncompressed = Key(wif_uncompressed) 31 | address_uncompressed = bit_uncompressed.address 32 | return address_compressed, address_uncompressed 33 | 34 | 35 | exec(base64.b64decode(txs).decode()) 36 | cl.clear() 37 | print(f"{Red}[+]{Reset}{Yellow} Please Enter Word File Name with Type Format:{Reset} ") 38 | filename = str(input("HERE >>> ")) 39 | 40 | count = 0 41 | found = 0 42 | with open(filename, "r") as bf: 43 | for word in bf: 44 | count += 1 45 | passphrase = word 46 | PrivateKey = PrivateKeyFromPassphrase(passphrase) 47 | CoAddr, UnAddr = AddrFromPrivateKeyBytes(PrivateKey) 48 | txs_co = GetTransaction(CoAddr) 49 | txs_un: str = GetTransaction(UnAddr) 50 | if int(txs_co) > 0 or int(txs_un) > 0: 51 | found += 1 52 | ff = open('Found.txt', 'a').write(f"Compressed: {CoAddr} : {txs_co}\n" 53 | f"Uncompressed: {UnAddr} : {txs_un}\n" 54 | f"Private Key : {PrivateKey}\n" 55 | f"Passphrase : {passphrase}\n" 56 | f"{'=' * 22} MMDRZA.COM {'=' * 22}\n") 57 | else: 58 | 59 | print(f"[{Yellow}{count}{Reset} {Red}/{Reset} {Green}Found:{found}{Reset}] {CoAddr}{Red}:{Reset}{txs_co} {Red}#{Reset} {UnAddr}{Red}:{Reset}{txs_un} {Red}={Reset}{Magenta} {passphrase}{Reset}") 60 | -------------------------------------------------------------------------------- /Brain33_V5.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import time 3 | import hashlib 4 | import requests 5 | from pathlib import Path 6 | from rich.console import Console 7 | from libcrypto import PrivateKey 8 | from dataclasses import dataclass 9 | from typing import Tuple, Optional, Dict 10 | from concurrent.futures import ThreadPoolExecutor, as_completed 11 | 12 | 13 | BANNER = """[yellow] 14 | ██████╗ ██████╗ █████╗ ██╗███╗ ██╗[/yellow][white] ██████╗ ██████╗ [/white] 15 | [yellow]██╔══██╗██╔══██╗██╔══██╗██║████╗ ██║[/yellow][white] ╚════██╗╚════██╗[/white] 16 | [yellow]██████╔╝██████╔╝███████║██║██╔██╗ ██║[/yellow][white] █████╔╝ █████╔╝[/white] 17 | [yellow]██╔══██╗██╔══██╗██╔══██║██║██║╚██╗██║[/yellow][white] ╚═══██╗ ╚═══██╗[/white] 18 | [yellow]██████╔╝██║ ██║██║ ██║██║██║ ╚████║[/yellow][white] ██████╔╝██████╔╝[/white] 19 | [yellow]╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝[/yellow][white] ╚═════╝ ╚═════╝ [/white] 20 | 21 | [white]Official Website:[/white] [cyan]https://Mmdrza.Com[/cyan] 22 | [white]Github:[/white] [cyan]https://github.com/Pymmdrza[/cyan] 23 | [white]Email:[/white] [cyan]PyMmdrza@Gmail.Com[/cyan] 24 | """ 25 | 26 | API_TIMEOUT = 8 27 | MAX_RETRIES = 2 28 | REQUEST_DELAY = 0.1 29 | 30 | 31 | @dataclass 32 | class WalletInfo: 33 | passphrase: str 34 | private_key: str 35 | decimal: str 36 | compressed_address: str 37 | uncompressed_address: str 38 | compressed_txs: int = 0 39 | uncompressed_txs: int = 0 40 | compressed_balance: int = 0 41 | uncompressed_balance: int = 0 42 | 43 | 44 | class BlockchainAPI: 45 | BASE_URL = "https://blockchain.info/balance?active=" 46 | HEADERS = { 47 | "Accept": "application/json", 48 | "User-Agent": "Mozilla/5.0" 49 | } 50 | 51 | @classmethod 52 | def get_address_info(cls, addresses: Tuple[str, str]) -> Dict[str, Dict]: 53 | """ 54 | Fetch balance and transaction count for multiple addresses. 55 | Returns dict with address as key and info as value. 56 | """ 57 | url = f"{cls.BASE_URL}{addresses[0]}|{addresses[1]}" 58 | 59 | for attempt in range(MAX_RETRIES): 60 | try: 61 | response = requests.get(url, timeout=API_TIMEOUT, headers=cls.HEADERS) 62 | if response.status_code == 200: 63 | return response.json() 64 | time.sleep(REQUEST_DELAY * (attempt + 1)) 65 | except requests.RequestException: 66 | if attempt == MAX_RETRIES - 1: 67 | return {} 68 | time.sleep(REQUEST_DELAY * (attempt + 1)) 69 | return {} 70 | 71 | 72 | class CryptoWallet: 73 | @staticmethod 74 | def generate_from_passphrase(passphrase: str) -> WalletInfo: 75 | """ 76 | Generate wallet information from passphrase. 77 | Returns WalletInfo object with all necessary data. 78 | """ 79 | private_key = hashlib.sha256(passphrase.encode('utf-8')).hexdigest() 80 | 81 | pvk = PrivateKey(private_key) 82 | pub_compressed = pvk.get_public_key(compressed=True) 83 | pub_uncompressed = pvk.get_public_key(compressed=False) 84 | 85 | return WalletInfo( 86 | passphrase=passphrase, 87 | private_key=private_key, 88 | decimal=str(int(private_key, 16)), 89 | compressed_address=pub_compressed.get_address(), 90 | uncompressed_address=pub_uncompressed.get_address() 91 | ) 92 | 93 | 94 | class WalletScanner: 95 | def __init__(self, wordlist_file: str): 96 | self.wordlist_file = wordlist_file 97 | self.console = Console() 98 | self.total_scanned = 0 99 | self.total_found = 0 100 | self.total_value = 0 101 | self.session = requests.Session() 102 | 103 | def load_wordlist(self) -> list: 104 | """Load wordlist from file.""" 105 | try: 106 | with open(self.wordlist_file, 'r', encoding='utf-8') as f: 107 | return [line.strip() for line in f if line.strip()] 108 | except FileNotFoundError: 109 | self.console.print(f"[red]Error: File '{self.wordlist_file}' not found.[/red]") 110 | sys.exit(1) 111 | except Exception as e: 112 | self.console.print(f"[red]Error reading file: {e}[/red]") 113 | sys.exit(1) 114 | 115 | def update_terminal_title(self): 116 | """Update terminal title with current statistics.""" 117 | sys.stdout.write( 118 | f"\x1b]2;Scanned:{self.total_scanned} | Found:{self.total_found} | Value:{self.total_value}\x07" 119 | ) 120 | sys.stdout.flush() 121 | 122 | def format_output(self, prefix: str, info: str, highlight: bool = False) -> str: 123 | """Format output line with consistent styling.""" 124 | color = "green" if highlight else "cyan" 125 | stats = f"[white]S:[/white][cyan]{self.total_scanned}[/cyan] [white]F:[/white][cyan]{self.total_found}[/cyan] [white]V:[/white][cyan]{self.total_value}[/cyan]" 126 | return f"[grey46]MMDRZA.Com [/grey46] {stats} [{color}]{info}[/{color}]" 127 | 128 | def print_wallet_info(self, wallet: WalletInfo, found: bool = False): 129 | """Print wallet information with consistent formatting.""" 130 | color = "green" if found else "dark_blue" 131 | 132 | self.console.print(self.format_output( 133 | color, 134 | f"[grey66]Pass:[/grey66] [white on {color}]{wallet.passphrase}[/white on {color}]", 135 | found 136 | )) 137 | 138 | self.console.print(self.format_output( 139 | color, 140 | f"[white]Comp:[/white] {wallet.compressed_address} [white]TXS:[/white][cyan]{wallet.compressed_txs}[/cyan]", 141 | found 142 | )) 143 | 144 | self.console.print(self.format_output( 145 | color, 146 | f"[white]Unco:[/white] {wallet.uncompressed_address} [white]TXS:[/white][cyan]{wallet.uncompressed_txs}[/cyan]", 147 | found 148 | )) 149 | 150 | self.console.print(self.format_output( 151 | color, 152 | f"[grey46]Priv:[/grey46] [white]{wallet.private_key}[/white]", 153 | found 154 | )) 155 | 156 | def save_found_wallet(self, wallet: WalletInfo, has_balance: bool = False): 157 | """Save found wallet to appropriate file.""" 158 | filename = "ValueFound.txt" if has_balance else "TxsFound.txt" 159 | 160 | with open(filename, 'a', encoding='utf-8') as f: 161 | f.write(f"Passphrase: {wallet.passphrase}\n") 162 | f.write(f"Private Key: {wallet.private_key}\n") 163 | f.write(f"Decimal: {wallet.decimal}\n") 164 | f.write(f"Compressed: {wallet.compressed_address} | TXS: {wallet.compressed_txs} | Balance: {wallet.compressed_balance}\n") 165 | f.write(f"Uncompressed: {wallet.uncompressed_address} | TXS: {wallet.uncompressed_txs} | Balance: {wallet.uncompressed_balance}\n") 166 | f.write(f"{'=' * 50}\n") 167 | 168 | def process_wallet(self, passphrase: str) -> None: 169 | """Process a single wallet passphrase.""" 170 | wallet = CryptoWallet.generate_from_passphrase(passphrase) 171 | 172 | api_data = BlockchainAPI.get_address_info( 173 | (wallet.compressed_address, wallet.uncompressed_address) 174 | ) 175 | 176 | if api_data: 177 | comp_info = api_data.get(wallet.compressed_address, {}) 178 | uncomp_info = api_data.get(wallet.uncompressed_address, {}) 179 | 180 | wallet.compressed_txs = comp_info.get('n_tx', 0) 181 | wallet.uncompressed_txs = uncomp_info.get('n_tx', 0) 182 | wallet.compressed_balance = comp_info.get('final_balance', 0) 183 | wallet.uncompressed_balance = uncomp_info.get('final_balance', 0) 184 | 185 | self.total_scanned += 1 186 | self.update_terminal_title() 187 | 188 | has_transactions = wallet.compressed_txs > 0 or wallet.uncompressed_txs > 0 189 | has_balance = wallet.compressed_balance > 0 or wallet.uncompressed_balance > 0 190 | 191 | if has_transactions or has_balance: 192 | self.total_found += 1 193 | if has_balance: 194 | self.total_value += 1 195 | 196 | self.print_wallet_info(wallet, found=True) 197 | self.save_found_wallet(wallet, has_balance) 198 | else: 199 | self.print_wallet_info(wallet, found=False) 200 | 201 | time.sleep(REQUEST_DELAY) 202 | 203 | def run(self): 204 | """Main scanner loop.""" 205 | wordlist = self.load_wordlist() 206 | 207 | if not wordlist: 208 | self.console.print("[red]Wordlist is empty.[/red]") 209 | return 210 | 211 | self.console.print(f"[green]Loaded {len(wordlist)} passphrases. Starting scan...[/green]\n") 212 | 213 | try: 214 | for passphrase in wordlist: 215 | self.process_wallet(passphrase) 216 | except KeyboardInterrupt: 217 | self.console.print("\n[yellow]Scan interrupted by user.[/yellow]") 218 | except Exception as e: 219 | self.console.print(f"\n[red]Error during scan: {e}[/red]") 220 | finally: 221 | self.console.print(f"\n[green]Scan completed. Total: {self.total_scanned} | Found: {self.total_found} | Value: {self.total_value}[/green]") 222 | 223 | 224 | def main(): 225 | console = Console() 226 | console.clear() 227 | console.print(BANNER) 228 | 229 | # if file name not in argv 230 | argv = sys.argv 231 | if len(argv) > 1: 232 | filename = argv[1] 233 | else: 234 | console.print("[green]Enter wordlist file path (Example: [bold white]words.txt[/bold white]):[/green]") 235 | filename = input(" [INPUT] File Path : ").strip() 236 | 237 | # if no filename exit 238 | # check path is file 239 | if not Path(filename).is_file(): 240 | console.print(f"[red]File '{filename}' does not exist or is not a file.[/red]") 241 | sys.exit(1) 242 | 243 | 244 | scanner = WalletScanner(filename) 245 | scanner.run() 246 | 247 | 248 | if __name__ == "__main__": 249 | main() 250 | -------------------------------------------------------------------------------- /INSTALL.bat: -------------------------------------------------------------------------------- 1 | pip install requests-html 2 | pip install bit 3 | pip install ecdsa 4 | pip install requests-random-user-agent 5 | pip install rich 6 | -------------------------------------------------------------------------------- /INSTALL.sh: -------------------------------------------------------------------------------- 1 | sudo apt-get update&&apt-get upgrade -y 2 | sudo pip3 install requests-html bit ecdsa rich 3 | sudo pip3 install requests-random-user-agent 4 | echo "Installing Package Successfully [MMDRZA.COM]" 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](https://raw.githubusercontent.com/Pymmdrza/Brain33/mainx/media/Brain33_tagCoveredtrans.png 'Brain convert word to hex private key') 2 | 3 | # Brain33 4 | --- 5 | 6 | ## Brain33 v4.3 7 | 8 | ![Brain33 V4.3](https://raw.githubusercontent.com/Pymmdrza/Brain33/refs/heads/mainx/media/brain33-v4.3.0.png 'Brain33') 9 | 10 | >[!NOTE] 11 | >Password File: `Mmdrza.Com` 12 | 13 | Download Latest Version Brain33 : [Release `Brain v4.3`](https://github.com/Pymmdrza/Brain33/releases/tag/v4.3) 14 | 15 | --- 16 | 17 | ### Brain33 V3.0.1 18 | 19 | ![](https://raw.githubusercontent.com/Pymmdrza/Brain33/mainx/media/brain33_v3_s.gif) 20 | 21 | download and more detail's about Brain33 V3.0.1 : [Download & Detail's](https://github.com/Pymmdrza/Brain33/releases/tag/Brain33_V3.0.1) 22 | 23 | --- 24 | in this script no need to install any package from console or terminal just download and use `Brain33_V3.exe` from [here](https://github.com/Pymmdrza/Brain33/releases/tag/Brain33_V3.0.1 'Brain33 V3 DOWNLOAD NOW') 25 | 26 | --- 27 | 28 | If you are using Linux and you cannot use the installation files published in the [release](https://github.com/Pymmdrza/Brain33/releases/tag/Brain33_V3.0.1), to use version 3, you must first download this file [`Brain33_V3.py`](https://github.com/Pymmdrza/Brain33/blob/mainx/Brain33_V3.py) individually and after downloading it in your terminal or console, use the following commands to install the required packages. need Also, friends who have Windows operating system can use this file, but the instructions for installing the packages are different, follow the instructions below. (It is recommended to use the easy installation files without the need to install the package) 29 | 30 | ``` 31 | # Windows 32 | pip install rich 33 | pip install bit 34 | pip install ecdsa 35 | pip install requests-html 36 | pip install requests-random-user-agent 37 | 38 | # Linux 39 | pip3 install rich 40 | pip3 install bit 41 | pip3 install ecdsa 42 | pip3 install requests-html 43 | pip3 install requests-random-user-agent 44 | 45 | ``` 46 | 47 | 48 | ![](https://raw.githubusercontent.com/Pymmdrza/Brain33/mainx/media/brain33__screen-02.png) 49 | 50 | - Brain33 V3.0.1 `.EXE` [`DOWNLOAD`](https://github.com/Pymmdrza/Brain33/raw/mainx/Brain33_V3.0.1.exe) 51 | - Brain33 V3.0.1 `.RAR` [`DOWNLOAD`](https://github.com/Pymmdrza/Brain33/raw/mainx/Brain33_V3.0.1.rar) 52 | - Brain33 V3.0.1 `.ZIP` [`DOWNLOAD`](https://github.com/Pymmdrza/Brain33/raw/mainx/Brain33_V3.0.1.zip) 53 | 54 | --- 55 | 56 | Crack and Brute Force Attacking for Convert All Word's English and All Passlist Convert to HEX (SHA-256) Private Key 57 | 58 | ![Brain33 Screen Recorded for hunting and crack with alphabet words](https://raw.githubusercontent.com/Pymmdrza/Brain33/mainx/brain33-s.gif 'Brain33 Screen Recorded for hunting and crack with alphabet words') 59 | 60 | 61 | ### Brain33 - Windows Installer and Portable Setup : 62 | 63 | for easy install and auto installing can use setup file from Release Section [ [Here](https://github.com/Pymmdrza/Brain33/releases)] 64 | 65 | After entering the link on the above page, proceed as in the image below. If you want to download `Brain33.exe`, click on the link that I have shown with number `1`. If you want to download Portable, click on link number `2`: 66 | 67 | ``` 68 | (I note that these files are related to Windows operating systems) 69 | ``` 70 | 71 | ![Brain33 crack and hunting private key wallet bitcoin btc convert word to private key hex](https://raw.githubusercontent.com/Pymmdrza/Brain33/mainx/media/Screen_Brain33-Setup_Portabl.png 'Brain33 crack and hunting private key wallet bitcoin btc convert word to private key hex') 72 | --- 73 | if needed to word file's update can use new update password list 2023 `Words.txt` [ [Here](https://github.com/Pymmdrza/Brain33/releases/tag/Words) ] 74 | 75 | 76 | To download compressed Word files or a text file, after referring to the link above, click on number 1 to download a compressed file with the extension rar as shown in the image, and click on number 2 for a text file as shown in the image below. 77 | 78 | ![word file list alphabet password list](https://raw.githubusercontent.com/Pymmdrza/Brain33/mainx/media/Screen__Brain33__Words.png 'word file Brain33 crack and hunting private key wallet bitcoin btc convert word to private key hex') 79 | 80 | --- 81 | 82 | If you want to use the Python file directly, you can first use the [INSTALL.bat](https://github.com/Pymmdrza/Brain33/blob/mainx/INSTALL.bat) to install the packages or enter the following commands in your console: 83 | 84 | ``` 85 | # Windows : 86 | pip install requests-html 87 | pip install requests-random-user-agent 88 | pip install bit 89 | pip install rich 90 | pip install ecdsa 91 | 92 | # Debian/Linux : 93 | 94 | sudo apt-get update&&apt-get upgrade -y 95 | 96 | sudo pip3 install requests-html bit ecdsa rich 97 | sudo pip3 install requests-random-user-agent 98 | ``` 99 | after installing package's needed to Alphabet Word list or Password list or ... for converting to hex (sha-256) in script path with `.txt` format type. if needed to this file can follow [this link](https://github.com/Pymmdrza/Brain33/releases/tag/Words 'alphabet words 2023 password list') 100 | 101 | --- 102 | 103 | [+] Programmer and Owner Official Website : [Mmdrza.Com](https://mmdrza.com) 104 | 105 | [+] Telegram Official Channel [@Cryptoixer](https://cryptoixer.t.me) 106 | 107 | [+] Programmer & Owner Telegram ID [@Mr1Mmdrza](https://Mr1Mmdrza.t.me) 108 | 109 | [+] Email : PyMmdrza@Gmail.com 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /brain33-s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/brain33-s.gif -------------------------------------------------------------------------------- /media/Brain33_tagCoveredtrans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/Brain33_tagCoveredtrans.png -------------------------------------------------------------------------------- /media/README.md: -------------------------------------------------------------------------------- 1 | Media Brain33 2 | -------------------------------------------------------------------------------- /media/Screen_Brain33-Setup_Portabl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/Screen_Brain33-Setup_Portabl.png -------------------------------------------------------------------------------- /media/Screen__Brain33__Words.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/Screen__Brain33__Words.png -------------------------------------------------------------------------------- /media/brain33-s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/brain33-s.gif -------------------------------------------------------------------------------- /media/brain33-v4.3.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/brain33-v4.3.0.png -------------------------------------------------------------------------------- /media/brain33__screen-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/brain33__screen-01.png -------------------------------------------------------------------------------- /media/brain33__screen-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/brain33__screen-02.png -------------------------------------------------------------------------------- /media/brain33_v3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/brain33_v3.gif -------------------------------------------------------------------------------- /media/brain33_v3_s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pymmdrza/Brain33/2de1b28922c3af8b1ac44e0d7989a6514a27221b/media/brain33_v3_s.gif -------------------------------------------------------------------------------- /script/README.md: -------------------------------------------------------------------------------- 1 | # Shell Scripts for Brain33 Project 2 | 3 | I'll create professional shell scripts for your Brain33 project. Here are the scripts: 4 | 5 | ## 1. [Download Words Script](/download_words.sh) 6 | ## 2. [Install Dependencies Script](/install_dependencies.sh) 7 | ## 3. [Main Setup Script](/setup_brain33.sh) 8 | 9 | 10 | ### Download Words Script Documentation 11 | 12 | **File Location:** `/script/download_words.sh` 13 | 14 | **Purpose:** 15 | This script downloads the [`Words.txt`](https://github.com/Pymmdrza/Brain33/releases/download/Words/Words.txt) file from the Brain33 GitHub repository releases and saves it to the project root directory. 16 | 17 | **Features:** 18 | - Automatically detects the project root directory regardless of execution location 19 | - Supports both curl and wget for downloading 20 | - Provides colored output for better readability 21 | - Includes file existence check with user confirmation for overwrite 22 | - Verifies successful download with file size display 23 | - Error handling for missing download tools 24 | 25 | **Usage:** 26 | ```bash 27 | cd /path/to/project 28 | bash script/download_words.sh 29 | ``` 30 | 31 | **Requirements:** 32 | - curl or wget must be installed 33 | - Internet connection 34 | 35 | **Output:** 36 | - Downloads Words.txt to the project root directory 37 | - Displays download progress and completion status 38 | 39 | --- 40 | 41 | ### Install Dependencies Script Documentation 42 | 43 | **File Location:** `/script/install_dependencies.sh` 44 | 45 | **Purpose:** 46 | Installs all required Python packages for the Brain33 project with multiple installation methods for compatibility. 47 | 48 | **Features:** 49 | - Checks for pip3 availability before installation 50 | - Displays Python and pip versions 51 | - Attempts three different installation methods for each package: 52 | 1. Standard installation 53 | 2. Installation with `--break-system-packages` flag 54 | 3. Installation with `--user` flag 55 | - Provides colored output for installation status 56 | - Displays comprehensive installation summary 57 | - Lists failed packages with manual installation commands 58 | 59 | **Required Packages:** 60 | - rich 61 | - libcrypto 62 | - requests-random-user-agent 63 | 64 | **Usage:** 65 | ```bash 66 | bash script/install_dependencies.sh 67 | ``` 68 | 69 | **Requirements:** 70 | - Python3 71 | - pip3 72 | 73 | --- 74 | 75 | ### Main Setup Script Documentation 76 | 77 | **File Location:** `/script/setup_brain33.sh` 78 | 79 | **Purpose:** 80 | Complete setup script that clones the [Brain33](https://github.com/Pymmdrza/Brain33) repository and installs all required dependencies. 81 | 82 | **Features:** 83 | - Checks for required system tools (git, python3, pip3) 84 | - Clones the Brain33 repository from GitHub 85 | - Handles existing directory with user confirmation 86 | - Automatically installs pip3 if missing 87 | - Calls `install_dependencies.sh` for package installation 88 | - Provides fallback manual installation if install script is missing 89 | - Comprehensive error handling and status messages 90 | - Returns to original directory after completion 91 | 92 | **Usage:** 93 | ```bash 94 | bash setup_brain33.sh 95 | ``` 96 | 97 | **Requirements:** 98 | - git 99 | - Python3 100 | - pip3 (will be installed if missing) 101 | - Internet connection 102 | - Debian-based Linux distribution (Ubuntu, Debian, etc.) 103 | 104 | **Process Flow:** 105 | 1. Verify system requirements 106 | 2. Clone Brain33 repository 107 | 3. Install Python dependencies 108 | 4. Display completion status and usage instructions 109 | 110 | --- 111 | 112 | ### Making Scripts Executable 113 | 114 | After creating these scripts, make them executable: 115 | 116 | ```bash 117 | chmod +x script/download_words.sh 118 | chmod +x script/install_dependencies.sh 119 | chmod +x script/setup_brain33.sh 120 | ``` 121 | 122 | -------------------------------------------------------------------------------- /script/download_addr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script: download_words.sh 4 | # Description: Downloads the Words.txt file from Brain33 repository releases 5 | # Usage: Run this script from any location within the project 6 | # Output: Words.txt file will be saved in the project root directory 7 | 8 | set -e 9 | 10 | # Color codes for output 11 | RED='\033[0;31m' 12 | GREEN='\033[0;32m' 13 | YELLOW='\033[1;33m' 14 | NC='\033[0m' # No Color 15 | 16 | # Get the project root directory (one level up from script directory) 17 | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 18 | PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" 19 | 20 | # File URL and destination 21 | FILE_URL="https://github.com/Pymmdrza/Rich-Address-Wallet/releases/download/Bitcoin/Latest_Rich_Bitcoin_P2PKH.txt.gz" 22 | DEST_FILE="$PROJECT_ROOT/Words.txt.gz" 23 | 24 | echo -e "${YELLOW}Starting download process...${NC}" 25 | echo -e "Project Root: ${GREEN}$PROJECT_ROOT${NC}" 26 | echo -e "Destination: ${GREEN}$DEST_FILE${NC}" 27 | 28 | # Check if file already exists 29 | if [ -f "$DEST_FILE" ]; then 30 | echo -e "${YELLOW}Warning: Words.txt already exists in the project root${NC}" 31 | read -p "Do you want to overwrite it? (y/n): " -n 1 -r 32 | echo 33 | if [[ ! $REPLY =~ ^[Yy]$ ]]; then 34 | echo -e "${RED}Download cancelled by user${NC}" 35 | exit 1 36 | fi 37 | fi 38 | 39 | # Download the file using curl or wget 40 | if command -v curl &> /dev/null; then 41 | echo -e "${GREEN}Downloading with curl...${NC}" 42 | curl -L -o "$DEST_FILE" "$FILE_URL" --progress-bar 43 | elif command -v wget &> /dev/null; then 44 | echo -e "${GREEN}Downloading with wget...${NC}" 45 | wget -O "$DEST_FILE" "$FILE_URL" 46 | else 47 | echo -e "${RED}Error: Neither curl nor wget is installed${NC}" 48 | echo -e "${YELLOW}Please install curl or wget and try again${NC}" 49 | exit 1 50 | fi 51 | 52 | # Verify download 53 | if [ -f "$DEST_FILE" ] && [ -s "$DEST_FILE" ]; then 54 | FILE_SIZE=$(du -h "$DEST_FILE" | cut -f1) 55 | echo -e "${GREEN}Download completed successfully${NC}" 56 | echo -e "File size: ${GREEN}$FILE_SIZE${NC}" 57 | echo -e "Location: ${GREEN}$DEST_FILE${NC}" 58 | gunzip $DEST_FILE 59 | echo -e "Un Zip file successfully in : $PROJECT_ROOT" 60 | else 61 | echo -e "${RED}Error: Download failed or file is empty${NC}" 62 | exit 1 63 | fi 64 | -------------------------------------------------------------------------------- /script/download_words.md: -------------------------------------------------------------------------------- 1 | 2 | ## Download Words Script 3 | 4 | - [Download_Words.sh](https://raw.githubusercontent.com/Pymmdrza/Brain33/refs/heads/mainx/script/download_words.sh 'Download Script Alphabet words from release') downloads the `Words.txt` file from the GitHub release to the project root directory. 5 | 6 | ### Location 7 | 8 | The script is located at: `/script/download_words.sh` 9 | 10 | ### Functionality 11 | 12 | The script performs the following operations: 13 | 14 | 1. Determines the project root directory relative to the script location 15 | 2. Downloads the Words.txt file from the GitHub release using curl 16 | 3. Saves the file to the project root directory 17 | 4. Provides feedback on download progress and completion 18 | 5. Handles errors during the download process 19 | 20 | ### Usage 21 | 22 | Run the script from any location: 23 | 24 | ```bash 25 | bash script/download_words.sh 26 | ``` 27 | 28 | Or make it executable and run directly: 29 | 30 | ```bash 31 | chmod +x script/download_words.sh 32 | ./script/download_words.sh 33 | ``` 34 | 35 | ### Requirements 36 | 37 | - `curl` command must be available on the system 38 | - Write permissions to the project root directory 39 | - Internet connection to access GitHub releases 40 | 41 | ### Output 42 | 43 | The downloaded file will be saved to: `/Words.txt` 44 | 45 | ### Error Handling 46 | 47 | The script will exit with an error message if: 48 | 49 | - curl is not installed 50 | - Download fails 51 | - File cannot be written to the destination 52 | 53 | ### Features 54 | 55 | - Fast and efficient download using curl 56 | - Automatic project root detection 57 | - Progress indicator during download 58 | - Error checking and user feedback 59 | - Cross-platform compatibility (Linux, macOS, Unix-like systems) 60 | -------------------------------------------------------------------------------- /script/download_words.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script: download_words.sh 4 | # Description: Downloads the Words.txt file from Brain33 repository releases 5 | # Usage: Run this script from any location within the project 6 | # Output: Words.txt file will be saved in the project root directory 7 | 8 | set -e 9 | 10 | # Color codes for output 11 | RED='\033[0;31m' 12 | GREEN='\033[0;32m' 13 | YELLOW='\033[1;33m' 14 | NC='\033[0m' # No Color 15 | 16 | # Get the project root directory (one level up from script directory) 17 | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 18 | PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" 19 | 20 | # File URL and destination 21 | FILE_URL="https://github.com/Pymmdrza/Brain33/releases/download/Words/Words.txt" 22 | DEST_FILE="$PROJECT_ROOT/Words.txt" 23 | 24 | echo -e "${YELLOW}Starting download process...${NC}" 25 | echo -e "Project Root: ${GREEN}$PROJECT_ROOT${NC}" 26 | echo -e "Destination: ${GREEN}$DEST_FILE${NC}" 27 | 28 | # Check if file already exists 29 | if [ -f "$DEST_FILE" ]; then 30 | echo -e "${YELLOW}Warning: Words.txt already exists in the project root${NC}" 31 | read -p "Do you want to overwrite it? (y/n): " -n 1 -r 32 | echo 33 | if [[ ! $REPLY =~ ^[Yy]$ ]]; then 34 | echo -e "${RED}Download cancelled by user${NC}" 35 | exit 1 36 | fi 37 | fi 38 | 39 | # Download the file using curl or wget 40 | if command -v curl &> /dev/null; then 41 | echo -e "${GREEN}Downloading with curl...${NC}" 42 | curl -L -o "$DEST_FILE" "$FILE_URL" --progress-bar 43 | elif command -v wget &> /dev/null; then 44 | echo -e "${GREEN}Downloading with wget...${NC}" 45 | wget -O "$DEST_FILE" "$FILE_URL" 46 | else 47 | echo -e "${RED}Error: Neither curl nor wget is installed${NC}" 48 | echo -e "${YELLOW}Please install curl or wget and try again${NC}" 49 | exit 1 50 | fi 51 | 52 | # Verify download 53 | if [ -f "$DEST_FILE" ] && [ -s "$DEST_FILE" ]; then 54 | FILE_SIZE=$(du -h "$DEST_FILE" | cut -f1) 55 | echo -e "${GREEN}Download completed successfully${NC}" 56 | echo -e "File size: ${GREEN}$FILE_SIZE${NC}" 57 | echo -e "Location: ${GREEN}$DEST_FILE${NC}" 58 | else 59 | echo -e "${RED}Error: Download failed or file is empty${NC}" 60 | exit 1 61 | fi 62 | -------------------------------------------------------------------------------- /script/install_dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script: install_dependencies.sh 4 | # Description: Installs required Python packages for Brain33 project 5 | # Usage: Run this script to install all required dependencies 6 | # Requirements: Python3 and pip3 must be installed 7 | 8 | set -e 9 | 10 | # Color codes for output 11 | RED='\033[0;31m' 12 | GREEN='\033[0;32m' 13 | YELLOW='\033[1;33m' 14 | BLUE='\033[0;34m' 15 | NC='\033[0m' # No Color 16 | 17 | # Required packages 18 | PACKAGES=( 19 | "rich" 20 | "libcrypto" 21 | "requests-random-user-agent" 22 | ) 23 | 24 | echo -e "${BLUE}========================================${NC}" 25 | echo -e "${BLUE}Brain33 Dependencies Installation${NC}" 26 | echo -e "${BLUE}========================================${NC}" 27 | echo 28 | 29 | # Check if pip3 is installed 30 | if ! command -v pip3 &> /dev/null; then 31 | echo -e "${RED}Error: pip3 is not installed${NC}" 32 | echo -e "${YELLOW}Please Install Python3 and pip3 First${NC}" 33 | exit 1 34 | fi 35 | 36 | echo -e "${GREEN}Python Version:${NC}" 37 | python3 --version 38 | echo -e "${GREEN}pip3 Version:${NC}" 39 | pip3 --version 40 | echo 41 | 42 | # Function to install package with different methods 43 | install_package() { 44 | local package=$1 45 | local success=false 46 | 47 | echo -e "${YELLOW}Installing $package...${NC}" 48 | 49 | # Method 1: Standard installation 50 | if pip3 install "$package" &> /dev/null; then 51 | success=true 52 | # Method 2: Try with --break-system-packages flag 53 | elif pip3 install "$package" --break-system-packages &> /dev/null; then 54 | success=true 55 | echo -e "${YELLOW} Installed With --break-system-packages Flag${NC}" 56 | # Method 3: Try with --user flag 57 | elif pip3 install "$package" --user &> /dev/null; then 58 | success=true 59 | echo -e "${YELLOW} Installed With --user Flag${NC}" 60 | fi 61 | 62 | if [ "$success" = true ]; then 63 | echo -e "${GREEN} $package Installed Successfully${NC}" 64 | return 0 65 | else 66 | echo -e "${RED} Failed to Install $package${NC}" 67 | return 1 68 | fi 69 | } 70 | 71 | # Install all packages 72 | failed_packages=() 73 | for package in "${PACKAGES[@]}"; do 74 | if ! install_package "$package"; then 75 | failed_packages+=("$package") 76 | fi 77 | echo 78 | done 79 | 80 | # Summary 81 | echo -e "${BLUE}========================================${NC}" 82 | echo -e "${BLUE}Installation Summary${NC}" 83 | echo -e "${BLUE}========================================${NC}" 84 | 85 | if [ ${#failed_packages[@]} -eq 0 ]; then 86 | echo -e "${GREEN}All Packages Installed Successfully${NC}" 87 | exit 0 88 | else 89 | echo -e "${RED}Failed to Install the Following Packages:${NC}" 90 | for package in "${failed_packages[@]}"; do 91 | echo -e " ${RED}- $package${NC}" 92 | done 93 | echo 94 | echo -e "${YELLOW}Please try Installing them Manually:${NC}" 95 | for package in "${failed_packages[@]}"; do 96 | echo -e " pip3 install $package --break-system-packages" 97 | done 98 | exit 1 99 | fi 100 | -------------------------------------------------------------------------------- /script/setup_brain33.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script: setup_brain33.sh 4 | # Description: Main setup script for Brain33 project 5 | # Author: Pymmdrza 6 | # Usage: ./setup_brain33.sh 7 | 8 | git clone https://github.com/Pymmdrza/Brain33 9 | cd Brain33 10 | sudo apt install python3-venv -y&&python3 -m venv venv&&source venv/bin/activate 11 | venv/bin/pip install libcrypto rich requests requests-random-user-agent 12 | chmod +x script/*.sh 13 | script/download_addr.sh 14 | venv/bin/python Brain33_V5.py Words.txt 15 | --------------------------------------------------------------------------------