#sock #tor #arti #encode-decode #extension #flavor

tor-socksproto

在 Tor 中扩展的 SOCKS 协议的编码和解码

29 个版本 (15 个重大变更)

0.21.0 2024 年 8 月 1 日
0.20.0 2024 年 6 月 27 日
0.19.0 2024 年 6 月 5 日
0.10.0 2024 年 2 月 5 日
0.0.0 2021 年 6 月 24 日

#1571 in 网络编程

Download history 494/week @ 2024-04-27 314/week @ 2024-05-04 199/week @ 2024-05-11 271/week @ 2024-05-18 819/week @ 2024-05-25 698/week @ 2024-06-01 368/week @ 2024-06-08 1353/week @ 2024-06-15 1298/week @ 2024-06-22 1532/week @ 2024-06-29 513/week @ 2024-07-06 439/week @ 2024-07-13 752/week @ 2024-07-20 1288/week @ 2024-07-27 1298/week @ 2024-08-03 1180/week @ 2024-08-10

每月 4,581 次下载
用于 26 个 Crates(直接使用 3 个)

MIT/Apache

215KB
3.5K SLoC

tor-socksproto

实现了 Tor 提供的 SOCKS 风味。

概述

SOCKS 是一个老旧且有些脆弱的协议,用于告知 TCP 代理连接到哪里。野外有时会遇到版本 4、4a 和 5。

tor-socksproto crate 尝试隐藏协议的实际细节,并暴露一个最终提供 SocksRequest 或错误的带状态握手类型。它是 Arti 项目的一部分,该项目旨在用 Rust 实现 Tor。目前,它仅用于提供通过 Tor 网络 SOCKS 代理,但最终可能用于通过 SOCKS 代理连接到 Tor 网络。

如果您需要一个“像 Tor 一样表现”的 SOCKS 实现,这个 crate 可能是一个不错的选择,但除此之外,可能最好使用其他一些 SOCKS crate。

有关 SOCKS 的更多信息

设计说明

Arti 使用此 crate 而不是其他一些 SOCKS 实现,有两个原因

  • 首先,因为我们需要支持 Tor SOCKS 扩展。
  • 其次,有时我们需要查看大多数其他SOCKS实现不公开的个别握手的特定细节。(例如,如果我们被告知连接到原始IP地址,握手类型可以帮助我们猜测该IP地址是否来自DNS响应-在这种情况下,我们应该警告可能的DNS泄露。)

目前,tor-socksproto不执行网络代码:它通过处理一系列字节实现SOCKS握手的服务器(代理)端。我们可能(也可能不)想在将来为此crate或其他地方添加网络功能。我们肯定想添加客户端功能。

可能,这种方法将被证明对其他用途有用。如果它是,我们可以将tor-only功能放在Cargo构建功能之后,这样其他人就可以更安全地使用这个crate。

许可证:MIT OR Apache-2.0

依赖项

~15MB
~271K SLoC