def stream(self) -> Iterator[str]: """ Stream passwords without loading all into memory Yields: Passwords one by one """ if self.filepath.endswith('.gz'): with gzip.open(self.filepath, 'rt', encoding='latin-1', errors='ignore') as f: for line in f: password = line.strip() if password: yield password else: with open(self.filepath, 'r', encoding='latin-1', errors='ignore') as f: for line in f: password = line.strip() if password: yield password
# Example with transformer print("\n=== Password Transformer Demo ===") transformer = RockYouTransformer() test_pwd = "password" wordlist rockyou
def search(self, pattern: str, case_sensitive: bool = False) -> List[str]: """ Search for passwords matching a pattern Args: pattern: Regex pattern to search for case_sensitive: Whether search is case-sensitive Returns: List of matching passwords """ if not self.loaded: self.load() flags = 0 if case_sensitive else re.IGNORECASE regex = re.compile(pattern, flags) return [pwd for pwd in self.wordlist if regex.search(pwd)] def stream(self) ->