Top Related Projects
Incredibly fast crawler designed for OSINT.
E-mails, subdomains and names Harvester - OSINT
Information gathering framework for phone numbers
SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.
Multi-cloud OSINT tool. Enumerate public resources in AWS, Azure, and Google Cloud.
Quick Overview
Kamerka is an open-source intelligence (OSINT) tool designed to build interactive maps of Internet of Things (IoT) devices. It utilizes various APIs and data sources to locate and visualize geospatial information about cameras, industrial control systems, and other connected devices.
Pros
- Provides a comprehensive view of IoT devices in a specified area
- Integrates multiple data sources for enhanced intelligence gathering
- Offers an interactive map interface for easy visualization
- Supports customization and expansion through additional modules
Cons
- May raise privacy concerns due to the nature of data collection
- Requires API keys for some features, which can be a barrier to entry
- Could potentially be misused for malicious purposes if not handled responsibly
- May have limitations in accuracy depending on the quality of data sources
Code Examples
# Initialize Kamerka with a specific location
from kamerka import Kamerka
kamerka = Kamerka(latitude=52.2297, longitude=21.0122)
kamerka.search()
# Search for specific device types
kamerka.search(device_type="camera")
# Export results to various formats
kamerka.export_to_csv("results.csv")
kamerka.export_to_json("results.json")
Getting Started
To get started with Kamerka:
-
Clone the repository:
git clone https://github.com/woj-ciech/kamerka.git
-
Install dependencies:
pip install -r requirements.txt
-
Set up API keys in the
config.py
file. -
Run Kamerka:
from kamerka import Kamerka kamerka = Kamerka(latitude=YOUR_LATITUDE, longitude=YOUR_LONGITUDE) kamerka.search()
Replace YOUR_LATITUDE
and YOUR_LONGITUDE
with the coordinates of the area you want to search.
Competitor Comparisons
Incredibly fast crawler designed for OSINT.
Pros of Photon
- More versatile, capable of crawling and extracting various types of data from websites
- Actively maintained with regular updates and bug fixes
- Supports multiple output formats (JSON, CSV, etc.)
Cons of Photon
- Less focused on IoT device discovery compared to Kamerka
- May require more setup and configuration for specific use cases
- Potentially overwhelming for users seeking a simple IoT device scanner
Code Comparison
Kamerka (device discovery):
def shodan_search(query):
try:
results = api.search(query)
return results
except Exception as e:
print("Error: %s" % e)
return None
Photon (web crawling):
def photon(seedurl, headers, level, threadCount):
dataset = set() # urls found
processing_queue = deque([seedurl]) # urls to crawl
for i in range(level):
urls = extract_urls(processing_queue, threadCount)
dataset.update(urls)
processing_queue = urls
return dataset
The code snippets highlight the different focus areas of each tool. Kamerka is geared towards IoT device discovery using Shodan, while Photon is designed for web crawling and data extraction.
E-mails, subdomains and names Harvester - OSINT
Pros of theHarvester
- More comprehensive data gathering capabilities across multiple sources
- Longer development history and larger community support
- Supports both passive and active information gathering techniques
Cons of theHarvester
- Less focused on visual representation of gathered data
- May require more manual analysis of results
- Not specifically designed for IoT device discovery
Code Comparison
theHarvester:
from theHarvester.discovery import *
from theHarvester.discovery.constants import *
search = googlesearch.search_google(word, limit, start)
search.process()
emails = search.get_emails()
Kamerka:
def shodan_search(query):
api = shodan.Shodan(shodan_api)
try:
results = api.search(query)
return results
except shodan.APIError as e:
print('Error: {}'.format(e))
Both tools utilize external APIs for data gathering, but theHarvester focuses on a broader range of sources, while Kamerka is more specialized for IoT device discovery using Shodan. theHarvester's code snippet demonstrates its use of Google search, while Kamerka's code shows its integration with Shodan API for targeted IoT searches.
Information gathering framework for phone numbers
Pros of PhoneInfoga
- More focused and specialized tool for phone number information gathering
- Regularly updated with recent commits and active development
- Provides a web interface for easier use and visualization of results
Cons of PhoneInfoga
- Limited to phone number information, while Kamerka offers broader IoT device scanning
- Requires more setup and dependencies compared to Kamerka's simpler installation
- Less versatile in terms of target types and scanning capabilities
Code Comparison
PhoneInfoga (Python):
def parse_number(number):
try:
phonenumber = phonenumbers.parse(number, None)
except NumberParseException as e:
return {'error': str(e)}
return {'number': phonenumbers.format_number(phonenumber, PhoneNumberFormat.E164)}
Kamerka (Python):
def shodan_search(query):
try:
results = api.search(query)
return results
except Exception as e:
print("Error: %s" % e)
return None
Both projects use Python, but PhoneInfoga focuses on parsing and formatting phone numbers, while Kamerka utilizes Shodan API for broader IoT device searching. PhoneInfoga's code is more specialized for phone number handling, whereas Kamerka's code is geared towards general IoT device discovery and information gathering.
SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.
Pros of SpiderFoot
- More comprehensive OSINT tool with a wider range of data sources and modules
- User-friendly web interface for easier operation and result visualization
- Actively maintained with regular updates and a larger community
Cons of SpiderFoot
- Requires more setup and configuration compared to Kamerka's simpler approach
- May be overwhelming for users seeking a more focused, camera-specific tool
- Higher resource consumption due to its broader scope and functionality
Code Comparison
SpiderFoot (Python):
class sfp_example(SpiderFootPlugin):
def handleEvent(self, event):
eventName = event.eventType
srcModuleName = event.module
eventData = event.data
# Plugin logic here
Kamerka (Python):
def search_shodan(query):
try:
results = api.search(query)
return results
except Exception as e:
print(f"Error: {e}")
return None
SpiderFoot offers a more structured plugin system, allowing for easier extension of functionality. Kamerka's code is more straightforward, focusing on specific tasks like Shodan searches.
Both tools serve different purposes: SpiderFoot is a comprehensive OSINT framework, while Kamerka specializes in discovering and mapping internet-connected cameras and other IoT devices. The choice between them depends on the user's specific needs and level of expertise in OSINT investigations.
Multi-cloud OSINT tool. Enumerate public resources in AWS, Azure, and Google Cloud.
Pros of cloud_enum
- Focuses on enumerating public cloud storage across multiple providers (AWS, Azure, Google)
- Lightweight and easy to use with minimal dependencies
- Provides detailed output and supports various output formats
Cons of cloud_enum
- Limited to cloud storage enumeration, while kamerka offers broader IoT device discovery
- Less visual representation of results compared to kamerka's mapping features
- May require more manual analysis of results for actionable insights
Code Comparison
cloud_enum:
def check_storage(storage_name):
url = f"https://{storage_name}.blob.core.windows.net"
try:
response = requests.get(url, timeout=3)
if response.status_code == 404:
return False
return True
except requests.exceptions.RequestException:
return False
kamerka:
def search_shodan(query):
try:
results = api.search(query)
for result in results['matches']:
ip = result['ip_str']
port = result['port']
org = result.get('org', 'N/A')
data = result['data']
print(f"IP: {ip}:{port}\nOrganization: {org}\nData: {data}\n")
except shodan.APIError as e:
print(f"Error: {e}")
Both tools utilize HTTP requests for data gathering, but cloud_enum focuses on cloud storage detection, while kamerka leverages Shodan API for broader IoT device discovery.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
NOT SUPPORTED OR DEVELOPED ANYMORE
PLEASE USE GUI VERSION
https://github.com/woj-ciech/Kamerka-GUI
êamerka 2.0 aka FIST (Flickr, Instagram, Shodan, Twitter)
Build interactive map of cameras, printers, tweets and photos.
The script creates a map of cameras, printers, tweets and photos based on your coordinates. Everything is clearly presented in form of interactive map with icons and popups.
Detailed write-up https://medium.com/@woj_ciech/hunting-with-%EA%93%98amerka-2-0-aka-fist-flickr-instagram-shodan-twitter-ca363f12562a
Previous version https://medium.com/@woj_ciech/%EA%93%98amerka-build-interactive-map-of-cameras-from-shodan-a0267849ec0a
v4 update
Added RTSP (Real-Time Streaming Protocol)
MQTT (Message Queue Telemetry Transport).
Elasticsearch output
Additional:
- recursive mode (check each host for open ports and more information)
- "Check ownership" link on map which redirects to bgp.he.net for detailed information about IP
- "Lookup on Shodan" takes you to Shodan details about host
v3 update
Visualize Industrial Control Systems of any country.
Use --country flag and pass short code for your country.
To use Street View add your API key in line 109
root@kali:~/# python kamerka.py --country PL
root@kali:~/# python kamerka.py --country CH
Requirements
- Written with :heartpulse: in Python 3
- Shodan + paid subscription
- Geopy
- Foilum
- Colorama
- InstagramAPI (https://github.com/LevPasha/Instagram-API-python) - Credentials instead of api keys
- flickrapi
- Branca
- Google Street View API
- Elasticsearch
pip install -r requirements.txt
Put your API keys in code
To use Instagram module, you have to add additional method to InstagramAPI.py file.
def geosearchLocation(self, lat, lon):
return self.SendRequest('location_search/?latitude=' + str(lat)+'&longitude='+str(lon)+'&rank_token=' + self.rank_token)
More details here --> https://github.com/LevPasha/Instagram-API-python/pull/492/commits/ed74ee45fb3e3abe6df7f767d3353de6fd897401
https://github.com/LevPasha/Instagram-API-python/pull/492
Usage
(venv) root@kali:~/PycharmProjects/kamerka# python kamerka.py -h
usage: kamerka.py [-h] [--lat LAT] [--lon LON] [--radius RADIUS] [--dark]
[--twitter] [--camera] [--flickr] [--instagram] [--printer]
[--country COUNTRY] [--rtsp] [--mqtt] [--open]
[--first FIRST] [--last LAST] [--recursive]
[--elasticsearch] [--host HOST] [--port PORT]
o#######o
o###########o
o#############o
#################
###### \########o
#;^ _^,/---\#####!
,` /^_ .-~^~-.__\#
/ ^\/,,@@@,, ;|
| \!!@@@@@!! ^,
#. .\; '9@@@P' ^,
###./^ ----,_^^ /@-._
^--._,o@@@@@@
^;@@@@@@@@@
^-;@@@@
êamerka 2.0 (FIST) - Build interactive map of cameras, tweets and photos
medium.com/@woj-ciech github.com/woj_ciech
python kamerka.py -h
Example: python kamerka.py --lat "37.235 --lon 115.811111" --dark --twitter --camera --printer
"python kamerka.py --country RU
optional arguments:
-h, --help show this help message and exit
--radius RADIUS Radius in km (Default 3)
--dark Dark Theme
--twitter Twitter module
--camera Camera module
--flickr Flickr module
--instagram Instagram module
--printer Printer module
--country COUNTRY Find Industrial Control Systems for country. Short code for country: US,IL,RU
--rtsp Real Time Streaming Protocol module
--mqtt Message Queuing Telemetry Transport module
--open Show only open devices
--first FIRST First page
--last LAST Last page
--recursive Recusrive mode
--elasticsearch Save to ElasticSearch (works only with recursive) mode
--host HOST Elasticsearch host
--port PORT Elasticsearch port
Required arguments:
--lat LAT Latitude
--lon LON Longitude
root@kali:~/#python kamerka.py --lat 37.8368723 --lon -122.2645793 --camera --flickr --instagram --twitter --printer --first 1 --last 1
Dark mode
Other
Do not test on devices you don't own.
Thanks to @xrxz - you were right with coordinates
Top Related Projects
Incredibly fast crawler designed for OSINT.
E-mails, subdomains and names Harvester - OSINT
Information gathering framework for phone numbers
SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.
Multi-cloud OSINT tool. Enumerate public resources in AWS, Azure, and Google Cloud.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot