【发布时间】: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 上失败,所以我们至少需要添加
--failcurl的参数。 -
@CharlesDuffy:是的,你是对的。
-
我在 Python 中写了一些类似的东西,它目前正在使用 httping 命令而不是 curl 来遍历所有可能的 .onion 域,这似乎节省了一点开销。祝你好运。
-
@jamescampbell 我开始用 Python 做这个,但它对我来说成了问题。我肯定需要为此 bash 脚本实现线程或多处理,因为它目前每分钟迭代不超过 100 个洋葱。也祝你好运。
-
您生成的地址过多。 Tor 使用 Base32 作为洋葱地址。此外,并非每个隐藏服务都是基于 http 的。
标签: bash shell curl tor torsocks