{"id":33174863,"url":"https://github.com/bradyjoslin/sharewifi","last_synced_at":"2025-11-20T20:02:03.611Z","repository":{"id":39887891,"uuid":"249813370","full_name":"bradyjoslin/sharewifi","owner":"bradyjoslin","description":"Quickly share Wi-Fi connection info on macOS and Windows","archived":true,"fork":false,"pushed_at":"2024-05-07T05:10:31.000Z","size":8811,"stargazers_count":87,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-10T22:38:46.327Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","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/bradyjoslin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-03-24T20:41:48.000Z","updated_at":"2024-05-07T05:11:45.000Z","dependencies_parsed_at":"2024-02-10T07:44:04.812Z","dependency_job_id":null,"html_url":"https://github.com/bradyjoslin/sharewifi","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/bradyjoslin/sharewifi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradyjoslin%2Fsharewifi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradyjoslin%2Fsharewifi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradyjoslin%2Fsharewifi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradyjoslin%2Fsharewifi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradyjoslin","download_url":"https://codeload.github.com/bradyjoslin/sharewifi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradyjoslin%2Fsharewifi/sbom","scorecard":{"id":250537,"data":{"date":"2025-08-11","repo":{"name":"github.com/bradyjoslin/sharewifi","commit":"286c3ab07fb38f622167666b84ce15179780313a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/8 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/pr.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/bradyjoslin/sharewifi/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/bradyjoslin/sharewifi/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/bradyjoslin/sharewifi/pr.yml/master?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.1.8 not signed: https://api.github.com/repos/bradyjoslin/sharewifi/releases/40883566","Warn: release artifact v0.1.7 not signed: https://api.github.com/repos/bradyjoslin/sharewifi/releases/39768281","Warn: release artifact v0.1.6 not signed: https://api.github.com/repos/bradyjoslin/sharewifi/releases/30882619","Warn: release artifact v0.1.5 not signed: https://api.github.com/repos/bradyjoslin/sharewifi/releases/29195239","Warn: release artifact v0.1.4 not signed: https://api.github.com/repos/bradyjoslin/sharewifi/releases/29185618","Warn: release artifact v0.1.8 does not have provenance: https://api.github.com/repos/bradyjoslin/sharewifi/releases/40883566","Warn: release artifact v0.1.7 does not have provenance: https://api.github.com/repos/bradyjoslin/sharewifi/releases/39768281","Warn: release artifact v0.1.6 does not have provenance: https://api.github.com/repos/bradyjoslin/sharewifi/releases/30882619","Warn: release artifact v0.1.5 does not have provenance: https://api.github.com/repos/bradyjoslin/sharewifi/releases/29195239","Warn: release artifact v0.1.4 does not have provenance: https://api.github.com/repos/bradyjoslin/sharewifi/releases/29185618"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2021-0139","Warn: Project is vulnerable to: RUSTSEC-2021-0145 / GHSA-g98v-hv3f-hcfr","Warn: Project is vulnerable to: RUSTSEC-2024-0375","Warn: Project is vulnerable to: RUSTSEC-2024-0370"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T08:22:05.550Z","repository_id":39887891,"created_at":"2025-08-17T08:22:05.550Z","updated_at":"2025-08-17T08:22:05.550Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285503668,"owners_count":27182913,"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-11-20T02:00:05.334Z","response_time":54,"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":[],"created_at":"2025-11-16T02:00:34.328Z","updated_at":"2025-11-20T20:02:03.605Z","avatar_url":"https://github.com/bradyjoslin.png","language":"Rust","funding_links":[],"categories":["Other"],"sub_categories":[],"readme":"-- **Archived:  Apple has retired the airport command-line utility on macOS Sonoma 14.4** --\n\n# Share Wi-Fi Connection Info\n\nQuickly share Wi-Fi passwords and connection details. Generates QR codes that auto-configure iOS and Android devices. Compatible with macOS and Windows.\n\n## Usage\n\n```text\nsharewifi 0.1.6\nQuickly share Wi-Fi passwords and connection details\n\nUSAGE:\n    sharewifi [FLAGS] [OPTIONS]\n\nFLAGS:\n    -a, --always-allow    Disables future confirmation prompts to access this password. Sudo required\n    -h, --help            Prints help information\n    -q, --qrcode          Prints Wi-Fi Network config QR Code for Android and iOS 11+\n    -V, --version         Prints version information\n    -v, --verbose         Verbose output\n\nOPTIONS:\n    -s, --ssid \u003cssid\u003e    Specify an SSID.  Defaults to currently connected Wi-Fi\n```\n\n![screenshot](./images/screenshot.png)\n\n**Note:** There is no confirmation prompt required to access the Wi-Fi info on Windows, hence the `always-allow` flag is omitted.\n\nGoogle Lens displaying QR Code details along with button to join network with single tap:\n\n![google lens](./images/googlelens.png)\n\n## Installing\n\n### npm\n\n```sh\nnpm i sharewifi -g\n```\n\n### macOS using Homebew\n\nThe easiest way to install sharewifi is by using Homebrew.\n\n```bash\nbrew tap bradyjoslin/sharewifi\nbrew install sharewifi\n```\n\n### Building and Installing From Source\n\nBuilding and installing requires [Rust](https://www.rust-lang.org/tools/install). To build, clone the repository and then:\n\n```bash\ncargo build\n```\n\nTo run the debug build:\n\n```bash\ncargo run\n```\n\nTo create a release build:\n\n```bash\ncargo build --release\n```\n\nTo install:\n\n```bash\ncargo install --path .\n```\n\n### Limitations\n\nPlease note that `sharewifi` is primarily designed for simpler Wi-Fi configurations. It does not support networks requiring 802.1X authentication (commonly used in enterprise environments that require both a username and password). Users behind such network configurations may encounter limitations when using this tool.\n\n## Espanso Integration\n\n[Espanso](https://espanso.org/) is a free cross-platform text expander written in Rust. The [sharewifi espanso package](https://github.com/bradyjoslin/espanso-package-sharewifi/) makes `sharewifi` available via text expansion outside of the command line, including qr code rendering in plain text editors.\n\n![sharewifi](./images/sharewifi.gif)\n\n## Behind the Scenes\n\n### macOS\n\nUses two built-in macOS CLI utilities to function under the hood. `airport` gets information on currently connected Wi-Fi, `security` is used to obtain password. Running `security` provides a login prompt to access keychain, as authentication is required in order to obtain the password.\n\nDefault macOS `airport` utility location:\n\n`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport`.\n\nSample usage to obtain SSID:\n\n```bash\n\u003e airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'\n\nGuest WiFi\n```\n\nUses `security` utility to obtain password associated with SSID ([details](https://macromates.com/blog/2006/keychain-access-from-shell/)).\n\n```bash\n\u003e security find-generic-password \\\n-D 'AirPort network password' \\\n-ga \"Guest WiFi\" \\\n2\u003e\u00261 \u003e/dev/null\n\npassword: \"HelloFriends!\"\n```\n\nThe `always-allow` option is implemented by updating the System keychain record for that SSID so that `security` is always allowed access to the password. This requires sudo and should only be done for Wi-Fi passwords not considered secret, as will allow this app and others to read the password without credentials.\n\n```bash\nsudo security add-generic-password -U -a \u003cssid\u003e -D \"AirPort network password\" -T \"/usr/bin/security\" -s \"AirPort\"  /Library/Keychains/System.keychain\n```\n\n![keychain](./images/keychain.png)\n\n### Windows\n\nUses this command to get the currently connected Wi-Fi profile and the SSID will be included in the output:\n\n```sh\n\u003e netsh wlan show interface\n\nThere is 1 interface on the system:\n\n    Name                   : Wi-Fi\n    Description            : 802.11n USB Wireless LAN Card\n    GUID                   : c1ddfc4d-4b98-4acc-9d84-4f5f845ffb04\n    Physical address       : 00:0f:50:01:15:5f\n    State                  : connected\n    SSID                   : Guest Wi-Fi\n    BSSID                  : 21:62:ef:f1:c2:5c\n    Network type           : Infrastructure\n    Radio type             : 802.11n\n    Authentication         : WPA2-Personal\n    Cipher                 : CCMP\n    Connection mode        : Profile\n    Channel                : 1\n    Receive rate (Mbps)    : 600\n    Transmit rate (Mbps)   : 72\n    Signal                 : 100%\n    Profile                : Guest Wi-Fi\n\n    Hosted network status  : Not available\n```\n\nThen, gets the password for a specific SSID with this command - the `key=clear` option provides the `Key Content` value in the output, which is the Wi-Fi password:\n\n```sh\n\u003e netsh wlan show profiles name=myssid key=clear\n\nProfile Guest Wi-Fi on interface Wi-Fi:\n=======================================================================\n\nApplied: All User Profile\n\nProfile information\n-------------------\n    Version                : 1\n    Type                   : Wireless LAN\n    Name                   : Guest Wi-Fi\n    Control options        :\n        Connection mode    : Connect manually\n        Network broadcast  : Connect only if this network is broadcasting\n        AutoSwitch         : Do not switch to other networks\n        MAC Randomization  : Disabled\n\nConnectivity settings\n---------------------\n    Number of SSIDs        : 1\n    SSID name              : \"Guest Wi-Fi\"\n    Network type           : Infrastructure\n    Radio type             : [ Any Radio Type ]\n    Vendor extension          : Not present\n\nSecurity settings\n-----------------\n    Authentication         : WPA2-Personal\n    Cipher                 : CCMP\n    Authentication         : WPA2-Personal\n    Cipher                 : GCMP\n    Security key           : Present\n    Key Content            : HelloFriends!\n\nCost settings\n-------------\n    Cost                   : Unrestricted\n    Congested              : No\n    Approaching Data Limit : No\n    Over Data Limit        : No\n    Roaming                : No\n    Cost Source            : Default\n```\n\n## References\n\nQR Code format described in [ZXing docs](https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11).\n\nProject inspired by [rauchg/wifi-password](https://github.com/rauchg/wifi-password) and [RReverser/WiFi-Password](https://github.com/RReverser/WiFi-Password).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradyjoslin%2Fsharewifi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradyjoslin%2Fsharewifi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradyjoslin%2Fsharewifi/lists"}