Bash TorSocks Issue

Теоретически, моя цель с этим сценарием состоит в том, чтобы случайным образом генерировать URL-адреса.onion и проверять, существуют они или нет. По сути, переменная состояния отправляет запрос HEAD, а затем возвращает ответ. head берет первую строку из ответа, затем grep ищет HTTP-заголовок в этой первой строке, отправляя вывод в /dev/null. Если все идет хорошо, статус должен быть установлен в true. Я использую оператор if, чтобы проверить, является ли статус истинным. Если это правда, то я вывожу "эта служба существует", в то время как если состояние не истинно, выводится "эта служба не существует".

Проблема в том, что торс возвращает ошибку, если URL лука не существует.

Ошибка:

[Jul 03 17:09:23] ERROR torsocks[4422]: General SOCKS server failure (in socks5_recv_connect_reply() at socks5.c:516)

Я проверил, что команда действительно работает на допустимых существующих URL-адресах лука, а это означает, что ошибка совершенно очевидно связана с торсом.

Кто-нибудь знает решение или возможное решение? Я не мог найти ничего полезного.

Вот мой код:

#!/bin/bash

url="http://"$(cat /dev/urandom | env LC_CTYPE=C tr -dc 'a-z0-9' | fold -w 16 | head -n 1)".onion";
echo "[i] Scanning $url";
status=$(torsocks curl -s --head $url | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null);
if $status; then
    echo "[+] Valid hidden service $url";
else
    echo "[-] Invalid hidden service $url";
fi

Вся помощь очень ценится.

1 ответ

Решение

Вы никогда не назначаете status любое непустое значение вообще.

value=$(something >/dev/null)

...выбрасывает выводsomething (вот что >/dev/null и всегда будет назначать пустую строку value (поскольку $(...) - подстановка команды - фиксирует вывод, а не статус выхода).

Более того, вы не выбрасываете сообщения об ошибках, потому что они находятся на stderr (FD 2), а не на stdout (FD 1).


Делая некоторые предположения в намерении, возможно, вы хотите вместо этого:

if torsocks curl --fail --head "$url" >/dev/null 2>&1; then
    echo "[+] Valid hidden service $url";
else
    echo "[-] Invalid hidden service $url";
fi
Другие вопросы по тегам