{"id":16444400,"url":"https://github.com/christopherrabotin/goknock","last_synced_at":"2026-06-09T22:31:25.055Z","repository":{"id":27990474,"uuid":"31484517","full_name":"ChristopherRabotin/goknock","owner":"ChristopherRabotin","description":"A simple, extensible but not very secure TCP port knocker in Go.","archived":false,"fork":false,"pushed_at":"2015-03-01T02:58:48.000Z","size":128,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-26T06:43:16.395Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChristopherRabotin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-01T02:36:18.000Z","updated_at":"2016-08-19T16:59:37.000Z","dependencies_parsed_at":"2022-09-12T19:22:45.846Z","dependency_job_id":null,"html_url":"https://github.com/ChristopherRabotin/goknock","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ChristopherRabotin/goknock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristopherRabotin%2Fgoknock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristopherRabotin%2Fgoknock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristopherRabotin%2Fgoknock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristopherRabotin%2Fgoknock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChristopherRabotin","download_url":"https://codeload.github.com/ChristopherRabotin/goknock/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristopherRabotin%2Fgoknock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34129072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"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":"2024-10-11T09:24:17.626Z","updated_at":"2026-06-09T22:31:25.016Z","avatar_url":"https://github.com/ChristopherRabotin.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Goknock\nA very basic, extensible and insecure TCP port knocker.\nThe purpose was only to learn Go.\n\n## Features\n\n### Extensible\nWant more actions than the (very) basic ones defined? Easy!\nJust implement the `Action` interface (defined in `actions.go`), add a sequence with that action to the `sequences` array in `main.go`, and ta-da!\n\n### Multiclient\nGo's goroutines enable this cute port knocker to support multiclient out of the box.\n\n### Timeouts\nYou can define a timeout until the next port knock when defining each sequence.\n\n### Relatively discreet\nSequences can be set to silent and the code won't print any message.\nIn addition, go binaries aren't very big so it's convinent to move around.\n\n## FAQ\n\n### Why is this insecure?\nYes, ports will be opened one after the other in sequence (supposing the sequence is valid and no timeout occurs). This means it's discoverable (like most port knockers anyway).\nThis also means that a firewall may prevent port opening and an IDS may easily notice something out of the ordinary happening.\n\n### Enhancements and bugs\nMake an issue, a pull request, or if/when I abandon this go demo, fork this repo (and make something a bit better).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristopherrabotin%2Fgoknock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchristopherrabotin%2Fgoknock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristopherrabotin%2Fgoknock/lists"}