Skip to content

Commit 1dc13a0

Browse files
committed
Update python package and bump default version
1 parent 3831c35 commit 1dc13a0

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

python/nyuctf/__main__.py

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,31 @@
33
from .dataset import CTFDataset
44
from .challenge import CTFChallenge
55

6-
logging.basicConfig(level=logging.DEBUG)
6+
logging.basicConfig(level=logging.ERROR)
77

8-
parser = argparse.ArgumentParser("Print challenge details")
9-
parser.add_argument("--challenge", required=True, help="Challenge name")
10-
parser.add_argument("--dataset", required=True, help="Dataset JSON")
8+
parser = argparse.ArgumentParser("List challenges that match filter")
9+
parser.add_argument("-y", "--year", help="Challenge name")
10+
parser.add_argument("-e", "--event", help="Event (CSAW-Quals, CSAW-Finals)")
11+
parser.add_argument("-c", "--category", help="Category (rev, pwn, forensics, web, misc)")
12+
parser.add_argument("-n", "--name", help="Challenge name")
13+
parser.add_argument("-d", "--dataset", default="test", help="Dataset name or JSON path")
14+
parser.add_argument("-D", "--details", action="store_true", help="Print details")
1115
args = parser.parse_args()
1216

13-
ds = CTFDataset(args.dataset)
14-
challenge = CTFChallenge(ds.get(args.challenge), ds.basedir)
17+
if args.dataset and args.dataset.endswith(".json"):
18+
ds = CTFDataset(dataset_json=args.dataset)
19+
else:
20+
ds = CTFDataset(split=args.dataset)
1521

16-
print("Name:", challenge.name)
17-
print("Category:", challenge.category)
18-
print("Compose:", challenge.container)
19-
print("Flag:", challenge.real_flag)
20-
print("Files:", challenge.files)
21-
print("Server:", challenge.server_name, challenge.port)
22+
chals = ds.filter(year=args.year, event=args.event, category=args.category, challenge=args.name)
23+
24+
for chal in map(lambda c: CTFChallenge(c, basedir=ds.basedir), chals):
25+
print(chal.canonical_name)
26+
if args.details:
27+
print("\tName:", chal.name)
28+
print("\tCategory:", chal.category)
29+
print("\tCompose:", chal.container)
30+
print("\tFlag:", chal.flag)
31+
print("\tFiles:", chal.files)
32+
if chal.server_name:
33+
print("\tServer:", chal.server_name, chal.port)

python/nyuctf/challenge.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ def load_challenge(self, challenge_json : Path):
6262
self.flag_format = "not provided"
6363
else:
6464
self.flag_format = re.sub(r'\{.*?\}', '{...}', self.flag)
65-
assert self.flag_format != self.flag, f"Flag format for {self.asiname} would leak the flag!"
6665

6766
self.server_name = self.challenge.get("box", None)
6867
self.port = self.challenge.get("internal_port", None)

python/nyuctf/download.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from pathlib import Path
44

55
REPO_URL = "https://github.com/NYU-LLM-CTF/NYU_CTF_Bench.git"
6-
AVAILABLE_VERSIONS = ["v20241008"]
7-
DEFAULT_VERSION = "v20241008"
6+
AVAILABLE_VERSIONS = ["v20250206", "v20241008"]
7+
DEFAULT_VERSION = "v20250206"
88
DEFAULT_DIRECTORY = "~/.nyuctf"
99

1010
def download_dataset(version=DEFAULT_VERSION, download_dir=DEFAULT_DIRECTORY):

0 commit comments

Comments
 (0)