Initial commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from argparse import ArgumentParser
|
||||
|
||||
|
||||
def parse_args(argv=None):
|
||||
ap = ArgumentParser(
|
||||
prog="app.py",
|
||||
description="CLI для лабораторной по хэшированию"
|
||||
)
|
||||
|
||||
sub = ap.add_subparsers(dest="cmd", required=True)
|
||||
|
||||
# --- Общие группы ---
|
||||
common_variant = ArgumentParser(add_help=False)
|
||||
common_variant.add_argument("-v", "--variant", choices=["1", "2", "3"], required=True,
|
||||
help="Выбор варианта: 1=sin, 2=cos, 3=xor")
|
||||
|
||||
common_salt = ArgumentParser(add_help=False)
|
||||
common_salt.add_argument("-s", "--salt", type=str, default="",
|
||||
help="Соль (по умолчанию пустая)")
|
||||
|
||||
common_bytes = ArgumentParser(add_help=False)
|
||||
common_bytes.add_argument("--bytes", type=int, default=16,
|
||||
help="Количество значимых байтов хэша (по умолчанию 16)")
|
||||
|
||||
# --- HASH ---
|
||||
sp_hash = sub.add_parser("hash", parents=[common_variant, common_salt, common_bytes],
|
||||
help="Посчитать хэш сообщения")
|
||||
sp_hash.add_argument("-m", "--message", type=str, default="",
|
||||
help="Сообщение (может быть пустым)")
|
||||
|
||||
# --- AVALANCHE ---
|
||||
sp_av = sub.add_parser("avalanche", parents=[common_variant, common_salt, common_bytes],
|
||||
help="Тест эффекта лавины")
|
||||
sp_av.add_argument("-m", "--message", type=str, required=True,
|
||||
help="Базовое сообщение")
|
||||
|
||||
# --- COLLISIONS ---
|
||||
sp_col = sub.add_parser("collisions", parents=[common_variant, common_bytes],
|
||||
help="Поиск коллизий (перебор)")
|
||||
sp_col.add_argument("--max-len", type=int, default=3,
|
||||
help="Максимальная длина сообщений (по умолчанию 3)")
|
||||
sp_col.add_argument("--alphabet", choices=["alnum", "alpha", "digits"], default="alnum",
|
||||
help="Алфавит: alnum[a-z0-9], alpha[a-z], digits[0-9]")
|
||||
|
||||
# --- ANALYZE ---
|
||||
sp_an = sub.add_parser("analyze", parents=[common_variant, common_bytes],
|
||||
help="Анализ равномерности")
|
||||
sp_an.add_argument("--count", type=int, default=100,
|
||||
help="Сколько сообщений сгенерировать")
|
||||
sp_an.add_argument("--buckets", type=int, default=10,
|
||||
help="Сколько корзин для распределения (по умолчанию 10)")
|
||||
|
||||
return ap.parse_args(argv)
|
||||
Reference in New Issue
Block a user