{"id":20447661,"url":"https://github.com/cobbr/judge","last_synced_at":"2025-10-07T03:52:10.411Z","repository":{"id":97441606,"uuid":"76823291","full_name":"cobbr/Judge","owner":"cobbr","description":"Judge is a tool for scoring/debugging network services on a CCDC (or similar competition) network.","archived":false,"fork":false,"pushed_at":"2017-10-04T04:30:27.000Z","size":597,"stargazers_count":21,"open_issues_count":0,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-30T20:40:00.791Z","etag":null,"topics":["ccdc","flask","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cobbr.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}},"created_at":"2016-12-19T03:03:57.000Z","updated_at":"2025-02-08T12:52:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"f9156864-f80c-44bc-b4cc-1002e57139ac","html_url":"https://github.com/cobbr/Judge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cobbr/Judge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbr%2FJudge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbr%2FJudge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbr%2FJudge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbr%2FJudge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cobbr","download_url":"https://codeload.github.com/cobbr/Judge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbr%2FJudge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278717451,"owners_count":26033542,"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-10-07T02:00:06.786Z","response_time":59,"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":["ccdc","flask","python"],"created_at":"2024-11-15T10:28:29.519Z","updated_at":"2025-10-07T03:52:10.397Z","avatar_url":"https://github.com/cobbr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Judge\n\nJudge is a scoreboard and debugging tool designed for use on a CCDC (Collegiate Cyber Defense Competition) network. It can be used during practice sessions or during a competition to quickly debug failing services and to keep score for teams.\n\n![Scoreboard](https://raw.githubusercontent.com/wiki/cobbr/Judge/scoreboard1.png)\n\n![Scoreboard](https://raw.githubusercontent.com/wiki/cobbr/Judge/scoreboard2.png)\n\n\nCCDC (or similar competitions) are usually scored upon keeping services functional within a business network. Services expected to be running on a network can be communicated to Judge through a simple YAML configuration file or configured through the web interface (shown below).\n\n![Configuration](https://raw.githubusercontent.com/wiki/cobbr/Judge/configure1.png)\n\n![Configuration](https://raw.githubusercontent.com/wiki/cobbr/Judge/configure2.png)\n\n![Configuration](https://raw.githubusercontent.com/wiki/cobbr/Judge/configure3.png)\n\n\nIn addition to functioning as a scorer, Judge also provides detailed error messages on why particular services are failing, allowing a team to quickly discover and debug a failing service (shown below).\n\n![Errors](https://raw.githubusercontent.com/wiki/cobbr/Judge/errors1.png)\n\nJudge is implemented as a python Flask web application, compatible with Linux and Windows. If you plan on running Judge as an official scorer for a competition you should read the production notes available [here](https://github.com/cobbr/Judge/wiki/3.-Production-Notes).\n\n### Services\n\nJudge currently supports testing of the following services:\n* HTTP(S)\n* FTP\n* DNS\n* SMTP\n* POP3\n\n## Installation\n\nJudge is designed to require minimal installation time, so it could be used without any configuration/setup time by a team in the middle of a competition.\n\nIt is always recommended to run Judge on a Linux system if at all possible. Installation is quicker, and Judge is more stable when run on a Linux system. Windows compatiblity is maintained as a necessity in the event that a Linux system is not available.\n\nInstallation is simple on a Linux system:\n```\n$ git clone https://github.com/cobbr/Judge\n$ cd Judge\n$ ./setup/install.sh\n```\n\nThe commands for installation on Windows are just as simple, however dependencies can be problematic. Judge is dependent on python. It assumes that it is already installed, and that python.exe is added to your PATH. Be sure python is setup correctly before attempting to install Judge. Judge is also dependent on Erlang and RabbitMQ (Judge uses the python `celery` package for forking background processes which requires these programs), and it **will** attempt to download and install them upon execution of Judge's install script (this can take a few minutes):\n\n```\nPS\u003e git clone https://github.com/cobbr/Judge\nPS\u003e cd Judge\nPS\u003e ./setup/install.ps1\n```\n\n## Configuration\n\nJudge can be configured in two ways. The simplest is through the web interface, post-launch. However, a team in the middle of a competition may not want to spend the time to individually configure every service. And a competition administrator needs to be sure that all services are launched at the same time, to ensure fair scoring.\n\nFor these reasons, Judge provides a way to configure services pre-launch by editing the `services.yaml` configuration file with pre-defined services.\n\nJudge ships with a default `services.yaml` that illustrates it's use. Here is a small subset of that example:\n```\nteams:\n  - team_name : Baylor\n\nservices:\n  # Available service_types are: dns, http, https, ftp, mail\n  - service_type_name       : dns\n  # The team that should be scored based on the functionality of this service\n    team_name               : Baylor\n  # A name for this service, will be displayed on the scoreboard\n    service_name            : internal dns - addns.ccdc.local\n  # The server IP that will be queried for this service\n    service_connection      : 172.25.21.27\n  # The domain name that this service is querying\n    service_request         : addns.ccdc.local\n  # The expected result the server should return, service will fail if result does not match expected\n    service_expected_result : 172.25.21.27\n  - service_type_name       : http\n    team_name               : Baylor\n    service_name            : internal http - web.ccdc.local\n    service_connection      : 172.25.21.3\n    service_request         : /\n  # The name of the file on the server that we will compare the result of the request to, the result must match\n    service_expected_result : data/uploads/default/iis-85.html\n```\n\n## Launch\n\nFinally, run the application:\n\nLinux\n```\n$ ./judge.sh\n```\n\nWindows\n```\nPS\u003e ./judge.ps1\n```\n\nScoring history is saved, even after Judge has stopped running, and will be resumed upon re-launch. You can reset scoring at any time by running:\n(Note: This will also remove any configurations added through the web interface. Only the `services.yaml` configurations will remain.)\n\nLinux\n```\n$ ./setup/reset.sh\n```\n\nWindows\n```\nPS\u003e ./setup/reset.ps1\n```\n\n## Issues/Contributions\n\nContributions are welcome!\n\nPlease report all bugs through Github issues. If you have ideas for additional features or want to implement your own, these can also be discussed through Github issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobbr%2Fjudge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcobbr%2Fjudge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobbr%2Fjudge/lists"}