Real-Fruit-Snacks/Depth
GitHub: Real-Fruit-Snacks/Depth
纯 x86_64 NASM 汇编实现的完整 SSH-2.0 协议栈,提供轻量级、无依赖的安全传输通道。
Stars: 0 | Forks: 0



**纯 x86_64 NASM 汇编实现的完整 SSH-2.0 协议。**
~94 KB 静态 ELF 二进制文件。密钥交换 (X25519)、主机身份验证 (Ed25519)、加密传输 (ChaCha20-Poly1305)、交互式 shell (PTY)、SFTP、端口转发。无 libc,无依赖。
## 快速开始
**前置条件:** NASM、GNU ld、GCC
```
git clone https://github.com/Real-Fruit-Snacks/Depth.git
cd Depth
make
```
**验证:**
```
file build/depth
# ELF 64-bit LSB executable, x86-64, statically linked
./build/depth # bind mode, port 7777
ssh -p 7777 svc@target # connect with OpenSSH
```
## 功能
### ChaCha20-Poly1305 AEAD
完整的 `chacha20-poly1305@openssh.com` 传输加密。双密钥方案:K1 加密载荷,K2 加密数据包长度。序列号 nonce。每个数据包都经过身份验证。
### Ed25519 + X25519
从零实现的完整椭圆曲线密码学。X25519 Diffie-Hellman 密钥交换,Ed25519 主机密钥签名。SHA-512 内部实现,SHA-256 交换哈希。所有域运算均为纯汇编实现。
### 完整 SSH 协议栈
符合 RFC 4253/4254:版本交换、算法协商 (KEXINIT)、ECDH 密钥交换、NEWKEYS、服务请求、密码认证、通道复用(最多 8 个并发)、PTY 分配、shell/exec 请求、窗口管理。
### 交互式 Shell (PTY)
通过 `/dev/ptmx` 实现完整的伪终端支持。Fork、setsid、设置控制终端、dup2 标准输入输出、execve `/bin/bash`。基于 poll 的 I/O 中继在 PTY 主设备和 SSH 通道之间传递,并管理子进程生命周期。
### SFTP
SFTPv3 实现:open、read、write、close、stat、fstat、lstat、setstat、opendir、readdir、remove、mkdir、rmdir、rename、realpath。通过事件循环集成实现并发 shell + SFTP 会话。
### 端口转发
本地 (`ssh -L`) 和远程 (`ssh -R`) TCP 转发。本地转发使用 direct-tcpip 通道,远程转发使用全局请求处理。与 shell/SFTP 通道复用。
## 架构
```
Depth/
├── Makefile # Build targets for binary + 22 test harnesses
├── src/
│ ├── main.asm # Entry point: bind/reverse mode dispatch
│ ├── ssh_transport.asm # Version exchange, KEXINIT, ECDH, key derivation
│ ├── ssh_auth.asm # Password + pubkey authentication
│ ├── ssh_channel.asm # Channel multiplexing, window management
│ ├── ssh_client.asm # v2 event loop: poll, dispatch, PTY/pipe relay
│ ├── ssh_pty.asm # PTY allocation, shell/exec spawn
│ ├── ssh_sftp.asm # SFTPv3 dispatch: 16 opcodes
│ ├── ssh_forward.asm # Local port forwarding (direct-tcpip)
│ ├── ssh_remote_forward.asm # Remote port forwarding (tcpip-forward)
│ ├── ssh_encode.asm # SSH wire encoding: mpint, string, uint32
│ ├── ssh_aead.asm # ChaCha20-Poly1305 AEAD
│ ├── sha256.asm # SHA-256 (FIPS 180-4)
│ ├── sha512.asm # SHA-512 (for Ed25519)
│ ├── curve25519.asm # X25519 scalar multiplication
│ ├── ed25519.asm # Ed25519 sign + verify
│ ├── hmac_sha256.asm # HMAC-SHA256
│ ├── hkdf.asm # HKDF extract + expand
│ ├── net.asm # TCP socket operations
│ ├── io_dispatch.asm # Function pointer I/O abstraction
│ ├── tls13.asm # TLS 1.3 handshake + record I/O
│ └── sc_reduce_c.c # Ed25519 scalar reduction (C helper)
├── include/
│ ├── ssh.inc # SSH constants, channel struct, SFTP types
│ ├── syscall.inc # Linux syscall numbers
│ ├── config.inc # IP, port, credentials, mode settings
│ └── *.inc # AEAD, ChaCha20, Poly1305, TLS constants
└── tests/ # 25 NASM harnesses + 28 Python test runners
```
## 平台
仅限 Linux x86_64。~94 KB 静态链接 ELF 二进制文件。使用原始 `syscall` 指令和 NASM 特定语法。无 libc,无动态链接,无运行时依赖。不可移植到其他架构或操作系统。
## 安全
通过 [GitHub 安全公告](https://github.com/Real-Fruit-Snacks/Depth/security/advisories) 报告漏洞。90 天负责任披露。
**Depth 不是** C2 框架、漏洞扫描器、漏洞利用框架或反取证工具。它是用于授权安全测试的 SSH 协议实现。
## 许可证
[MIT](LICENSE) — Copyright 2026 Real-Fruit-Snacks
标签:AEAD加密, ChaCha20-Poly1305, CVE, Ed25519, NASM汇编, PTY, RFC 4253, RFC 4254, SHA-256, SHA-512, SSH, SSH-2.0协议, SSH服务器, X25519, x86_64汇编, 密码学, 密钥交换, 手动系统调用, 数字签名, 无依赖, 椭圆曲线密码学, 端口转发, 纯汇编实现, 网络安全, 通道复用, 隐私保护, 静态ELF