{"id":16790296,"url":"https://github.com/cdgriffith/pyctf","last_synced_at":"2025-07-19T02:32:07.193Z","repository":{"id":66133617,"uuid":"21261147","full_name":"cdgriffith/pyctf","owner":"cdgriffith","description":null,"archived":false,"fork":false,"pushed_at":"2016-03-16T15:57:48.000Z","size":582,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-23T01:45:35.698Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/cdgriffith.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-06-27T02:09:56.000Z","updated_at":"2020-04-10T00:09:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"98ed187d-9671-42e2-91aa-abdbbcec8c06","html_url":"https://github.com/cdgriffith/pyctf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdgriffith%2Fpyctf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdgriffith%2Fpyctf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdgriffith%2Fpyctf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdgriffith%2Fpyctf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdgriffith","download_url":"https://codeload.github.com/cdgriffith/pyctf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243955700,"owners_count":20374373,"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","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-13T08:29:25.038Z","updated_at":"2025-03-17T01:20:51.581Z","avatar_url":"https://github.com/cdgriffith.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"PyCTF\n=====\n\nPyCTF is a Capture-the-Flag framework.\n\n\u003e IN DEVELOPMENT - Please report any issues or requests through github\n\n\nOverview\n--------\n\nThe goal of PyCTF is to provide an easy to setup and use challenge-response game.\n\nThe PyCTF Server allows for clients to connect to it to grab questions and media that relate to the questions,\nand then submit a response. It allows for unique question/answer combos for each user, which can be generated by nearly any language.\n\nRequirements\n------------\n\n* Python 2.7 or 3.2+ \\*\n\t- bottle\n\n\\* Currently in development on 3.4, planning to target 2.7+ \n\nOptional requirements:\n\n* cherrypy (if using SSL)\n* requests (if using python client) \n\n\nBasic Usage\n-----------\n\nTo start up a match, simply start off the `pyctf_server.py` python file under the 'src' directory. \n\n`python pyctf_server.py`\n\nWith default settings this will start a server and website running locally on port 47275. \nAccess it by opening a web browser (currently tested with firefox) and pointing it to `http://localhost:47275/`. \n\n\n\u003e DO NOT use the provided SSL pem when running your own server,\nit is provided for demonstration / testing purposes only. \n\nLEGAL\n-----\n\nMIT Licence\n\nDeveloped by Chris Griffith - pyctf.com - christophergriffith.net\n\n\nFAQ and Common Issues\n---------------------\n\n### Why isn't the ssl.key and ssl.crt put in the match directory by default?\n\nFeel free to put it in there, but as the server could potentially run many matches while on the\nsame domain it would be silly to create a new one per match.\n\n### sslv3 alert bad certificate\n\n```\n    ssl.SSLError: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:645)\n```\n\nFirefox hates self signed certs. Will have to open `about:config` in the url bar, accept the warning, then set\n\n`security.tls.insecure_fallback_hosts` to `localhost` and visit localhost again.\n\n\n### tlsv1 alert unknown ca\n\n```\n    ssl.SSLError: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca\n```\n\nThe browser has not yet accepted the self signed certificate.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdgriffith%2Fpyctf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdgriffith%2Fpyctf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdgriffith%2Fpyctf/lists"}