Convert Figma logo to code with AI

woj-ciech logokamerka

Build interactive map of cameras from Shodan

1,241
189
1,241
13

Top Related Projects

10,989

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:

  1. Clone the repository:

    git clone https://github.com/woj-ciech/kamerka.git
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Set up API keys in the config.py file.

  4. 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

10,989

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

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
  • Twitter
  • 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

@42B and @paoloo