首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash TorSocks问题

Bash TorSocks问题
EN

Stack Overflow用户
提问于 2015-07-03 22:27:10
回答 1查看 1.3K关注 0票数 0

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

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

错误是:

代码语言:javascript
复制
[Jul 03 17:09:23] ERROR torsocks[4422]: General SOCKS server failure (in socks5_recv_connect_reply() at socks5.c:516)

我验证了该命令确实在合法的现有洋葱urls上工作,这意味着该错误显然与torsocks有关。

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

这是我的密码:

代码语言:javascript
复制
#!/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

我们非常感谢所有的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-03 22:37:17

您根本没有给status分配任何非空值。

代码语言:javascript
复制
value=$(something >/dev/null)

...throws删除了something的输出(这就是>/dev/null所做的),因此总是无条件地将空字符串分配给value (因为$(...) --命令替换--捕获输出,而不是退出状态)。

此外,您没有丢弃错误消息,因为这些消息位于stderr (Fd2)上,而不是stdout (Fd1)上。

在意图上做出一些猜测,也许你想要的是:

代码语言:javascript
复制
if torsocks curl --fail --head "$url" >/dev/null 2>&1; then
    echo "[+] Valid hidden service $url";
else
    echo "[-] Invalid hidden service $url";
fi
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31214857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档