BC100Dev/OsintgramCXX

GitHub: BC100Dev/OsintgramCXX

一款基于C++重写的Instagram OSINT工具,提供模块化命令、插件系统与多会话支持,用于合法公开信息收集。

Stars: 13 | Forks: 3

# OsintgramCXX ``` ___ _ _ /___\___(_)_ __ | |_ __ _ _ __ __ _ _ __ ___ // // __| | '_ \| __/ _` | '__/ _` | '_ ` _ \ / \_//\__ \ | | | | || (_| | | | (_| | | | | | | \___/ |___/_|_| |_|\__\__, |_| \__,_|_| |_| |_| |___/ ``` 自从[原始项目](https://github.com/Datalux/Osintgram) 的开发已经停止,而且Instagram API不断变化,我决定接手这个项目,自己重写大部分甚至所有组件。嗯...除了 网络部分,我和网络还不是最好的朋友...至少现在还不是。等我完成一个已知的人类最疯狂的项目之一。提示信息就在我的GitHub个人资料里。 ## 暂时停止开发 我知道大家都不想看到这个部分,但由于即将到来的期末考试,我必须把注意力转移到考试上。不,我不会完全停止 OsintgramCXX本身的开发。这可能会持续到五月、六月或七月,取决于期末考试对我"吞噬"的程度。 [在这里查看完整信息。](https://github.com/BC100Dev/OsintgramCXX/discussions/5) ## 使用场景 目前还没有使用场景。事实上,这个项目仍在积极开发中,我并不打算放弃这个项目,就像[Datalux](https://github.com/Datalux) 做的那样。然而,我会进行公告和投票,以防我需要披露更多信息。 除此之外,既然人们都在问我如何使用这个工具(你可以[在这里](https://github.com/BC100Dev/osintgram4j/issues/16)看到上一个版本的示例)。无意冒犯那些急切等待工具发布的用户,但由于实际开发(不包含AI)确实需要时间,这不会是一个"快速的编码会话"。这确实需要时间,但我会随时向大家更新进展。 然而,我可以描述一下这里将实现(或将要实现)的功能特性: - **模块化支持**:为OsintgramCXX添加你自己的钩子和命令(需要C/C++编码技能) - **DSI**(设备伪造信息):为网络调用伪造设备信息(一个无需伪造的社区OSINT工具) - **手动交互**:使用该工具意味着你拥有比大多数自动化操作更多的控制权(例如自动登录) - **代理与Proxychains**:允许你同时连接多个代理,通过多个服务器进行连接 - **多会话交互**:同时针对多个账号进行操作,而无需自动化更多内容 原始版本的工具已经内置了大多数这些功能了吗?我不这么认为。让我来"烹饪",你不会失望的。 ## 免责声明与隐私政策 OsintgramCXX以及其他任何软件,仅用于道德和合法用途。根据OSINT的定义,该工具的用途是收集公开可用的信息。这意味着原始版本中的命令(如获取电子邮件地址和电话号码)不会复制过来,因为法律原因。默认情况下,Instagram**不会**向公众暴露敏感信息,除非与该账户相关的人分享信息。这些信息可能包括公知的商业电子邮件地址、商业电话号码,甚至可能与该人/企业相关的物理商业地址。 其他开发者,包括我本人,不支持任何非法活动,如黑帽黑客攻击(非法的黑客行为)和其他恶意行为。始终遵循相关法律和目标平台的[服务条款](https://help.instagram.com/581066165581870/?locale=en_US)。开发者仍然可以通过设计此类工具来承担责任,因此请以合法和善意使用此工具。我们不想要诉讼,也不需要任何禁令警告。 使用此工具即表示你同意: - **责任**:你必须对你的行为负责 - **道德使用**:你不会滥用此工具来骚扰他人 - **操作记录**:Instagram会记录你使用此工具的所有操作 - **责任**:我们,开发者,不会对你可能误用此工具所产生的后果负责 - **条款与印戳**:使用此工具,你也违反了Instagram的[服务条款/印戳](https://help.instagram.com/581066165581870/?locale=en_US) ## 构建过程 要构建此工具,你需要安装一些工具。这些工具包括: - CMake - C++编译器 - VCPKG依赖项(tar、unzip、zip、curl) 为此,请使用你的软件包管理器安装以下软件包。这可能因你的发行版而异。对于Debian(包括Termux),你将使用`apt`。你的完整命令将是: ``` $ sudo apt install build-essential cmake tar unzip zip curl libssl-dev libcurl4-openssl-dev libcap-dev ``` 前几个软件包,直到`curl`部分,是`vcpkg`本身所需的。以`lib`为前缀的软件包是必需的,因为它们是工具正常运行所必需的。如果你使用的是Termux,请排除`libcap-dev`,因为该库在Android设备上无法工作。 对于Arch Linux用户: ``` $ pacman -S base-devel cmake tar unzip zip curl openssl zlib ``` 安装完这些依赖项后,运行以下两个命令(简化了VCPKG处理): ``` $ git clone https://github.com/BC100Dev/OsintgramCXX.git $ cd OsintgramCXX $ chmod +x prepare.sh $ ./prepare.sh ``` 这将下载OsintgramCXX的源代码,并准备构建环境。执行`./prepare.sh`后,使用以下命令进行最后构建: ``` $ cmake --build Build ``` 构建完成后,最终文件应直接位于`Build/bundle`中,其中包含`Osintgram`可执行文件及其库文件。在 `Build/bundle/Resources`目录中是OsintgramCXX本身运行所需的核心文件。`commands.json`是必需的,因为它包含了OsintgramCXX所需的所有命令,用于索引,其中甚至包含核心命令本身。`AppSettings.cfg`是一个可选文件,不是必需的,因为OsintgramCXX会采用已经存储的默认值。 ***!! 对于已经在测试的人员 !!*** 请注意,这仍然是一个WIP(工作进行中),这不是最终版本。一旦OsintgramCXX获得第一个稳定版本构建,我将发布公告。 ### 在非Linux系统上构建 好吧,但你可能正在运行Windows或macos,那么还有其他构建方法: - 虚拟机 - 云Shell(通过SSH) - 容器(例如Docker) - 双系统启动(如果你有Windows电脑) - WSL(仅限Windows) - Termux(仅限Android,仍在实验构建) ## 默认模块 对于此工具的默认安装,我决定将代码库分为多个部分,包括: - [**核心应用程序**](Sources/Application):启动后运行的代码,当你启动那个漂亮的`./OsintgramCXX`可执行文件时。不,这不是库,其他都是。 - [**共享代码**](Sources/Commons):在其它模块间共享的代码库,利用DRY方法 - [**交互式命令**](Sources/CoreCommands):最吸引人的部分,因为它是基础模块,所有标准命令都位于此。 - [**Instagram私有API**](Sources/instagram-private-api):哦,这个有点棘手?是的, 这个代码将是你自定义模组最可能依赖的原因。如果你不依赖用户输入并可能实现自动化。 - [**应用程序日志**](Sources/Logging):一个不错的库,以防GDB太难理解,并且无需依赖控制台输出。记录是必须的。如果不能记录,且无法重现错误,那么你将如何修复它们?:neutral_face: - [**网络**](Sources/Networking):Instagram API使用它们。应用程序本身使用它来进行其他可能的通信。这是必需的,而且使用简单。请[查看头文件](Include/dev_tools/network/Network.hpp)本身,你将了解如何 进行网络请求...前提是你认为自己是一个专业的程序员,而不是一个想入门的开发者:skull: - [**安全层**](Sources/Security):无论是在本地还是在线,确保账户安全的理由是安全地加密它们。OsintgramCXX不会一开始就读取原始配置文件。你需要显式使用`loginctl`命令进行登录。 虽然大多数代码是静态链接的(你好,vcpkg),但所有这些库都是可以通过`gcc`或`clang`链接的共享库。尽情使用它们吧,你可能需要它们。 ## 模块化支持 是的,我曾承诺过[Osintgram4j](https://github.com/BC100Dev/osintgram4j)中的这个功能,但我决定更进一步,真正创建一个合适的模块化系统。有了这个模块化支持,你可以编写自己的C/C++共享库,将其与 [`commands.json`](Resources/commands.json)本身链接,并包含你自己的命令、处理程序等。由于开发阶段仍在中期,并且有其他想法正在酝酿中,其格式将会改变,特别是考虑到第一个版本,当前版本仅提供简单的命令(`cmd`、`description`、`exec_symbol`)。然而,请注意,目前无法验证库入口符号(被调用的方法)的参数,因此请记住你必须包含一个与参数完全匹配的方法。如果不匹配,OsintgramCXX将会崩溃。请参考以下示例创建命令符号: ``` // if using C, skip the part export "C" int cmd_symbol(const char* cmd, int argc, char** argv, int envc, char** env_map) {} ``` 该符号传递`cmd`值,也就是你分配给库和符号的命令。`argc`和`argv`是不言自明的,因为它们类似于C/C++中已知的`int main(int argc, char** argv)`,除了第一个参数不是命令本身。相反,我决定将计数和映射分离为两个参数。 除此之外,你还可以为每个调用创建处理程序。例如,你可以拥有一个在OsintgramCXX加载必要内容后立即运行的处理程序。 同样,当OsintgramCXX停止时也是如此。请记住,没有任何程序可以捕获SIGKILL信号。这些处理程序所需的代码行如下: ``` export "C" void plugin_start() {} export "C" void plugin_stop() {} ``` 想知道首先执行了哪个命令吗?别担心,包含开始和结束的命令处理程序,方法如下: ``` export "C" void cmd_handle_start(const char* cmdLine) {} export "C" void cmd_handle_finish(const char* cmdLine, int rc, int id, const char* stream) {} ``` 使用`cmd_handle_finish`,你将整个命令行(用户输入的)、返回代码`rc`、插件/模组标识符`id`以及整个`stdout`和`stderr`流传递给该方法。 可能性是无限的。现在就可以创建了。 另外,请记住,我不会支持任何违反Instagram服务条款的修改或插件,比这个工具已经做得更严格。 哦,还有一件事,在我忘记之前... 骷髅头 macOS用户:skull:
标签:API 协议分析, Bash脚本, C++ 复刻, C++ 网络编程, DNS解析, GitHub 项目, HTTP 客户端, Instagram 数据采集, JSON 解析, Osintgram, OSINT 工具, 云资产清单, 元数据提取, 开发暂停, 开源项目, 情报收集, 漏洞研究, 社交网络取证, 账号分析, 进程保护, 逆向工程, 项目重构