SIPG - Shodan IP Grabber


Example Search Result

A professional command-line tool for searching IP addresses using the Shodan API. SIPG provides an intuitive interface for security researchers, penetration testers, and network administrators to discover and analyze internet-connected devices.
✨ Features
- 🔍 Advanced Search: Powerful query syntax with support for all Shodan search filters
- 📊 Rich Output: Beautiful tables and detailed information display
- 💾 Flexible Export: Save results to files in various formats
- ⚡ Rate Limiting: Built-in API rate limiting to respect Shodan's limits
- 🔐 Secure Configuration: Secure API key storage in user's home directory
- 🌍 Cross-Platform: Works on Windows, macOS, and Linux
- 📈 Progress Tracking: Real-time progress indicators for long searches
- 🎯 Multiple Output Formats: Simple IP lists, detailed results, or formatted tables
🚀 Quick Start
Installation
From PyPI (Recommended)
pip install sipg
From Source
git clone https://github.com/emptymahbob/sipg.git
cd sipg
pip install -e .
Configuration
- Get your Shodan API key from shodan.io
- Configure SIPG with your API key:
sipg configure
Basic Usage
sipg search 'ssl:"Uber Technologies Inc"'
sipg search 'http.server:Apache' --details
sipg search 'port:80' --table
sipg search 'country:"United States"' -o results.txt
sipg search 'product:"nginx"' -m 50 -d 2.0
sipg search 'http.server:Apache' --details --start-page 2 --end-page 5
sipg search 'country:"United States"' -o us.txt --start-page 5 --end-page 10
📖 Commands
sipg configure
Configure your Shodan API key securely.
sipg search <query>
Search for IP addresses using Shodan.
Options:
-o, --output FILE
: Save results to file. If not specified, results are printed to the console. Only IPs are saved for simple output, or detailed JSON for --details.
-m, --max-results N
: Maximum number of results to return. Default: all available results.
-d, --delay SECONDS
: Delay (in seconds) between API requests to avoid rate limits.
--details
: Show detailed results with additional information (organization, location, hostnames, etc).
--table
: Display results in a formatted table (implies --details).
--start-page N
: Start fetching results from this page (1-based, default: 1).
--end-page N
: End fetching results at this page (inclusive). If not set, fetches up to the last available page or max-results.
How output is saved:
- By default, results are printed to the console.
- Use
-o/--output
to save results to a file. If --details
is used, detailed JSON is saved; otherwise, only IPs are saved.
- Use
--max-results
to limit the number of results.
- Use
--start-page
and --end-page
to fetch results from a specific page range (each page = 100 results).
- Use
--delay
to avoid hitting Shodan rate limits (default: 1.0s).
Examples:
sipg search 'ssl:"Uber Technologies Inc"' --max-results 200
sipg search 'http.server:Apache' --details --start-page 2 --end-page 5
sipg search 'country:"United States"' -o us.txt --start-page 5 --end-page 10
sipg info
Show information about your Shodan API key and usage.
sipg examples
Display example search queries.
sipg clear
Clear the stored API key.
🔍 Search Query Examples
sipg search 'ssl:"Uber Technologies Inc"'
sipg search 'ssl.cert.subject.CN:"*.uber.com"'
sipg search 'http.server:Apache'
sipg search 'http.status:200'
sipg search 'country:"United States"'
sipg search 'city:"New York"'
sipg search 'port:80'
sipg search 'port:443'
sipg search 'product:"nginx"'
sipg search 'product:"MySQL"'
sipg search 'org:"Amazon"'
sipg search 'org:"Google"'
sipg search 'ssl:"Uber Technologies Inc" http.status:200'
sipg search 'port:80 -http.title:"Invalid URL"'
🛠️ Development
Setup Development Environment
git clone https://github.com/emptymahbob/sipg.git
cd sipg
pip install -e ".[dev]"
Run Tests
pytest
Code Formatting
black sipg/
Type Checking
mypy sipg/
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📞 Support
⚠️ Disclaimer
This tool is for educational and authorized security research purposes only. Always ensure you have proper authorization before scanning any networks or systems. The authors are not responsible for any misuse of this tool.