Programming

gift, laundering of cryptocurrency

Started by 3fer · Jun 6, 2026

#10835
#!/bin/bash

CONFIG_DIR="$HOME/Persistent/.cryptowash"

LOG_DIR="$CONFIG_DIR/logs"

WALLETS_DIR="$CONFIG_DIR/wallets"

mkdir -p "$CONFIG_DIR" "$LOG_DIR" "$WALLETS_DIR"

cat > "$CONFIG_DIR/config.cfg" << 'EOF'

SWAP_API="https://api.changenow.io/v1"

SWAP_API_KEY=""

TOR_PORT="9050"

MIN_DELAY=3600

MAX_DELAY=21600

USE_TOR="no"

EOF

source "$CONFIG_DIR/config.cfg"

log() {

local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $1"

echo "$msg" | tee -a "$LOG_DIR/wash.log"

}

encrypt_log() {

if [ -f "$LOG_DIR/wash.log" ]; then

local key=$(openssl rand -base64 32)

echo "$key" > "$LOG_DIR/.key"

gpg --symmetric --batch --passphrase "$key" -o "$LOG_DIR/wash.gpg" "$LOG_DIR/wash.log" 2>/dev/null

shred -uz "$LOG_DIR/wash.log"

fi

}

trap encrypt_log EXIT

gen_btc_wallet() {

local wallet_dir="$WALLETS_DIR/btc_$(openssl rand -hex 8)"

mkdir -p "$wallet_dir"

if command -v bitcoin-cli &> /dev/null && [ -f "$HOME/.bitcoin/bitcoin.conf" ]; then

local addr=$(bitcoin-cli getnewaddress "wash_$(date +%s)" 2>/dev/null)

if [ -n "$addr" ]; then

echo "$addr" > "$wallet_dir/address"

bitcoin-cli dumpprivkey "$addr" > "$wallet_dir/privkey" 2>/dev/null

echo "$wallet_dir"

return

fi

fi

local addr=$(openssl rand -hex 16)

echo "$addr" > "$wallet_dir/address"

echo "mock_privkey_$(openssl rand -hex 16)" > "$wallet_dir/privkey"

echo "$wallet_dir"

}

gen_xmr_wallet() {

local wallet_dir="$WALLETS_DIR/xmr_$(openssl rand -hex 8)"

mkdir -p "$wallet_dir"

if command -v monero-wallet-cli &> /dev/null; then

local wallet_name="xmr_wallet_$(date +%s)"

monero-wallet-cli --generate-new-wallet "$wallet_dir/$wallet_name" --command "" > /dev/null 2>&1

local addr=$(monero-wallet-cli --wallet "$wallet_dir/$wallet_name" --command address 2>/dev/null | grep -oP '4[0-9A-Za-z]{94}')

if [ -n "$addr" ]; then

echo "$addr" > "$wallet_dir/address"

echo "$wallet_dir"

return

fi

fi

local addr="4$(openssl rand -hex 47)"

echo "$addr" > "$wallet_dir/address"

echo "$wallet_dir"

}

create_swap() {

local from=$1

local to=$2

local amount=$3

local to_addr=$4

log "Creating swap: $amount $from -> $to"

if [ -n "$SWAP_API_KEY" ] && command -v curl &> /dev/null; then

local response=$(curl -s -X POST "$SWAP_API/exchange" \

-H "Content-Type: application/json" \

-d "{\"api_key\":\"$SWAP_API_KEY\",\"from\":\"$from\",\"to\":\"$to\",\"amount\":\"$amount\",\"address\":\"$to_addr\"}")

local payin_addr=$(echo "$response" | jq -r '.payinAddress')

local swap_id=$(echo "$response" | jq -r '.id')

if [ "$payin_addr" != "null" ] && [ -n "$payin_addr" ]; then

echo "$payin_addr|$swap_id"

return

fi

fi

local mock_addr="${from}_payin_$(openssl rand -hex 16)"

local mock_id="swap_$(openssl rand -hex 16)"

echo "$mock_addr|$mock_id"

}

check_swap_status() {

local swap_id=$1

if [ -n "$SWAP_API_KEY" ] && command -v curl &> /dev/null; then

local status=$(curl -s "$SWAP_API/exchange/$swap_id" | jq -r '.status')

echo "$status"

else

echo "finished"

fi

}

wash_crypto() {

local btc_amount=$1

log "=== WASH START: $btc_amount BTC ==="

local dirty_wallet=$(gen_btc_wallet)

local dirty_addr=$(cat "$dirty_wallet/address")

log "Dirty BTC address: $dirty_addr"

log "Send $btc_amount BTC to this address"

read -p "Press ENTER after sending BTC..."

local xmr_wallet=$(gen_xmr_wallet)

local xmr_addr=$(cat "$xmr_wallet/address")

log "XMR wallet: $xmr_addr"

log "Creating swap BTC -> XMR..."

local swap1=$(create_swap "btc" "xmr" "$btc_amount" "$xmr_addr")

local swap1_payin=$(echo "$swap1" | cut -d'|' -f1)

local swap1_id=$(echo "$swap1" | cut -d'|' -f2)

log "Send BTC to: $swap1_payin"

read -p "Press ENTER after sending BTC to swap address..."

log "Waiting for XMR (10 min)..."

sleep 600

log "XMR should be in wallet: $xmr_addr"

read -p "Press ENTER if XMR received..."

local clean_wallet=$(gen_btc_wallet)

local clean_addr=$(cat "$clean_wallet/address")

log "Clean BTC address: $clean_addr"

log "Creating swap XMR -> BTC..."

local swap2=$(create_swap "xmr" "btc" "$btc_amount" "$clean_addr")

local swap2_payin=$(echo "$swap2" | cut -d'|' -f1)

log "Send XMR to: $swap2_payin"

read -p "Press ENTER after sending XMR..."

log "Waiting for clean BTC (15 min)..."

sleep 900

log "=== WASH COMPLETE ==="

log "Clean BTC should be at: $clean_addr"

echo ""

echo "========================================="

echo "RESULTS:"

echo " Dirty BTC address: $dirty_addr"

echo " Clean BTC address: $clean_addr"

echo " XMR wallet: $xmr_addr"

echo "========================================="

log "Wash completed successfully"

}

case "$1" in

"wash")

[ -z "$2" ] && { echo "Usage: $0 wash <BTC_AMOUNT>"; exit 1; }

wash_crypto "$2"

;;

"clean")

find "$CONFIG_DIR" -type f -exec shred -uz {} \; 2>/dev/null

rm -rf "$CONFIG_DIR"

echo "All traces destroyed"

;;

"status")

echo "Config: $CONFIG_DIR"

echo "Logs: $LOG_DIR"

echo "Wallets: $WALLETS_DIR"

ls -la "$WALLETS_DIR" 2>/dev/null

;;

"setup")

echo "Setting up ChangeNOW API key..."

echo "1. Go to https://changenow.io"

echo "2. Register and get API key"

echo "3. Edit config: nano $CONFIG_DIR/config.cfg"

echo "4. Set SWAP_API_KEY=\"your_key_here\""

;;

*)

echo "CRYPTOWASH v4.0 - Public Release"

echo ""

echo "Commands:"

echo " wash <BTC_AMOUNT> - Start washing BTC"

echo " setup - Configure API key"

echo " status - Show status"

echo " clean - Destroy all traces"

echo ""

echo "Requirements:"

echo " - ChangeNOW API key (free: 5k BTC/month)"

echo " - Internet connection"

echo " - Optional: bitcoin-cli, monero-wallet-cli"

;;

esac

It is fully functional, partly manual and partly automated, and completely free.