{"id":18076209,"url":"https://github.com/scivision/scan-wifi-python","last_synced_at":"2026-04-09T06:40:56.664Z","repository":{"id":57443389,"uuid":"111639869","full_name":"scivision/scan-wifi-python","owner":"scivision","description":"CoreLocation, netsh, nmcli: scan Wifi from Python on Windows, MacOS, Linux","archived":false,"fork":false,"pushed_at":"2024-09-19T18:27:06.000Z","size":113,"stargazers_count":15,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-15T16:56:21.227Z","etag":null,"topics":["geolocation","mozilla-location-service","nmcli","pyobjc","wifi"],"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/scivision.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2017-11-22T05:23:27.000Z","updated_at":"2025-11-19T13:03:22.000Z","dependencies_parsed_at":"2025-04-12T08:12:37.969Z","dependency_job_id":"cc30fa79-8a29-4db6-b620-914232bf1b9e","html_url":"https://github.com/scivision/scan-wifi-python","commit_stats":null,"previous_names":["scivision/mozilla-location-wifi-python"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/scivision/scan-wifi-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scivision%2Fscan-wifi-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scivision%2Fscan-wifi-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scivision%2Fscan-wifi-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scivision%2Fscan-wifi-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scivision","download_url":"https://codeload.github.com/scivision/scan-wifi-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scivision%2Fscan-wifi-python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30207877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T03:24:23.086Z","status":"ssl_error","status_checked_at":"2026-03-07T03:23:11.444Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["geolocation","mozilla-location-service","nmcli","pyobjc","wifi"],"created_at":"2024-10-31T11:09:14.565Z","updated_at":"2026-03-10T02:32:24.186Z","avatar_url":"https://github.com/scivision.png","language":"Python","readme":"# Scan WiFi from Python\n\n[![ci](https://github.com/scivision/mozilla-location-wifi/actions/workflows/ci.yml/badge.svg)](https://github.com/scivision/mozilla-location-wifi/actions/workflows/ci.yml)\n[![PyPI Download stats](http://pepy.tech/badge/mozloc)](http://pepy.tech/project/mozloc)\n\nThis project shows how to scan WiFi from Python using command line tools or pyobjc (macOS).\n\n[Scapy dot11](https://scapy.readthedocs.io/en/latest/api/scapy.layers.dot11.html) is an alternative, more robust cross-platform way to scan WiFi than demonstrated here.\n\n[Discontinuation](https://discourse.mozilla.org/t/retiring-the-mozilla-location-service/128693) \nof \n[Mozilla Location Services API](https://ichnaea.readthedocs.io/en/latest/api/geolocate.html?highlight=macaddress#wifi-access-point-fields).\nis sad as it worked so well!\n\nThis project can be used as a reference for simply accessing WiFi information from Python without using Scapy.\n\nA future direction might be to use\n[Google Geolocation API](https://developers.google.com/maps/documentation/geolocation/intro)\n\n---\n\nUses command line access to WiFi information from Python.\nThe command line programs used to access WiFi information include:\n\n* Linux: [nmcli](https://developer.gnome.org/NetworkManager/stable/nmcli.html) NetworkManager\n* MacOS: [CoreLocation.CWWiFiClient](https://developer.apple.com/documentation/corewlan/cwwificlient) or for macOS \u003c 14.4 [airport](https://ss64.com/osx/airport.html)\n* Windows: [netsh](https://learn.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh)\n\n## Install\n\nGet latest release\n\n```sh\npip install mozloc\n```\n\nor for latest development version:\n\n```sh\ngit clone https://github.com/scivision/mozilla-location-wifi/\npip install -e ./mozilla-location-wifi\n```\n\n## Usage\n\n```sh\npython -m mozloc\n```\n\nShows `time` `lat` `lng` `accuracy` `N BSSIDs heard`.\n\nWhen Mozilla Location Services were available, accuracy better than 100 meters was possible.\n\nDump raw signals, without using API:\n\n```sh\npython -m mozloc --dump\n```\n\n### macOS\n\nmacOS \u0026ge; 14.4 uses CoreLocation.CWWiFiClient as \"airport\" was removed.\n\n### Windows\n\nOn Windows, NetSH is used.\nYou may need to disconnect from WiFi (leave WiFi enabled) to make your WiFi chipset scan and be able to get location.\n\n## convert to KML\n\nDisplay logged data in Google Earth or other KML viewer after converting from CSV to KML:\n\n```sh\npython -m mozloc.csv2kml in.log out.kml\n```\n\nwhich uses\n\n```sh\npip install simplekml\n```\n\nNote that your time MUST be in ISO 8601 format or some KML reading programs such as Google Earth will just show a blank file.\nE.g.\n\n2016-07-24T12:34:56\n\n## TODO\n\n* Would like to add Bluetooth beacons. \n* Need to use a new location service.\n\n## Notes\n\n* [Inspired by](https://github.com/flyinva/mozlosh)\n* [Alternative using Skyhook and geoclue](https://github.com/scivision/python-geoclue)\n* [Raspberry Pi NetworkManager](https://raspberrypi.stackexchange.com/a/73816)\n\nTo print verbose information about nearby WiFi:\n\n* Windows: `netsh wlan show networks mode=bssid`\n* MacOS: `airport -s`\n* Linux: `nmcli dev wifi list`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscivision%2Fscan-wifi-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscivision%2Fscan-wifi-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscivision%2Fscan-wifi-python/lists"}