{"id":30195674,"url":"https://github.com/jettchent/scan-for-webcams","last_synced_at":"2025-08-13T04:37:36.208Z","repository":{"id":38094468,"uuid":"282553751","full_name":"JettChenT/scan-for-webcams","owner":"JettChenT","description":"scan for webcams on the internet","archived":false,"fork":false,"pushed_at":"2023-10-29T12:22:50.000Z","size":42102,"stargazers_count":256,"open_issues_count":6,"forks_count":49,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-07-12T01:32:46.539Z","etag":null,"topics":["clarifai","python","scraping","security","shodan","shodan-python","webcam","webcams"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JettChenT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-26T01:25:26.000Z","updated_at":"2025-07-08T07:54:44.000Z","dependencies_parsed_at":"2023-02-12T23:01:09.948Z","dependency_job_id":"a81e4b13-f19a-4c4c-99c3-972028271047","html_url":"https://github.com/JettChenT/scan-for-webcams","commit_stats":{"total_commits":116,"total_committers":3,"mean_commits":"38.666666666666664","dds":0.4913793103448276,"last_synced_commit":"010e23f7afdc2972df56083308678e0465c58315"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/JettChenT/scan-for-webcams","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JettChenT%2Fscan-for-webcams","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JettChenT%2Fscan-for-webcams/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JettChenT%2Fscan-for-webcams/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JettChenT%2Fscan-for-webcams/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JettChenT","download_url":"https://codeload.github.com/JettChenT/scan-for-webcams/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JettChenT%2Fscan-for-webcams/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270183165,"owners_count":24541315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clarifai","python","scraping","security","shodan","shodan-python","webcam","webcams"],"created_at":"2025-08-13T04:37:24.199Z","updated_at":"2025-08-13T04:37:36.181Z","avatar_url":"https://github.com/JettChenT.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scan-for-webcams :camera:\n\n![scan-for-webcamBanner](./.github/scan-for-webcamBanner.png)\n\n![PyPI - License](https://img.shields.io/pypi/l/scan-for-webcams?style=flat-square)\n[![Discord server invite](https://discordapp.com/api/guilds/974876463797006356/embed.png)](https://discord.gg/JCepvsHNqW)\n\n[中文文档](/zh/README.md)\n\n## Note\nI switched to a new method of [installing](#Installation) this program \nfor a better developer experience and better modifiability.\n\nAs a result, the PYPI package `scan-for-webcams` is not maintained anymore, and \nshould be considered deprecated.\n\nbtw: we have a discord channel ! [join](https://discord.gg/JCepvsHNqW)\n\n## Table of contents\n\n- [Note](#note)\n- [Table of contents](#table-of-contents)\n- [Usage](#usage)\n- [Installation](#installation)\n- [Experimental Vision-Language Model Support](#experimental-vision-language-model-support)\n- [Places365: On device footage classification](#places365-on-device-footage-classification)\n- [Graphical User Interface](#graphical-user-interface)\n- [Demo](#demo)\n\n## Usage\n\n* `python sfw search MJPG` : for public [MJPG streamers](https://github.com/jacksonliam/mjpg-streamer)\n\n* `python sfw search webcamXP` : for public [webcamXP streamers](http://www.webcamxp.com/)\n\n* `python sfw search yawCam`: for public [yawCam steamers](https://www.yawcam.com/)\n\n* `python sfw search hipcam`: for public hipcam streamers\n\n* `python sfw search rtsp`: **DANGER** searches for rtsp servers on shodan, and performs enumeration on them to try and find streams\n\n\n* `python sfw play {url}`: plays the camera stream\n  * for `rtsp://` streams, sfw will play it in a GUI viewer (see `sfw/rtsp.py`)\n  * for all other streams, sfw will open it in the default browser.\n\n* `python sfw search ... --gui`: displays the scanned cameras in a grid visually.\n\n* `python sfw search --help`: for more options and help\n\nThe program will output a list of links with the format of `ip_address:port`, and descriptions of the image beneath it.\n\nIf your terminal supports links, click the link and open it in your browser, otherwise, copy the link and open it in your browser.\n\n## Installation\n1. Clone this repository: `git clone https://github.com/JettChenT/scan-for-webcams`\n\n2. install requirements.txt: `pip install -r requirements.txt`\n\n3. set up shodan:\n   go to [shodan.io](https://shodan.io), register/log in and grab your API key\n\n4. set up clarifai:\n   go to [clarifai.com](https://clarifai.com), register/log in, create an application and grab your API key.\n   Alternatively, use the local [places365](#places365-on-device-footage-classification) model.\n\n5. setup geoip:\n   go to [geo.ipify.org](https://geo.ipify.org), register/log in and grab your API key\n   \n6. Add API keys:\n   1. run `python sfw setup`\n   2. enter your shodan, clarifai and geoip API keys\n\nAnd then you can [run](#Usage) the program!\n\n## Experimental Vision Language Model Support\nWe are working on supporting generating descriptions for footages\nvia vision language models, which can generate descriptions for images in \nnatural language, instead of just tags, and can run on-device.\nCurrently, we support a `llama.cpp` based `llava 7b` model.\n\nTo use this, run the following commands:\n\n```shell\npip install -U --no-cache-dir llama-cpp-python@git+https://github.com/damian0815/llama-cpp-python/@4ec35390d72faba70942b9605dfcbde2bda0bdad\npip install huggingface_hub wurlitzer\npython sfw search webcamXP --vllm=True --parallel=False # or any other search command with the latter two flags\n```\n\nNote: our current VLLM integration is experimental, and may not work as expected. \nParallel mode must be disabled for VLLM as of now.\n\n## Places365: On device footage classification\nIt is now possible to run [the Places365 model](https://github.com/CSAILVision/places365),\na model fined tuned for real world locations,\nto get information about webcam footage.\n\nTo use this model, you need to install the following packages:\n```bash\npip install -r requirements-places.txt\n```\n\nThen, you can run the program with the `--places` flag:\n```\npython sfw search MJPG --tag=False --places\n```\n\nThe model will take some time to download, and will be cached for future use.\n\n## Graphical User Interface\n\nTo get a display of the live streams of all the scanned webcams, simply append the `--gui` option to your command.\n\n## Demo\n\n[![asciicast](https://asciinema.org/a/494164.svg)](https://asciinema.org/a/494164)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjettchent%2Fscan-for-webcams","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjettchent%2Fscan-for-webcams","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjettchent%2Fscan-for-webcams/lists"}