Features

This is the list of Maigret features.

Web Interface

You can run Maigret with a web interface, where you can view the graph with results and download reports of all formats on a single page.

Web interface: how to startWeb interface: results

Instructions:

  1. Run Maigret with the--web flag and specify the port number.

maigret --web 5000
  1. Openhttp://127.0.0.1:5000 in your browser and enter one or more usernames to make a search.

  2. Wait a bit for the search to complete and view the graph with results, the table with all accounts found, and download reports of all formats.

Personal info gathering

Maigret does theparsing of accounts webpages and extraction of personal info, links to other profiles, etc.Extracted info displayed as an additional result in CLI output and as tables in HTML and PDF reports.Also, Maigret use found ids and usernames from links to start a recursive search.

Enabled by default, can be disabled with--noextracting.

$ python3 -m maigret soxoj --timeout 5    [-] Starting a search on top 500 sites from the Maigret database...    [!] You can run search by full list of sites with flag `-a`    [*] Checking username soxoj on:    ...    [+] GitHub: https://github.com/soxoj            ├─uid: 31013580            ├─image: https://avatars.githubusercontent.com/u/31013580?v=4            ├─created_at: 2017-08-14T17:03:07Z            ├─location: Amsterdam, Netherlands            ├─follower_count: 1304            ├─following_count: 54            ├─fullname: Soxoj            ├─public_gists_count: 3            ├─public_repos_count: 88            ├─twitter_username: sox0j            ├─bio: Head of OSINT Center of Excellence in @SocialLinks-IO            ├─is_company: Social Links            └─blog_url: soxoj.com    ...

Recursive search

Maigret has the ability to scan account pages forcommon identifiers and usernames found in links.When people include links to their other social media accounts, Maigret can automatically detect and initiate new searches for those profiles.Any information discovered through this process will be shown in both the command-line interface output and generated reports.

Enabled by default, can be disabled with--no-recursion.

$ python3 -m maigret soxoj --timeout 5    [-] Starting a search on top 500 sites from the Maigret database...    [!] You can run search by full list of sites with flag `-a`    [*] Checking username soxoj on:    ...    [+] GitHub: https://github.com/soxoj            ├─uid: 31013580            ├─image: https://avatars.githubusercontent.com/u/31013580?v=4            ├─created_at: 2017-08-14T17:03:07Z            ├─location: Amsterdam, Netherlands            ├─follower_count: 1304            ├─following_count: 54            ├─fullname: Soxoj            ├─public_gists_count: 3            ├─public_repos_count: 88            ├─twitter_username: sox0j     <===== another username found here            ├─bio: Head of OSINT Center of Excellence in @SocialLinks-IO            ├─is_company: Social Links            └─blog_url: soxoj.com    ...    Searching |████████████████████████████████████████| 500/500 [100%] in 9.1s (54.85/s)    [-] You can see detailed site check errors with a flag `--print-errors`    [*] Checking username sox0j on:    [+] Telegram: https://t.me/sox0j        ├─fullname: @Sox0j        ...

Username permutations

Maigret can generate permutations of usernames. Just pass a few usernames in the CLI and use--permute flag.Thanks to@balestek for the idea and implementation.

$ python3 -m maigret --permute hope dream --timeout 5[-] 12 permutations from hope dream to check...    ├─ hopedream    ├─ _hopedream    ├─ hopedream_    ├─ hope_dream    ├─ hope-dream    ├─ hope.dream    ├─ dreamhope    ├─ _dreamhope    ├─ dreamhope_    ├─ dream_hope    ├─ dream-hope    └─ dream.hope[-] Starting a search on top 500 sites from the Maigret database...[!] You can run search by full list of sites with flag `-a`[*] Checking username hopedream on:...

Reports

Maigret currently supports HTML, PDF, TXT, XMind 8 mindmap, and JSON reports.

HTML/PDF reports contain:

  • profile photo

  • all the gathered personal info

  • additional information about supposed personal data (full name, gender, location), resulting from statistics of all found accounts

Also, there is a short text report in the CLI output after the end of a searching phase.

Warning

XMind 8 mindmaps are incompatible with XMind 2022!

Tags

The Maigret sites database very big (and will be bigger), and it is maybe an overhead to run a search for all the sites.Also, it is often hard to understand, what sites more interesting for us in the case of a certain person.

