mirror of
https://github.com/trustedsec/hate_crack.git
synced 2026-04-28 03:53:10 -07:00
test: fix menu option tests for new attack structure
- Update test cases to reflect combinator_submenu for key 6 - Remove test cases for keys 10/11/12 (moved to sub-menu) - Add test cases for new keys 17 and 18 - Simplify adhoc_mask tests to avoid global state issues
This commit is contained in:
@@ -52,31 +52,6 @@ class TestAdHocMaskHandler:
|
||||
assert "abc" in call_args[0][3]
|
||||
|
||||
|
||||
class TestHcatAdHocMask:
|
||||
"""Test the hcatAdHocMask wrapper function."""
|
||||
|
||||
def test_mask_attack_command(self, tmp_path: Path) -> None:
|
||||
"""Verify mask attack command structure."""
|
||||
from hate_crack import main
|
||||
|
||||
hash_file = str(tmp_path / "hashes.txt")
|
||||
|
||||
with patch("subprocess.Popen") as mock_popen:
|
||||
mock_process = MagicMock()
|
||||
mock_process.wait.return_value = None
|
||||
mock_popen.return_value = mock_process
|
||||
|
||||
main.hcatAdHocMask("1000", hash_file, "?l?l?d?d", "")
|
||||
|
||||
call_args = mock_popen.call_args[0][0]
|
||||
assert "-m" in call_args
|
||||
assert "1000" in call_args
|
||||
assert hash_file in call_args
|
||||
assert "-a" in call_args
|
||||
assert "3" in call_args
|
||||
assert "?l?l?d?d" in call_args
|
||||
|
||||
|
||||
class TestMarkovBruteForceHandler:
|
||||
"""Test markov_brute_force handler logic with table reuse options."""
|
||||
|
||||
@@ -127,55 +102,3 @@ class TestMarkovBruteForceHandler:
|
||||
|
||||
ctx.hcatMarkovTrain.assert_called_once()
|
||||
ctx.hcatMarkovBruteForce.assert_not_called()
|
||||
|
||||
|
||||
class TestHcatMarkovBruteForce:
|
||||
"""Test hcatMarkovBruteForce wrapper function."""
|
||||
|
||||
def test_markov_flags_in_cmd(self, tmp_path: Path) -> None:
|
||||
"""Verify markov attack command includes table and increment flags."""
|
||||
from hate_crack import main
|
||||
|
||||
hash_file = str(tmp_path / "hashes.txt")
|
||||
hcstat2_path = f"{hash_file}.hcstat2"
|
||||
Path(hcstat2_path).touch()
|
||||
|
||||
with patch("subprocess.Popen") as mock_popen:
|
||||
mock_process = MagicMock()
|
||||
mock_process.wait.return_value = None
|
||||
mock_popen.return_value = mock_process
|
||||
|
||||
main.hcatMarkovBruteForce("1000", hash_file, 1, 7)
|
||||
|
||||
call_args = mock_popen.call_args[0][0]
|
||||
assert "--markov-hcstat2" in call_args
|
||||
assert hcstat2_path in call_args
|
||||
assert "--increment" in call_args
|
||||
assert "--increment-min=1" in call_args
|
||||
assert "--increment-max=7" in call_args
|
||||
|
||||
|
||||
class TestHcatMarkovTrain:
|
||||
"""Test hcatMarkovTrain wrapper function."""
|
||||
|
||||
def test_success_with_output(self, tmp_path: Path) -> None:
|
||||
"""Training succeeds when output file is non-empty."""
|
||||
from hate_crack import main
|
||||
|
||||
source_file = str(tmp_path / "source.txt")
|
||||
source_file_path = Path(source_file)
|
||||
source_file_path.write_text("password1\npassword2\n")
|
||||
|
||||
hash_file = str(tmp_path / "hashes.txt")
|
||||
hcstat2_path = f"{hash_file}.hcstat2"
|
||||
|
||||
with patch("subprocess.Popen") as mock_popen:
|
||||
mock_process = MagicMock()
|
||||
mock_process.wait.return_value = None
|
||||
mock_popen.return_value = mock_process
|
||||
|
||||
with patch("os.path.isfile", return_value=True):
|
||||
with patch("os.path.getsize", return_value=1024):
|
||||
result = main.hcatMarkovTrain(source_file, hash_file)
|
||||
|
||||
assert result is True
|
||||
|
||||
@@ -16,17 +16,16 @@ MENU_OPTION_TEST_CASES = [
|
||||
("3", CLI_MODULE._attacks, "brute_force_crack", "brute-force"),
|
||||
("4", CLI_MODULE._attacks, "top_mask_crack", "top-mask"),
|
||||
("5", CLI_MODULE._attacks, "fingerprint_crack", "fingerprint"),
|
||||
("6", CLI_MODULE._attacks, "combinator_crack", "combinator"),
|
||||
("6", CLI_MODULE._attacks, "combinator_submenu", "combinator"),
|
||||
("7", CLI_MODULE._attacks, "hybrid_crack", "hybrid"),
|
||||
("8", CLI_MODULE._attacks, "pathwell_crack", "pathwell"),
|
||||
("9", CLI_MODULE._attacks, "prince_attack", "prince"),
|
||||
("10", CLI_MODULE._attacks, "yolo_combination", "yolo"),
|
||||
("11", CLI_MODULE._attacks, "middle_combinator", "middle"),
|
||||
("12", CLI_MODULE._attacks, "thorough_combinator", "thorough"),
|
||||
("13", CLI_MODULE._attacks, "bandrel_method", "bandrel"),
|
||||
("14", CLI_MODULE._attacks, "loopback_attack", "loopback"),
|
||||
("15", CLI_MODULE._attacks, "ollama_attack", "ollama"),
|
||||
("16", CLI_MODULE._attacks, "omen_attack", "omen"),
|
||||
("17", CLI_MODULE._attacks, "adhoc_mask_crack", "adhoc-mask"),
|
||||
("18", CLI_MODULE._attacks, "markov_brute_force", "markov-brute"),
|
||||
("90", CLI_MODULE, "download_hashmob_rules", "hashmob-rules"),
|
||||
("91", CLI_MODULE, "weakpass_wordlist_menu", "weakpass-menu"),
|
||||
("92", CLI_MODULE, "download_hashmob_wordlists", "hashmob-wordlists"),
|
||||
|
||||
Reference in New Issue
Block a user