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 工具, 云资产清单, 元数据提取, 开发暂停, 开源项目, 情报收集, 漏洞研究, 社交网络取证, 账号分析, 进程保护, 逆向工程, 项目重构