🛠️ OPSE Part 1: A search engine for people

Introduction
In this article, we’ll present OPSE, a tool that we developed during our school project to automate the OSINT process.
This article is part of a three-part series on the OPSE project. In this series of articles we will present different part of the project:
- Presentation of the tool w/ installation, usage and an example;
- A technical presentation of the tool, how it is thinked and coded;
- A guide to develop your own OPSE plugin !
Context
During our fourth year in engeneering school, we led a project on the OSINT theme. We asked ourselves how we could obtain as much personnal informations as possible on someone with few data at the beginning.
We started to imagine an automatic tool that, with few input data such as firstname and lastname, would be able to find many connections of this person on the internet. But we wanted it to be an help for anyone else in the future, so they can reuse it and modify it.
Our objectives were simple:
- automatic;
- fast;
- modular;
- open-source.
This project is now open-source and available on Github: https://github.com/OPSE-Developers/OPSE-Framework
You want to contribute on the OPSE project ? Join the Discord server by clicking on the logo !
⚠️ Disclaimer
OPSE project is made for educational & awareness use only !
⚙️ How does it work?
OPSE is a Python written project that aim to gather informations of a target by entering some basic intel of the targeted person. The project use multiple tools based on the provided input data.
Input data
Input data supported by OPSE are listed below:
- First name;
- Last name;
- Birthdate;
- Age;
- Personnal address;
- Phone number;
- Email address;
- Pseudos.
Each informations can be provided to the launching script and will start the research.
The OPSE process
With input data, according to those provided, the OPSE process calls for different tools.
Each tool takes one or more input data and return one or more data according to the results found on the targeted person. Obtaining data is different for each tool, however the method remains similar:
- Request the resource to obtain a brute result;
- Analyse the answer and parse interesting data;
- Format data to be insert into profiles;
- Highlight the most important data.
Once all tools have been called, generated profiles will be automatically fused thanks to possible links.
For example, we get as a result two profiles. The first profile return an email address and pseudos. The second profile return the same email address, a first name and a last name. As an email address is unique, we can then say that it is probably the same person. So we fuse both profiles to a new one, with fused informations.

Schema describing the OPSE fuse process
After data validation, all tools are relaunched with the new generated profiles and newly obtained data. The cycle continues until the tool have used all possible data.
Then, all generated profiles are presented to the user.
Additionnal informations
The project is working on both Linux and Windows system.
In OPSE we call plugins tool that did the research. It is possible for anyone to develop a plugin to be added on the project core. If the developer follows our rules, his plugin will be automatically loaded into OPSE. This process will be explained on the last article of this series.
For now, basic tools are implemented, the project is open for contribution. We did an hard work on the OPSE core, to make it as modular as possible. We have not yet developed a large number of plugins.
🔧 Prerequisites installation
In order to use OPSE, two package are required:
- Python & Python-pip
- Git
OPSE is developed in python so Python and his packet manager pip are required.
Git is necessary to get all repository of the OPSE project (Plugins & Core).
Linux - Prerequisites installation
Python installation
Python installation commands for Linux:
|
|
⚠️ Python version >3.8 is required !
Git installation
Git package installation for Linux:
|
|
Windows - Prerequisites installation
Python installation
For Windows, the Python installation executable can be downloaded from the Python website at the following address:
⚠️ During installation, don’t forget to check the Add Python 3.X to PATH box. It will add python executable in your variable
PATH
.
Git installation
Git executable can be downloaded at the following address:
🔧 OPSE Installation
Get OPSE Repository
First, you will need to get OPSE repositories. It is possible with the git
command:
|
|
The --recurse-submodules
option allows to clone all plugins in the /tools/
directory.
Once you got the repositories, you have to install OPSE requirements.
|
|
:white_check_mark: Requirements are now checked at the start of the tool. It will check that all requirements (OPSE core & plugins) are installed on the host.
Once requirements are installed you can launch ./opse.py
launcher.
🚀 Launch OPSE
CLI Mode
OPSE CLI mode can be launched with the following commands:
|
|
GUI Mode
In GUI mode, the launcher starts the OPSE API and browse the user to the OPSE registration page. API waits for the user to register.
|
|
This will browse you at the OPSE registration page.
OPSE usage
|
|
👾 Let’s try it!
Example: CLI Mode
For this example, we take as input the firstname, lastname & email address of the target:
- Firstname: John
- Lastname: Doe
- Email: jdoe@gmail.com
Launching the research
First, we see a list of all plugins loaded for the research. Loaded plugins are those that take as input the information of the target.
|
|
The OPSE Menu
Then, we the research is done, we face the OPSE menu with multiple entries:
-
Display profiles This menu shows all profiles that have been created during the process.
-
Merge datas This menu is used to fuse multiple profiles. For example, you found 2 website account and you know that it’s the same person, you can fuse both profile.
-
Remove profiles This option allows you to delete some profiles.
-
Research enrichment This can re-run a research based on informations that we found on the first research. For example, we entered as input the name of a target and the first research return his email address, the second research will take that email address as input.
|
|
Result of a research
Here we take the first option to show generated profiles. Here, the research as created 1 profile with 16 websites account.
|
|
We can take the profile to show more details. As explained before, by default, as research may show sensible content on the target, we hide the result. We just know that the research returned 16 websites to which the email address is linked.
|
|
If we want to show a more detailed profile, we can set Account
to visible in the Update data visibility menu. Then, go back into the profile.
|
|
We can now see all websites linked to that email address.
Example: GUI Mode
For this example, I take as input firstname, lastname and 2 usernames.
⚠️ In this example, data has been blurred
Launching OPSE in GUI mode
To launch the OPSE API you can use the --api
option:
|
|
It will take you directly to the OPSE registration page. The start button allows OPSE to generate a unique search ID and pass it to the API.

OPSE Registration page
Launching the research
If the registration was successful you now face the OPSE search page. Here, you can enter all intels you already have on the target.

OPSE search page
Results of the research
Now, you face a page with all profiles that have been returned by the research.

OPSE choice page
Here you can see all profiles and a small summary of each profile. You can enter a profile by clicking on the profile you want. It is also possible to select multiple profiles and then choose to manually merge or delete them.
By clicking on a profile, you will see all the profile information that has not been hidden.

OPSE results page - profile information
There is also two button:
- Export: allows to export all profile intels (csv or json)
- Delete: allows to delete the profile from the research
⚠️ The export function will be available soon
Then, if the profile return addresses, those will be mark on the following maps menu.

OPSE results page - maps
And we are done ! :)
This is a simple example of how the OPSE cli and gui work.
📖 In the next article…
In this article, we explain you how OSINT People Search Engine work in surface. We presented to you how to use it with a simple example.
In the next article, we’ll go deeper in the OPSE core. We’ll present the technical development of the tool. It will explain how core is builded, how plugins can be automatically loaded and how OPSE interface work.
see: 🛠️ OPSE Part 2: Developing an OSINT framework in Python