Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
signal-without-smartphone — 桌面应用程序,用于注册Signal账户并链接Signal Desktop,无需智能手机,使用Signal的加密协议进行安全的设备配置。 | Kitploit
工具/GitHubGitHub/almet/signal-without-smartphone
加密/解密工具移动安全隐私保护实用工具与框架身份验证
GitHubalmet/signal-without-smartphone

signal-without-smartphone

桌面应用程序,用于注册Signal账户并链接Signal Desktop,无需智能手机,使用Signal的加密协议进行安全的设备配置。

查看仓库
752354天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

signal-setup logo

无需智能手机即可设置 Signal

一个桌面应用程序,用于注册 Signal 账户并将其与 Signal Desktop 关联,全程无需智能手机。

界面截图

此工具避免了使用智能手机的需要,但在设置阶段仍需要一种接收短信的方式。 Signal 最近推出了无电话号码账户,但这仍然需要 Android 和 Google Play 服务。未来他们很可能会提供其他付款方式。

获取最新版本!

但是,为什么?

这个工具可能对你有吸引力,原因有很多:

不要让智能手机危及你消息的安全

你的 Signal 对话的安全性取决于安装它的设备的安全性:

如果你的设备在未用密码锁定的情况下丢失或被盗,当然有人可以读取上面的消息。同样,执法机构已知会使用取证工具侵入被扣押的设备,从而能够读取设备上的任何内容,包括你的消息。

— Signal 群组安全,Freedom of the Press Foundation

你可能只是没有智能手机

有些人没有智能手机,他们也应该能够使用 Signal :-)

在多台电脑或多人之间共享一个账户

该工具将自身注册为账户的主设备,并将 Signal Desktop 关联为辅助设备。Signal 允许每个账户关联五台设备,而此工具可以帮助将它们全部关联起来。例如,当你想要与同事共享一个 Signal 账户时,这会很有帮助。

为什么需要一个单独的工具?

截至目前,Signal Desktop 需要电话号码和智能手机才能设置账户。这未来可能会改变,但在此之前,你可以使用这个工具。

“我猜你的问题与 Signal 目前存在的电话号码注册方式有关。这是我们希望在今年晚些时候添加的一种无需电话号码即可注册的方式,我们正在研究这一点。[...]”

— Ehren Kret,Signal CTO,2026 年 7 月 20 日

安装

从发布页面下载适用于你系统的文件:

  • macOS:打开 .dmg 并将 Signal Setup 拖入“应用程序”。
  • Linux:AppImage:使其可执行(chmod +x Signal_Setup-*.AppImage)并运行它。如果你更喜欢,也会发布一个普通的 signal-setup-linux-* 二进制文件。
  • Windows:双击运行。

在 macOS 和 Windows 上首次启动

这些发布版本未使用付费开发者证书签名(macOS 每年 99 美元,Windows 甚至更多),因此系统会在安装后向你发出警告:

  • macOS 会显示“无法打开,因为它来自未识别的开发者。”右键点击应用并选择 打开,然后确认。你只需执行一次。如果它报告应用已“损坏”,请清除下载隔离标志:xattr -dr com.apple.quarantine "/Applications/Signal Setup.app"。

  • Windows SmartScreen 会显示“Windows 已保护你的电脑。”点击 更多信息,然后点击 仍要运行。

想自己构建吗?

cargo build --release
./target/release/signal-setup

该项目是一个 Cargo 工作区,包含两个 crate:signal-setup-core(Signal 注册与设备关联逻辑)和 signal-setup(依赖前者的桌面 GUI)。构建该工作区会生成上述 signal-setup 二进制文件。

构建要求

仅在 Linux 上,有几个系统库对 GPU/显示有用:

# Ubuntu / Debian
sudo apt install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libxkbcommon-dev libssl-dev protobuf-compiler

# Fedora
sudo dnf install libxcb-devel libxkbcommon-devel openssl-devel protobuf-compiler

# Arch
sudo pacman -S libxcb libxkbcommon openssl protobuf

关键文件

每个账户都可以从其“管理”界面导出为密钥文件: signal-account-<number>.json。它包含作为该账户主设备所需的一切, 并使用你选择的密码短语加密。

将其作为备份保留,你就能将其导入另一台机器!

密钥文件还携带主密钥,这对于在无需等待锁定过期的情况下重新注册号码非常有用。

使用 Signal 的暂存服务器进行测试

