{"id":16928868,"url":"https://github.com/hslatman/mud-cli","last_synced_at":"2026-03-08T00:31:48.276Z","repository":{"id":64305399,"uuid":"389302784","full_name":"hslatman/mud-cli","owner":"hslatman","description":"mud-cli provides utilities for working with Manufacturer Usage Descriptions (RFC8520)","archived":false,"fork":false,"pushed_at":"2025-05-15T12:35:11.000Z","size":14097,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-19T12:45:19.533Z","etag":null,"topics":["iot","iot-access-control","mud","mud-files","rfc-8520"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hslatman.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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-25T08:52:10.000Z","updated_at":"2025-05-15T11:56:21.000Z","dependencies_parsed_at":"2024-06-20T09:25:14.027Z","dependency_job_id":"ac7adeeb-f8d0-4f59-a60e-ee3d06d22b96","html_url":"https://github.com/hslatman/mud-cli","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/hslatman/mud-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hslatman%2Fmud-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hslatman%2Fmud-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hslatman%2Fmud-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hslatman%2Fmud-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hslatman","download_url":"https://codeload.github.com/hslatman/mud-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hslatman%2Fmud-cli/sbom","scorecard":{"id":470899,"data":{"date":"2025-08-11","repo":{"name":"github.com/hslatman/mud-cli","commit":"0f2dacb9487d3f1c298d3434b666c36a52f2b4ed"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/21 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.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":"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":"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":"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":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/hslatman/mud-cli/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/hslatman/mud-cli/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/hslatman/mud-cli/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/hslatman/mud-cli/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/hslatman/mud-cli/release.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   2 third-party 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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: 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":8,"reason":"4 out of the last 4 releases have a total of 4 signed artifacts.","details":["Info: signed release artifact: mud-v0.1.0-darwin-amd64.sig: https://github.com/hslatman/mud-cli/releases/tag/v0.1.0","Info: signed release artifact: mud-v0.0.8-darwin-amd64.sig: https://github.com/hslatman/mud-cli/releases/tag/v0.0.8","Info: signed release artifact: mud-v0.0.7-darwin_amd64.sig: https://github.com/hslatman/mud-cli/releases/tag/v0.0.7","Info: signed release artifact: mud_v0.0.6_darwin_amd64.sig: https://github.com/hslatman/mud-cli/releases/tag/v0.0.6","Warn: release artifact v0.1.0 does not have provenance: https://api.github.com/repos/hslatman/mud-cli/releases/48008647","Warn: release artifact v0.0.8 does not have provenance: https://api.github.com/repos/hslatman/mud-cli/releases/47837632","Warn: release artifact v0.0.7 does not have provenance: https://api.github.com/repos/hslatman/mud-cli/releases/47837329","Warn: release artifact v0.0.6 does not have provenance: https://api.github.com/repos/hslatman/mud-cli/releases/47836288"],"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 'main'"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 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"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T13:52:20.347Z","repository_id":64305399,"created_at":"2025-08-19T13:52:20.348Z","updated_at":"2025-08-19T13:52:20.348Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30238860,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T00:30:53.000Z","status":"ssl_error","status_checked_at":"2026-03-08T00:30:44.061Z","response_time":53,"last_error":"SSL_read: 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":["iot","iot-access-control","mud","mud-files","rfc-8520"],"created_at":"2024-10-13T20:37:50.711Z","updated_at":"2026-03-08T00:31:48.255Z","avatar_url":"https://github.com/hslatman.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mud-cli\n\n`mud-cli` provides utilities for working with [Manufacturer Usage Descriptions](https://datatracker.ietf.org/doc/rfc8520/) (RFC8520).\n\n## Description\n\nManufacturer Usage Descriptions (MUDs) allow manufacturers of IoT equipment to specify the intended network communication patterns of the devices they manufacture. \nThe access control policies described in a MUD file allow network controllers to automatically enforce rules on the device, resulting in devices only being allowed to communicate within the boundaries of the access control policies. \n\nThis CLI application provides several utilities for working with MUD files.\n\n## Usage\n\n`mud-cli` contains the following commands:\n\n* read - reads (and validates) a MUD file and prints the contents\n* validate - validates a MUD file\n* sign - sign a MUD file, creating a new signature file\n* verify - verifies a MUD file signature\n* view - shows a graphical representation of the MUD using [MUD Visualizer](https://github.com/iot-onboarding/mud-visualizer)\n\n### Examples\n\n```console\n$ ./mud\nmud provides several utilities for working with MUD files\n\nUsage:\n  mud [command]\n\nAvailable Commands:\n  completion  generate the autocompletion script for the specified shell\n  help        Help about any command\n  read        Reads and prints MUD file contents\n  sign        Signs a MUD file\n  validate    Validates a MUD file to be formatted correctly\n  verify      Verifies the signature for a MUD file\n  view        Provides a graphical view of a MUD file\n```\n\n### Binary Verification\n\n`mud-cli` is signed using [Cosign](https://github.com/sigstore/cosign).\nThis means that binaries can be verified as follows:\n\n```console\n$ cosign verify-blob -key cosign.pub -signature mud-\u003cversion\u003e-\u003carch\u003e.sig mud-\u003cversion\u003e-\u003carch\u003e\nVerified OK\n```\n\nThe public key (`cosign.pub`) is available in the repository. \nSignature files and binaries are available from the [Releases](https://github.com/hslatman/mud-cli/releases) page.\n\n### MUD Visualizer\n\nThis project embeds [MUD Visualizer](https://github.com/iot-onboarding/mud-visualizer) for visualization of MUD files.\n\n## Things that can be done ...\n\n... in  no particular order.\n\n* Improve README.md\n* Add 'Use' texts with examples to commands\n* CI improvements (run on tag, build Docker image incl. Cosign signing, optimize binary size using UPX, embed version information)\n* Add self-updater and verifier (using Cosign)\n* Add tests\n* Fix (most, highest priority) TODOs ... :-)\n* Customize / improve the [MUD Visualizer](https://github.com/iot-onboarding/mud-visualizer)? It needs proper attribution to be shown on the page, at least. Can be made to look nicer on the page and also include some more metadata about the MUD file.\n* Improve logging / output\n* Allow the tool to be chained (i.e. use STDIN/STDOUT, pipes, etc.)?\n* A command for generating MUD files (from pcap or some different way)\n* A command for editing MUD files (i.e. metadata)\n* Allow setting a different location than the user home directory\n* ...","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhslatman%2Fmud-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhslatman%2Fmud-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhslatman%2Fmud-cli/lists"}