Tags markup allows selecting a subset of sites by interests (photo, messaging, finance, etc.) or by country. Tags of found accounts grouped and displayed in the reports.

See full descriptionin the Tags Wiki page.

Censorship and captcha detection

Maigret can detect common errors such as censorship stub pages, CloudFlare captcha pages, and others.If you get more them 3% errors of a certain type in a session, you’ve got a warning message in the CLI output with recommendations to improve performance and avoid problems.

Retries

Maigret will do retries of the requests with temporary errors got (connection failures, proxy errors, etc.).

One attempt by default, can be changed with option--retriesN.

Archives and mirrors checking

The Maigret database contains not only the original websites, but also mirrors, archives, and aggregators. For example:

It allows getting additional info about the person and checking the existence of the account even if the main site is unavailable (bot protection, captcha, etc.)

Activation

The activation mechanism helps make requests to sites requiring additional authentication like cookies, JWT tokens, or custom headers.

It works by implementing a custom function that:

  1. Makes a specialized HTTP request to a specific website endpoint

  2. Processes the response

  3. Updates the headers/cookies for that site in the local Maigret database

Since activation only triggers after encountering specific errors, a retry (or another Maigret run) is needed to obtain a valid response with the updated authentication.

The activation mechanism is enabled by default, and cannot be disabled at the moment.

See for more details in Development sectionActivation mechanism.

Extraction of information from account pages

Maigret can parse URLs and content of web pages by URLs to extract info about account owner and other meta information.

You must specify the URL with the option--parse, it’s can be a link to an account or an online document. List of supported sitessee here.

After the end of the parsing phase, Maigret will start the search phase bysupported identifiers found (usernames, ids, etc.).

$maigret--parsehttps://docs.google.com/spreadsheets/d/1HtZKMLRXNsZ0HjtBmo0Gi03nUPiJIA4CC4jTYbCAnXw/edit\#gid\=0Scanning webpage by URL https://docs.google.com/spreadsheets/d/1HtZKMLRXNsZ0HjtBmo0Gi03nUPiJIA4CC4jTYbCAnXw/edit#gid=0...┣╸org_name: Gooten┗╸mime_type: application/vnd.google-apps.ritzScanning webpage by URL https://clients6.google.com/drive/v2beta/files/1HtZKMLRXNsZ0HjtBmo0Gi03nUPiJIA4CC4jTYbCAnXw?fields=alternateLink%2CcopyRequiresWriterPermission%2CcreatedDate%2Cdescription%2CdriveId%2CfileSize%2CiconLink%2Cid%2Clabels(starred%2C%20trashed)%2ClastViewedByMeDate%2CmodifiedDate%2Cshared%2CteamDriveId%2CuserPermission(id%2Cname%2CemailAddress%2Cdomain%2Crole%2CadditionalRoles%2CphotoLink%2Ctype%2CwithLink)%2Cpermissions(id%2Cname%2CemailAddress%2Cdomain%2Crole%2CadditionalRoles%2CphotoLink%2Ctype%2CwithLink)%2Cparents(id)%2Ccapabilities(canMoveItemWithinDrive%2CcanMoveItemOutOfDrive%2CcanMoveItemOutOfTeamDrive%2CcanAddChildren%2CcanEdit%2CcanDownload%2CcanComment%2CcanMoveChildrenWithinDrive%2CcanRename%2CcanRemoveChildren%2CcanMoveItemIntoTeamDrive)%2Ckind&supportsTeamDrives=true&enforceSingleParent=true&key=AIzaSyC1eQ1xj69IdTMeii5r7brs3R90eck-m7k...┣╸created_at: 2016-02-16T18:51:52.021Z┣╸updated_at: 2019-10-23T17:15:47.157Z┣╸gaia_id: 15696155517366416778┣╸fullname: Nadia Burgess┣╸email: nadia@gooten.com┣╸image: https://lh3.googleusercontent.com/a-/AOh14GheZe1CyNa3NeJInWAl70qkip4oJ7qLsD8vDy6X=s64┗╸email_username: nadia
$maigret.py--parsehttps://steamcommunity.com/profiles/76561199113454789Scanning webpage by URL https://steamcommunity.com/profiles/76561199113454789...┣╸steam_id: 76561199113454789┣╸nickname: Pok┗╸username: Machine42

Simple API

Maigret can be easily integrated with the use of Python packagemaigret.

Example: the officialTelegram bot