你可以针对 Signal 的暂存环境而非生产环境运行该工具, 这对于开发和测试非常有用,且不会危及你的真实账户:

./target/release/signal-setup --staging

要完成设备关联步骤,你需要一个同样连接到 staging 服务器的 Signal Desktop 实例。从源码构建 Signal Desktop 默认就会这样做:

git clone https://github.com/signalapp/Signal-Desktop.git
cd Signal-Desktop
pnpm install
pnpm start

设置 SIGNAL_SETUP_DEBUG=1 可将 Signal 验证 API 的每个响应(状态码和响应体)打印到终端,这是注册未通过时首先应查看的内容。

此外还提供 --demo 标志,用于使用假数据进行完全离线测试(无需服务器)。在演示模式下,验证码 000000 模拟一个符合设备转移条件的账户,111111 模拟一个被注册锁定的号码。

底层原理

还有其他工具能够实现这一功能,例如 AsamK 开发的优秀工具 signal-cli,但遗憾的是它们不提供图形用户界面。本工具的早期版本在底层使用了它,但要求用户安装 JVM 才能运行。

因此——也因为我认为这样会更容易——我借此机会深入研究了 Signal 的加密机制。

以下是工作原理的高层概述(本应用注册为主 Signal 设备,然后将 Signal Desktop 链接为辅助设备)。

流程如下:

%%{init: {'theme':'default', 'themeVariables': {'background':'#ffffff'}}}%%
sequenceDiagram
    actor User
    participant App as App
    participant Server as Signal Server
    participant Desktop as Signal Desktop
    participant Store as Disk + Keyring

    Note over App: Step 0: Welcome (if saved accounts)

    rect rgb(235,245,255)
    Note over User,Server: Phase 1: Request verification code
    User->>App: Step 1: enter phone (+1234567890)
    App->>Server: POST /v1/verification/session
    Server-->>App: session.id (+ captcha_required?)
    alt Captcha required
        Note over App: Step 2 shown
        User->>App: solve captcha, paste it
        App->>Server: POST .../session/{id}/code (sms)
    else No captcha
        App->>Server: POST .../session/{id}/code (sms)
    end
    Server-->>User: SMS verification code
    end

    rect rgb(235,255,235)
    Note over User,Server: Phase 2: Verify & register account
    User->>App: Step 3: enter 6-digit code
    App->>Server: PUT .../session/{id}/code {code}
    Note over App: Generate keys: ACI/PNI identity,<br/>signed pre-keys, Kyber PQ keys,<br/>master/profile keys, password
    App->>Server: POST /v1/registration (account attrs + keys)
    alt 409 Device transfer available
        Server-->>App: 409 / DeviceTransferAvailable
        Note over App: warn, retry skipping device transfer
    else 423 Registration locked
        Server-->>App: 423 / RegistrationLocked
        Note over App: ask for the account's key file
    else Success
        Server-->>App: registered
        App->>Server: PUT /v1/accounts/registration_lock (HMAC of master key)
        App->>Store: save metadata (disk) + secrets (keyring)
    end
    end

    rect rgb(255,245,235)
    Note over User,Desktop: Phase 3: Link Signal Desktop
    User->>App: Step 4: launch Desktop, "Link to existing device"
    Desktop-->>User: shows QR code
    User->>App: paste QR image / link
    App->>Server: GET /v1/devices/provisioning/code
    Server-->>App: verification_code
    Note over App: Build ProvisionMessage (identity keys,<br/>profile/master key, code) →<br/>ECDH + HKDF + AES-256-CBC + HMAC
    App->>Server: PUT /v1/provisioning/{ephemeral_id} (envelope)
    Server-->>Desktop: deliver envelope / register as device N
    loop Poll until a new device id shows up
        App->>Server: GET /v1/devices
    end
    loop For every linked device
        App->>Server: GET /v2/keys/{aci}/{device}
        Server-->>App: device pre-keys
    end
    Note over App: send_linked_device_sync():<br/>X3DH + Double Ratchet session per device,<br/>encrypt empty contacts SyncMessage
    App->>Server: PUT /v1/messages/{aci} (encrypted sync, all linked devices)
    Server-->>Desktop: SyncMessage / leaves "Syncing…"
    end

    App-->>User: Step 5 : 🎉 Setup complete

许可证

Signal Without Smartphone
Copyright (C) 2026 Alexis Métaireau

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
下载工具