PhoneInfoga is an advanced OSINT framework, written in Go, specifically focused on gathering information about international phone numbers. It combines local validation/formatting (via the libphonenumber library) with active reconnaissance techniques such as carrier lookup, line-type detection (mobile/landline/VoIP), footprint scanning across search engines and social media, and reputation/scam-database checks. It is widely used in OSINT investigations, fraud analysis, and social engineering reconnaissance where a phone number is the only available lead.
Installation
# Kali/Debian (pre-installed, or reinstall)
sudo apt update && sudo apt install phoneinfoga -y
# Via Go (any platform with Go installed)
go install github.com/sundowndev/phoneinfoga/v2@latest
# Via Docker
docker pull sundowndev/phoneinfoga
docker run --rm -it sundowndev/phoneinfoga scan -n "+1 555 555 5555"
Verify installation:
phoneinfoga version
Syntax
phoneinfoga [COMMAND] [OPTIONS]
PhoneInfoga v2 operates via subcommands, primarily scan (CLI) and serve (web UI).
Command-Line Options
phoneinfoga scan:
| Flag | Description |
|---|---|
-n, --number NUMBER | Phone number to scan, in international format (e.g., +15555555555) |
-i, --input FILE | File containing a list of numbers to scan in bulk |
-o, --output FILE | Save scan output to a file |
-r, --recon | Enable OSINT scanner modules for deeper footprint scanning |
-s, --scanner NAME | Run a specific named scanner module only |
-v, --verbose | Enable verbose output |
--filter STRING | Filter/restrict scanner modules by name |
phoneinfoga serve:
| Flag | Description |
|---|---|
-p, --port PORT | Port for the local web UI/API server (default 5000) |
-a, --address ADDR | Bind address for the web server |
Other:
| Command | Description |
|---|---|
phoneinfoga version | Display the installed version |
phoneinfoga plugin list | List available/installed scanner plugins |
Basic Usage
phoneinfoga scan -n "+15555555555"
Expected output:
[+] Scanning number: +15555555555
Basic information
------------------
Valid: true
Number: 15555555555
Local: (555) 555-5555
E164: +15555555555
International: +1 555-555-5555
Country: United States (US)
Carrier: Example Wireless
Line type: mobile
Practical Examples
Example 1 — Basic number validation and carrier lookup
phoneinfoga scan -n "+14155552671"
Valid: true
Country: United States (US)
Carrier: Example Mobile
Line type: mobile
Example 2 — Running with OSINT/footprint scanning enabled
phoneinfoga scan -n "+14155552671" -r
[+] Running OSINT scanners...
[+] Googlesearch scanner: 3 results found
https://example-forum.com/user/14155552671
[+] Numverify scanner: carrier confirmed as Example Mobile
Example 3 — Scanning a UK number
phoneinfoga scan -n "+442071838750"
Country: United Kingdom (GB)
Carrier: Example UK Telecom
Line type: landline
Example 4 — Bulk scanning numbers from a file
cat numbers.txt
# +14155552671
# +442071838750
phoneinfoga scan -i numbers.txt -o bulk_results.txt
[+] Scanning +14155552671... done
[+] Scanning +442071838750... done
[+] Results saved to bulk_results.txt
Example 5 — Saving a single scan’s output to file
phoneinfoga scan -n "+14155552671" -o result.txt
cat result.txt
Valid: true
Country: United States (US)
Carrier: Example Mobile
Example 6 — Launching the local web UI for interactive investigation
phoneinfoga serve -p 5000
[+] PhoneInfoga web server started at http://localhost:5000
(Navigate to http://localhost:5000 in a browser to use the graphical scanning interface.)
Example 7 — Listing available scanner plugins
phoneinfoga plugin list
- numverify
- googlesearch
- ovh
- local (libphonenumber)
Example 8 — Running only a specific scanner module
phoneinfoga scan -n "+14155552671" -s googlesearch
[+] Running googlesearch scanner only...
[+] 2 search engine mentions found
Common Use Cases
- Validating and formatting a phone number, identifying its country and carrier as an early OSINT step during an investigation.
- Determining line type (mobile vs. landline vs. VoIP) to assess whether a number is likely tied to a personal individual or a business PBX system.
- Footprint scanning to discover where else on the internet a phone number has been publicly posted (forums, classified ad sites, business listings).
- Supporting fraud investigations by cross-referencing a suspicious number against known scam/spam databases via integrated scanner modules.
- Assisting social engineering risk assessments by identifying whether an employee’s number is publicly discoverable and linkable to other OSINT data points.
Automation with Bash
Batch-scan a list of numbers and consolidate carrier/country info into a CSV:
#!/bin/bash
# phoneinfoga_batch.sh
echo "number,country,carrier,line_type" > results.csv
while IFS= read -r number; do
result=$(phoneinfoga scan -n "$number")
country=$(echo "$result" | grep -oP '(?<=Country: ).*')
carrier=$(echo "$result" | grep -oP '(?<=Carrier: ).*')
linetype=$(echo "$result" | grep -oP '(?<=Line type: ).*')
echo "$number,$country,$carrier,$linetype" >> results.csv
done < numbers.txt
echo "[+] Results saved to results.csv"
Automated deep scan (with OSINT recon) for a single high-priority number:
#!/bin/bash
NUMBER=$1
phoneinfoga scan -n "$NUMBER" -r -o "phoneinfoga_$(echo "$NUMBER" | tr -d '+').txt"
echo "[+] Deep scan complete"
Tips and Best Practices
- Always provide numbers in full E.164 international format (
+followed by country code) to avoid parsing ambiguity. - Use
-r(recon/OSINT scanning) sparingly and deliberately — it performs active internet lookups and search engine queries which are slower and leave a bigger footprint than basic validation alone. - Cross-verify carrier/line-type results against a second data source when working on a critical investigation, since carrier databases (especially for VoIP/ported numbers) are not always perfectly accurate.
- Use the web UI (
phoneinfoga serve) for interactive, exploratory investigations where you want to pivot between numbers and review results visually; use the CLIscancommand for scripted/bulk workflows. - Respect legal and platform restrictions — phone number OSINT can intersect with privacy regulations (e.g., GDPR) depending on jurisdiction and use case; always ensure proper authorization.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
Error: invalid phone number format | Number missing + country code prefix or contains invalid characters | Reformat to strict E.164 (e.g., +14155552671) with no spaces/dashes |
| OSINT scanners return no results | Number has no public internet footprint, or scanner API rate-limited | Expected for numbers with low public exposure; retry later if rate-limited |
| Carrier shown as “Unknown” | Ported number or VoIP provider not well-indexed in carrier lookup databases | Cross-check with an alternate lookup service; note the limitation in your findings |
Web UI (serve) not reachable in browser | Wrong port/address bound, or firewall blocking local port | Confirm with -p/-a flags match what you’re browsing to; check netstat -tlnp |
| Docker version scan fails to reach internet | Container networking not configured for outbound access | Run with --network host or verify Docker’s default bridge network has internet access |
References
- Official GitHub repository: https://github.com/sundowndev/phoneinfoga
- Official documentation: https://sundowndev.github.io/phoneinfoga/
- Kali Linux tool page: https://www.kali.org/tools/phoneinfoga/
- Google libphonenumber library (used for validation): https://github.com/google/libphonenumber