【问题标题】:Bash TorSocks IssueBash TorSocks 问题
【发布时间】:2015-07-03 22:27:10
【问题描述】:

理论上,我使用此脚本的目标是随机生成 .onion 网址并检查它们是否存在。基本上,status 变量发送一个 HEAD 请求然后返回响应。 head 从响应中获取第一行,然后 grep 在第一行中搜索 HTTP 标头,将输出发送到 /dev/null。如果一切顺利,status 应该设置为 true。我使用 if 语句来检查 status 是否为真。如果为真,则输出“此服务存在”,如果status不为真,则输出“此服务不存在”。

问题是,如果洋葱 url 不存在,torsocks 会返回错误。

错误是:

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

我验证了该命令确实适用于合法的现有洋葱 URL,这意味着该错误很明显与 torsocks 有关。

有人知道解决方案或可能的修复方法吗?我找不到任何有用的东西。

这是我的代码:

#!/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

非常感谢所有帮助。

【问题讨论】:

  • @shellter,好吧,用户意图似乎包括过滤 200 和 300 系列响应,这意味着我们希望在 4xx 或 5xx 上失败,所以我们至少需要添加 --fail curl 的参数。
  • @CharlesDuffy:是的,你是对的。
  • 我在 Python 中写了一些类似的东西,它目前正在使用 httping 命令而不是 curl 来遍历所有可能的 .onion 域,这似乎节省了一点开销。祝你好运。
  • @jamescampbell 我开始用 Python 做这个,但它对我来说成了问题。我肯定需要为此 bash 脚本实现线程或多处理,因为它目前每分钟迭代不超过 100 个洋葱。也祝你好运。
  • 您生成的地址过多。 Tor 使用 Base32 作为洋葱地址。此外,并非每个隐藏服务都是基于 http 的。

标签: bash shell curl tor torsocks


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2012-04-22
    • 2011-03-18
    • 2010-10-11
    • 2020-10-06
    相关资源
    最近更新 更多