snapWONDERS/snapWONDERS-SDK-Go

GitHub: snapWONDERS/snapWONDERS-SDK-Go

snapWONDERS API 的官方 Go 客户端,封装了隐写术、媒体取证分析和格式转换三大功能的完整任务编排流程。

Stars: 0 | Forks: 0

snapWONDERS Go SDK

snapWONDERS — 揭示隐藏之物。隐藏属于你的秘密。 # snapWONDERS Go SDK — snapWONDERS API 客户端 snapWONDERS API 的官方 Go 客户端:提供隐写术、取证媒体分析和格式转换功能。该客户端封装了可恢复的 TUS 上传以及 session → job → poll → download 的编排流程,因此只需几行代码即可完成整个任务。 所有 snapWONDERS API 服务均可通过 Clearnet / **Web** 以及 Dark Web 的 **Tor** 和 **I2P** 访问。 # 安装和设置 ## snapWONDERS API 密钥 在开始之前,您需要一个 snapWONDERS API 密钥: * 在 [snapWONDERS 注册](https://snapwonders.com/sign-up) 注册并创建一个账户。如果您希望通过 Tor 或 I2P 创建账户,可以通过 Tor 或 I2P 门户访问 snapWONDERS。有关暗网链接,请访问 [安全浏览](https://snapwonders.com/browsing-safely)。 * 在您的账户设置下,生成一个 API 密钥。新密钥以 `sw_` 开头。它会作为 `X-Api-Key` 标头发送到每个请求中——请妥善保管。 ## 安装包 ``` go get github.com/snapWONDERS/snapWONDERS-SDK-Go ``` # 快速开始 ``` package main import ( "fmt" snapwonders "github.com/snapWONDERS/snapWONDERS-SDK-Go" ) func main() { client := snapwonders.NewClient("sw_your_key_here") // base URL defaults to https://snapwonders.com status, _ := client.Status() // no key needed for status fmt.Println(status) // Hide a secret inside a cover image (the last file is the cover). job, err := client.Stego.Hide([]string{"secret.png", "cover.jpg"}, "Str0ng!Pass") if err != nil { panic(err) } files, _ := job.Results() for _, f := range files { f.Download("out/") // "out/" is a directory — the server filename is kept } // Reveal it again. revealed, _ := client.Stego.Reveal("out/cover-share.avif", "Str0ng!Pass") rf, _ := revealed.Results() rf[0].Download("recovered/") } ``` `client.Analyse`(取证分析)和 `client.Convert`(媒体转换)遵循相同的结构——传入一次调用,输出结果: ``` // Forensic analysis — grade each file A–F, collect the overlay assets it produced. job, _ := client.Analyse.Run([]string{"photo.jpg"}, snapwonders.WithOption("face_detection", true)) items, _ := job.Results() for _, item := range items { fmt.Println(item.Filename, item.Grade, item.FaceCount) for _, asset := range item.Assets { // ELA map, face overlay, … asset.Download("out/") } } // Convert media — set the output format with WithOption. job, _ = client.Convert.Run([]string{"photo.png"}, snapwonders.WithOption("image_format", "webp")) out, _ := job.Results() out[0].Download("out/") ``` 想自己控制每个阶段?逐步操作接口也是公开的:`CreateSession()` → `Upload(path, step)` → `WaitForUploads()` → `StartJob(...)` → `Wait()` → `Results()`。 # 示例 可运行的端到端示例位于 [`examples/`](examples/) 中——隐写术、取证分析和转换,每个都是一个独立的程序,并附带一个示例图像: ``` export SNAPWONDERS_API_KEY=sw_your_key_here go run ./examples/hideandreveal # hide a file in an image, then reveal it go run ./examples/analyse # grade an image A–F + download overlay assets go run ./examples/convert # PNG → WebP ``` # 错误 SDK 返回的每个失败都是实现了 `SnapwondersError` 标记接口的类型化错误,因此您可以使用 `errors.As` 来匹配失败类型,而无需检查 HTTP 状态码: ``` files, err := job.Results() var authErr *snapwonders.AuthError if errors.As(err, &authErr) { // handle a bad/expired API key } ``` | 错误 | 返回时机 | |-------|---------------| | `*AuthError` | API 密钥缺失、格式错误、未知或被撤销 | | `*ProRequiredError` | 在免费账户上使用了 Pro 专属选项 | | `*SessionExpiredError` | 24 小时的上传会话窗口已过 | | `*RateLimitError` | 触发速率限制——当服务器提供时携带 `RetryAfter` | | `*MaintenanceError` | snapWONDERS 因维护而暂时不可用——携带 `RetryAfter` | | `*JobFailedError` | 任务以 `failed` 状态结束——携带服务器的 `Reason` | | `*TusUploadError` | 可恢复上传步骤失败 | | `*NetworkError` | 无法连接到 API | | `*APIError` | 任何其他非 2xx 响应——携带 `StatusCode` 和 `Body` | # 运行测试 ``` go test ./... # offline unit tests — no API key required ``` # 文档 有用的文档可以在以下位置找到: * 交互式 Swagger UI 和完整的 endpoint 参考:[snapWONDERS API](https://snapwonders.com/api) * 引导式的分步集成演练:[snapWONDERS 开发者](https://snapwonders.com/developers) # 联系方式 ## 安全问题 如果您发现了任何安全问题,请通过 [联系 snapWONDERS](https://snapwonders.com/contact) 与我们取得联系,并将主题设置为 **"SECURITY CONCERNS"**,同时提供相关问题的详细信息。如果您希望通过 Tor 或 I2P 联系,可以通过 Tor 或 I2P 门户访问 snapWONDERS。有关暗网链接,请访问 [安全浏览](https://snapwonders.com/browsing-safely)。 ## FAQ 和问题 您的问题可能已经在 [FAQ](https://snapwonders.com/faq) 中得到解答。请务必先查看 FAQ 内容。否则,您可以通过 [联系 snapWONDERS](https://snapwonders.com/contact) 与我们取得联系。 ## 联系作者 使用此链接联系作者 [Kenneth Springer](https://kennethbspringer.au/)。 # 许可证 MIT — 版权所有 (c) 2026 Kenneth Springer @ snapWONDERS。请参阅 [LICENSE](LICENSE)。 **范围。** MIT 许可证**仅涵盖此客户端库**。它不授予与其通信的 snapWONDERS API、服务、数据、模型或算法的任何权利——这些都是**专有的**,并归 Kenneth Springer @ snapWONDERS 所有。此库仅向 API 发送 HTTP 请求;它不包含任何相关实现。使用 API 需要有效的 API 密钥,并受 [snapWONDERS 服务条款](https://snapwonders.com/terms) 约束。
标签:DNS 反向解析, EVTX分析, Go, Ruby工具, 多媒体处理, 媒体取证, 文件格式转换, 日志审计, 隐写术