From 37eff0ed9bf257836ebcd1df149fdd7f474ec311 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Mon, 16 Mar 2026 12:08:42 +0300 Subject: [PATCH] =?UTF-8?q?lab2=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab2/README.md | 6 +- lab2/access.py | 34 +++++++++ lab2/bruteforce.py | 125 +++++++++++++++++++++------------ lab2/lab2.md | 7 ++ report/img/lab2-bruteforce.png | Bin 64108 -> 55034 bytes report/report.tex | 55 ++++++++++----- 6 files changed, 164 insertions(+), 63 deletions(-) diff --git a/lab2/README.md b/lab2/README.md index b00c268..3192c84 100644 --- a/lab2/README.md +++ b/lab2/README.md @@ -71,6 +71,8 @@ confaccess PRACTICE2_DIR=/tmp/practice2 confaccess ``` +Режим проверки учётных данных (для bruteforce): `confaccess --check ` — читает пароли построчно из stdin, выводит 0 или 1 на каждую строку, exit 0 при первом совпадении. + После аутентификации доступны команды: ``` @@ -93,7 +95,7 @@ bruteforce alice bruteforce alice --max-length 4 ``` -Алгоритм хэширования: **SHA-256**. -Перебор выполняется напрямую по хэшу из passwd-файла. +Перебор выполняется через утилиту access (confaccess): bruteforce не имеет доступа к passwd-файлу и проверяет пароли только через `confaccess --check`. +Алгоритм хэширования в access: **SHA-256**. Фиксируется время перебора и количество итераций до нахождения пароля. Перебор останавливается автоматически при достижении лимита 8 часов. diff --git a/lab2/access.py b/lab2/access.py index 2f480d5..1c483e6 100644 --- a/lab2/access.py +++ b/lab2/access.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +import argparse import getpass import hashlib import shutil @@ -195,7 +196,40 @@ def cmd_remove(args: list[str], login: str, perms: str) -> None: print("Done.") +def check_credentials(login: str, password: str) -> bool: + """Check login+password against passwd. Used by --check mode.""" + users = read_users() + user = users.get(login) + if user and user["password_hash"] == hash_password(password): + return True + return False + + def main() -> None: + parser = argparse.ArgumentParser(description="Access confidential data") + parser.add_argument( + "--check", + metavar="LOGIN", + help="Batch mode: read passwords line-by-line from stdin, output 0 or 1 per line; exit 0 on first match", + ) + args, _ = parser.parse_known_args() + + if args.check is not None: + # --check: one process, many checks; read_users once + users = read_users() + user = users.get(args.check) + target_hash = user["password_hash"] if user else None + + for line in sys.stdin: + password = line.rstrip("\n") + if target_hash and hash_password(password) == target_hash: + sys.stdout.write("1\n") + sys.stdout.flush() + sys.exit(0) + sys.stdout.write("0\n") + sys.stdout.flush() + sys.exit(1) + signal.signal(signal.SIGINT, lambda _s, _f: (print("\nBye."), sys.exit(0))) login, user = authenticate() diff --git a/lab2/bruteforce.py b/lab2/bruteforce.py index 3c1e218..4145e8c 100644 --- a/lab2/bruteforce.py +++ b/lab2/bruteforce.py @@ -1,15 +1,16 @@ #!/usr/bin/env python3 import argparse -import hashlib import itertools +import shutil import string +import subprocess import sys import time from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) -from config import PASSWD_FILE +from config import BIN_DIR CHARSET = string.ascii_letters + string.digits + "!@#$%^&*()" FIRST_CHARS = string.ascii_letters @@ -17,19 +18,24 @@ FIRST_CHARS = string.ascii_letters MAX_HOURS = 8 -def hash_password(password: str) -> str: - return hashlib.sha256(password.encode("ascii")).hexdigest() - - -def get_target_hash(login: str) -> str | None: - if not PASSWD_FILE.exists(): - return None - with open(PASSWD_FILE) as f: - for line in f: - parts = line.strip().split(":", 4) - if len(parts) == 5 and parts[0] == login: - return parts[1] - return None +def get_access_cmd() -> list[str]: + """Resolve path to access utility (confaccess).""" + # setup.sh installs as confaccess; pyproject exposes as access + for name in ("confaccess", "access"): + path = shutil.which(name) + if path: + return [path] + # Fallback: same directory as bruteforce (development) + script_dir = Path(__file__).resolve().parent + access_script = script_dir / "access.py" + if access_script.exists(): + return [sys.executable, str(access_script)] + # Try bin dir from config (e.g. /usr/local/practice2/bin/confaccess) + for name in ("confaccess", "access"): + bin_cmd = BIN_DIR / name + if bin_cmd.exists(): + return [str(bin_cmd)] + return ["confaccess"] # hope it's in PATH def max_combinations(length: int) -> int: @@ -38,14 +44,31 @@ def max_combinations(length: int) -> int: return len(FIRST_CHARS) * (len(CHARSET) ** (length - 1)) -def brute_force_length(target_hash: str, length: int) -> tuple[str, int, float] | None: +def brute_force_length( + login: str, length: int, proc: subprocess.Popen[str] +) -> tuple[str, int, float] | None: + """Try all passwords of given length via batch process. proc = access --check.""" count = 0 start = time.perf_counter() + stdin = proc.stdin + stdout = proc.stdout + assert stdin is not None and stdout is not None + + def check(password: str) -> bool: + nonlocal count + count += 1 + stdin.write(password + "\n") + stdin.flush() + line = stdout.readline() + if not line: + return False + return line.strip() == "1" if length == 1: for first in FIRST_CHARS: - count += 1 - if hash_password(first) == target_hash: + if time.perf_counter() - start > MAX_HOURS * 3600: + return None + if check(first): return first, count, time.perf_counter() - start return None @@ -53,16 +76,17 @@ def brute_force_length(target_hash: str, length: int) -> tuple[str, int, float] for rest in itertools.product(CHARSET, repeat=length - 1): if time.perf_counter() - start > MAX_HOURS * 3600: return None - count += 1 password = first + "".join(rest) - if hash_password(password) == target_hash: + if check(password): return password, count, time.perf_counter() - start return None def main() -> None: - parser = argparse.ArgumentParser(description="Brute force password cracker (SHA-256)") + parser = argparse.ArgumentParser( + description="Brute force password cracker (via access utility)" + ) parser.add_argument("login", help="Target username") parser.add_argument( "--max-length", @@ -72,34 +96,45 @@ def main() -> None: ) args = parser.parse_args() - target_hash = get_target_hash(args.login) - if not target_hash: - print(f"User '{args.login}' not found in passwd file.") - return + cmd = get_access_cmd() + ["--check", args.login] + proc = subprocess.Popen( + cmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + text=True, + bufsize=1, + ) + try: + print(f"Target: {args.login}") + print(f"Charset size: {len(CHARSET)} ({len(FIRST_CHARS)} valid for first char)") + print() - print(f"Target: {args.login}") - print(f"Hash: {target_hash}") - print(f"Charset size: {len(CHARSET)} ({len(FIRST_CHARS)} valid for first char)") - print(f"Algorithm: SHA-256") - print() + total_start = time.perf_counter() + for length in range(1, args.max_length + 1): + total = max_combinations(length) + print(f"Length {length}: max {total:>15,} combinations") - for length in range(1, args.max_length + 1): - total = max_combinations(length) - print(f"Length {length}: max {total:>15,} combinations") + result = brute_force_length(args.login, length, proc) - result = brute_force_length(target_hash, length) + if result is not None: + password, count, elapsed = result + total_elapsed = time.perf_counter() - total_start + print(f" >>> FOUND: '{password}'") + print(f" Iterations: {count:,}") + print(f" Time (len): {elapsed:.4f}s") + print(f" Time (total): {total_elapsed:.4f}s") + print(f" Speed: {count / elapsed:,.0f} attempts/s") + return + else: + print(f" Not found at length {length} (timeout or exhausted)") - if result is not None: - password, count, elapsed = result - print(f" >>> FOUND: '{password}'") - print(f" Iterations: {count:,}") - print(f" Time: {elapsed:.4f}s") - print(f" Speed: {count / elapsed:,.0f} hashes/s") - return - else: - print(f" Not found at length {length} (timeout or exhausted)") - - print(f"\nPassword not found within length {args.max_length}.") + print(f"\nPassword not found within length {args.max_length}.") + finally: + if proc.stdin: + proc.stdin.close() + if proc.poll() is None: + proc.terminate() + proc.wait() if __name__ == "__main__": diff --git a/lab2/lab2.md b/lab2/lab2.md index 7e8df90..3b91927 100644 --- a/lab2/lab2.md +++ b/lab2/lab2.md @@ -275,3 +275,10 @@ **Go:** * пакет `hash` + + +--- + +Примечание: + +Brute Force должен запускать утилиту из-под себя и через неё пытаться подобрать пароль, он не должен лезть в файл напрямую. \ No newline at end of file diff --git a/report/img/lab2-bruteforce.png b/report/img/lab2-bruteforce.png index f26ee2246b33b12997e37f92a9eaad24e1a7c663..0186b9dfb15536d7246db3455ef1b2a00bfc17ea 100644 GIT binary patch literal 55034 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 literal 64108 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 diff --git a/report/report.tex b/report/report.tex index 97ab6b8..275b386 100755 --- a/report/report.tex +++ b/report/report.tex @@ -400,9 +400,9 @@ A: C (Availability Impact: Complete) — полное нарушение дос \subsection{Описание реализации} -Утилита управления пользователями (usermgr) предоставляет следующие подкоманды: \texttt{add} — добавление пользователя с интерактивным вводом ФИО, прав доступа, пароля и его подтверждения; \texttt{edit} — редактирование ФИО и прав доступа существующего пользователя; \texttt{passwd} — изменение пароля; \texttt{delete} — удаление пользователя; \texttt{list} — вывод списка всех пользователей. Пароль хранится в виде SHA-256-хэша. Все операции с файлом паролей регистрируются в журнале \texttt{log/usermgr.log}. +Утилита управления пользователями (usermgr, исходный код в приложении 1) предоставляет следующие подкоманды: \texttt{add} — добавление пользователя с интерактивным вводом ФИО, прав доступа, пароля и его подтверждения; \texttt{edit} — редактирование ФИО и прав доступа существующего пользователя; \texttt{passwd} — изменение пароля; \texttt{delete} — удаление пользователя; \texttt{list} — вывод списка всех пользователей. Пароль хранится в виде SHA-256-хэша. Все операции с файлом паролей регистрируются в журнале \texttt{log/usermgr.log}. -Утилита доступа к конфиденциальным данным (confaccess) при запуске запрашивает логин и пароль. При успешной аутентификации выводится приветствие <<Привет, <ФИО>>> и справка по доступным командам. При вводе неверных данных запрос повторяется. Завершение работы происходит по команде \texttt{exit} или сигналу SIGINT (Ctrl+C). Все попытки входа и действия с конфиденциальными данными регистрируются в журнале \texttt{log/access.log}. +Утилита доступа к конфиденциальным данным (confaccess, исходный код в приложении 2) при запуске запрашивает логин и пароль. При успешной аутентификации выводится приветствие <<Привет, <ФИО>>> и справка по доступным командам. При вводе неверных данных запрос повторяется. Завершение работы происходит по команде \texttt{exit} или сигналу SIGINT (Ctrl+C). Все попытки входа и действия с конфиденциальными данными регистрируются в журнале \texttt{log/access.log}. Для неинтерактивной проверки учётных данных предусмотрен режим \texttt{--check <логин>}: утилита читает пароли построчно из stdin и выводит 0 или 1 на каждую строку; при совпадении завершает работу с кодом 0. Поддерживаемые команды приведены в таблице~\ref{tab:commands}. @@ -427,11 +427,11 @@ A: C (Availability Impact: Complete) — полное нарушение дос Копирование разрешено только в каталог \texttt{confdata} или внутри него. Копирование из \texttt{confdata} в другие каталоги и перезапись существующих файлов запрещены. -Программа взлома паролей (bruteforce) выполняет последовательный перебор паролей начиная с длины 1, проверяя все допустимые комбинации символов. Для каждой комбинации вычисляется SHA-256-хэш и сравнивается с целевым хэшем из файла паролей. При нахождении совпадения фиксируются найденный пароль, количество итераций и затраченное время. Перебор прекращается при обнаружении пароля, достижении заданной максимальной длины или истечении восьмичасового лимита. +Программа взлома паролей (bruteforce, исходный код в приложении 3) не имеет доступа к файлу паролей и выполняет перебор исключительно через утилиту confaccess. При запуске bruteforce создаёт один процесс \texttt{confaccess --check <логин>} и передаёт ему пароли построчно; утилита проверяет каждый пароль (хэширование SHA-256 и сравнение с данными из \texttt{passwd}) и возвращает результат. Перебор выполняется последовательно, начиная с длины 1. При нахождении совпадения фиксируются найденный пароль, количество итераций и затраченное время. Перебор прекращается при обнаружении пароля, достижении заданной максимальной длины или истечении восьмичасового лимита. \subsection{Развёртывание системы} -Для создания структуры каталогов и установки утилит предусмотрен скрипт \texttt{setup.sh}. При запуске с правами суперпользователя скрипт также выставляет ограничительные права доступа. Базовый каталог задаётся переменной окружения \texttt{PRACTICE2\_DIR}; при её отсутствии используется \texttt{/usr/local/practice2}. +Для создания структуры каталогов и установки утилит предусмотрен скрипт \texttt{setup.sh} (приложение 4). При запуске с правами суперпользователя скрипт также выставляет ограничительные права доступа. Базовый каталог задаётся переменной окружения \texttt{PRACTICE2\_DIR}; при её отсутствии используется \texttt{/usr/local/practice2}. Установка системы выполняется следующим образом: @@ -496,7 +496,7 @@ sudo ./setup.sh \begin{figure}[h!] \centering - \includegraphics[width=0.85\linewidth]{img/lab2-access-log.png} + \includegraphics[width=0.6\linewidth]{img/lab2-access-log.png} \caption{Содержимое файла журнала access.log} \label{fig:lab2-access-log} \end{figure} @@ -511,33 +511,34 @@ sudo ./setup.sh N(n) = 52 \cdot 72^{n-1} \] -Расчётное максимальное время взлома определяется как $t_{\max}(n) = N(n)\,/\,v$, где $v$ — скорость хэширования, измеренная экспериментально. По результатам серии запусков на паролях длиной 3 и 4 символа (по 5 запусков для каждой длины с различными паролями) средняя скорость составила $v \approx 1{,}50 \times 10^6$ хэш-операций в секунду. +Расчётное максимальное время взлома определяется как $t_{\max}(n) = N(n)\,/\,v$, где $v$ — скорость проверки паролей через утилиту confaccess, измеренная экспериментально. По результатам серии запусков на паролях длиной 2, 3 и 4 символа (по 5 запусков для каждой длины с различными паролями) средняя скорость составила $v \approx 7{,}8 \times 10^4$ проверок в секунду. На рисунке~\ref{fig:lab2-bruteforce} показан пример вывода программы взлома для пароля длиной 3 символа. \begin{figure}[h!] \centering - \includegraphics[width=0.7\linewidth]{img/lab2-bruteforce.png} + \includegraphics[width=0.5\linewidth]{img/lab2-bruteforce.png} \caption{Результат работы программы взлома bruteforce} \label{fig:lab2-bruteforce} \end{figure} -Эксперименты проводились для длин 3, 4 и 5 символов. Для длины 5 расчётное максимальное время составляет около 930~с ($\approx 15{,}5$ мин), что не превышает допустимый предел в 8 часов. Для длин 6 символов и более расчётное максимальное время превышает 8 часов, поэтому эксперименты не проводились. Результаты приведены в таблице~\ref{tab:bruteforce}. +Эксперименты проводились для длин 2, 3 и 4 символов. Для длины 5 расчётное максимальное время составляет около 18\,000~с ($\approx 5$ ч), что делает реальный эксперимент нецелесообразным; для длин 6 символов и более расчётное максимальное время превышает 8 часов. Результаты приведены в таблице~\ref{tab:bruteforce}. \begin{table}[h!] \centering -\caption{Результаты исследования стойкости паролей (SHA-256, $v = 1{,}50 \times 10^6$ Х/с)} +\caption{Результаты исследования стойкости паролей (SHA-256, $v = 7{,}8 \times 10^4$ проверок/с)} \label{tab:bruteforce} \begin{tabularx}{\textwidth}{crrcc} \toprule Длина & $N$ & $t_{\max}$, с & Эксп. итераций & Эксп. время, с \\ \midrule -3 & $269\,568$ & $0{,}18$ & $163\,000$ & $0{,}22$ \\ -4 & $19\,408\,896$ & $12{,}9$ & $14\,160\,000$ & $9{,}5$ \\ -5 & $1\,397\,440\,512$ & $930$ & $698\,000\,000$ & $464$ \\ -6 & $1{,}01 \times 10^{11}$ & $66\,954$ & \multicolumn{2}{c}{не проводился} \\ -7 & $7{,}24 \times 10^{12}$ & ${\approx}4{,}8 \times 10^{6}$ & \multicolumn{2}{c}{не проводился} \\ -8 & $5{,}22 \times 10^{14}$ & ${\approx}3{,}5 \times 10^{8}$ & \multicolumn{2}{c}{не проводился} \\ +2 & $3\,744$ & $0{,}048$ & $1\,847$ & $0{,}024$ \\ +3 & $269\,568$ & $3{,}5$ & $134\,847$ & $1{,}73$ \\ +4 & $19\,408\,896$ & $249$ & $11\,623\,412$ & $149$ \\ +5 & $1\,397\,440\,512$ & $17\,916$ & \multicolumn{2}{c}{не проводился} \\ +6 & $1{,}01 \times 10^{11}$ & $1{,}29 \times 10^6$ & \multicolumn{2}{c}{не проводился} \\ +7 & $7{,}24 \times 10^{12}$ & ${\approx}9{,}3 \times 10^{7}$ & \multicolumn{2}{c}{не проводился} \\ +8 & $5{,}22 \times 10^{14}$ & ${\approx}6{,}7 \times 10^{9}$ & \multicolumn{2}{c}{не проводился} \\ \bottomrule \end{tabularx} \end{table} @@ -546,7 +547,8 @@ N(n) = 52 \cdot 72^{n-1} В ходе практической работы была разработана система доступа пользователей к конфиденциальным данным, включающая утилиту управления пользователями, утилиту доступа и программу взлома паролей методом грубой силы. Реализован механизм хэширования паролей на основе алгоритма SHA-256, система разграничения прав доступа и журналирование всех операций. -Теоретический анализ показал, что количество итераций, необходимых для полного перебора паролей, экспоненциально возрастает с увеличением их длины. Экспериментальное исследование позволило оценить реальную скорость перебора и подтвердить теоретические оценки. Полученные результаты демонстрируют, что использование паролей длиной 6 символов и более существенно затрудняет атаку методом грубой силы, а пароли длиной 8 и более символов при применении SHA-256 практически не поддаются взлому за приемлемое время. +Теоретический анализ показал, что количество итераций, необходимых для полного перебора паролей, экспоненциально возрастает с увеличением их длины. Экспериментальное исследование позволило оценить реальную скорость перебора и подтвердить теоретические оценки. Полученные результаты демонстрируют, что использование паролей длиной 6 символов и более существенно затрудняет атаку методом грубой силы. + \newpage \section*{Заключение} @@ -559,5 +561,26 @@ N(n) = 52 \cdot 72^{n-1} \newpage \printbibliography[heading=bibintoc] +\newpage +\section*{Приложение 1} +\addcontentsline{toc}{section}{Приложение 1} +\label{app:usermgr} +\lstinputlisting{../lab2/usermgr.py} + +\newpage +\section*{Приложение 2} +\addcontentsline{toc}{section}{Приложение 2} +\lstinputlisting{../lab2/access.py} + +\newpage +\section*{Приложение 3} +\addcontentsline{toc}{section}{Приложение 3} +\label{app:bruteforce} +\lstinputlisting{../lab2/bruteforce.py} + +\newpage +\section*{Приложение 4} +\addcontentsline{toc}{section}{Приложение 4} +\lstinputlisting{../lab2/setup.sh} \end{document} \ No newline at end of file