IoT Search Engines
Beyond Shodan, there are several other search engines that index internet-connected devices and services. Each has different coverage, features, and strengths. Knowing multiple tools gives you better recon coverage.
Main IoT Search Engines
Shodan (shodan.io)
The most well-known. Indexes banners from ports across the internet.
- See shodan.io for full notes
- Best for: port banners, certificates, industrial systems
- API: Yes, paid tiers
Censys (censys.io)
Very similar to Shodan but with different scanning methodology. Often has complementary results.
# Install Python client
pip install censys
# Initialize
censys config
# Search via Python API
from censys.search import CensysHosts
h = CensysHosts()
results = h.search("same_service.transport_protocol: TCP AND services.port: 22")
for host in results:
print(host['ip'], host['services'])
Web queries:
# Find Apache servers
services.software.product=Apache HTTP Server
# Find by org
autonomous_system.name=`Target Company`
# Exposed databases
services.port=27017 AND services.service_name=MONGODB
# SSL certs
parsed.names=target.com
ZoomEye (zoomeye.org)
Chinese cybersecurity company's search engine. Good coverage of Chinese networks and often has different results than Shodan/Censys.
# Python client
pip install zoomeye-sdk
# Search
from zoomeye.sdk import ZoomEye
zm = ZoomEye(api_key="your_key")
results = zm.dork_search("port:3389 country:CN")
for r in results['matches']:
print(r['ip'], r['portinfo']['port'])
Web queries:
port:3389 # RDP
app:Apache # Apache servers
country:US port:22 # SSH in US
FOFA (fofa.info)
Another Chinese platform with extensive coverage:
port=3389 && country=US
protocol=redis && country=GB
cert.subject.cn="*.target.com"
GreyNoise (greynoise.io)
Different angle — focuses on identifying which IPs are scanners/bots vs actual targets:
pip install greynoise
from greynoise import GreyNoise
gnapi = GreyNoise(api_key="your_key")
result = gnapi.ip("8.8.8.8")
print(result['classification']) # benign, malicious, unknown
Use case: When you see an IP hitting your systems, GreyNoise tells you if it's a known scanner vs a targeted threat.
BinaryEdge (binaryedge.io)
Scans different ports and has good coverage of IoT and industrial protocols:
port:9200 type:elasticsearch
port:6379 type:redis
ONYPHE (onyphe.io)
French SIEM/threat intel platform with historical data:
category:datascan port:22 country:FR
Comparison Table
| Tool | Free Tier | Coverage | Special Strengths |
|---|---|---|---|
| Shodan | 100 results | Global | Best overall, industrial |
| Censys | 250/day | Global | Certificates, IPv6 |
| ZoomEye | Limited | Global (CN strength) | Asian networks |
| FOFA | Limited | Global (CN strength) | IoT |
| GreyNoise | 100/day | Scanner data | Classifying noise vs signal |
| BinaryEdge | Limited | Global | IoT protocols |
Combined OSINT Search Workflow
# 1. Start with Shodan for broad results
shodan search "org:\"Target Company\""
# 2. Cross-reference with Censys
censys search "autonomous_system.name:\"Target Company\""
# 3. Check certificate transparency for subdomains
# crt.sh?q=%25.target.com
# 4. Use GreyNoise to classify any IPs you find
# Check if they're known scanners
# 5. Combine findings for full picture
Certificate Transparency (Bonus)
crt.sh isn't an IoT engine but it's invaluable for finding domains/subdomains via SSL certificate logs:
# Find all subdomains of target.com via certs
curl "https://crt.sh/?q=%.target.com&output=json" | jq '.[].name_value' | sort -u
# Find wildcard certs
curl "https://crt.sh/?q=*.target.com&output=json" | jq '.'
See Also
- shodan.io - Shodan detailed notes
- future-of-tech-emerging-trends-2023 - Active OSINT overview
- ../index - OSINT overview