SYMBOL INDEX (811 symbols across 61 files) FILE: bin/archiver.py class Archiver (line 29) | class Archiver(AbstractManager): method __init__ (line 31) | def __init__(self, loglevel: int | None=None) -> None: method _to_run_forever (line 61) | def _to_run_forever(self) -> None: method _update_index (line 87) | def _update_index(self, root_dir: Path, *, s3fs_parent_dir: str | None... method _update_all_capture_indexes (line 271) | def _update_all_capture_indexes(self, *, recent_only: bool=False) -> N... method __archive_single_capture (line 309) | def __archive_single_capture(self, capture_path: Path) -> Path: method _archive (line 348) | def _archive(self) -> bool: method __load_index (line 433) | def __load_index(self, index_path: Path, ignore_sub: bool=False) -> di... method _load_indexes (line 455) | def _load_indexes(self) -> None: function main (line 487) | def main() -> None: FILE: bin/async_capture.py class AsyncCapture (line 27) | class AsyncCapture(AbstractManager): method __init__ (line 29) | def __init__(self, loglevel: int | None=None) -> None: method _trigger_captures (line 42) | async def _trigger_captures(self) -> None: method uuids_ready (line 61) | def uuids_ready(self) -> list[str]: method process_capture_queue (line 68) | def process_capture_queue(self) -> None: method _to_run_forever_async (line 146) | async def _to_run_forever_async(self) -> None: method _wait_to_finish_async (line 157) | async def _wait_to_finish_async(self) -> None: function main (line 169) | def main() -> None: FILE: bin/background_build_captures.py class BackgroundBuildCaptures (line 26) | class BackgroundBuildCaptures(AbstractManager): method __init__ (line 28) | def __init__(self, loglevel: int | None=None): method __auto_report (line 40) | def __auto_report(self, path: Path) -> None: method __auto_monitor (line 59) | def __auto_monitor(self, path: Path) -> None: method _auto_trigger (line 94) | def _auto_trigger(self, path: Path) -> None: method _to_run_forever (line 102) | def _to_run_forever(self) -> None: method _wait_to_finish (line 107) | def _wait_to_finish(self) -> None: method _build_missing_pickles (line 111) | def _build_missing_pickles(self) -> bool: function main (line 226) | def main() -> None: FILE: bin/background_indexer.py class BackgroundIndexer (line 19) | class BackgroundIndexer(AbstractManager): method __init__ (line 21) | def __init__(self, full: bool=False, loglevel: int | None=None): method _to_run_forever (line 33) | def _to_run_forever(self) -> None: method _check_indexes (line 36) | def _check_indexes(self) -> None: function main (line 69) | def main() -> None: function main_full_indexer (line 74) | def main_full_indexer() -> None: FILE: bin/background_processing.py class Processing (line 24) | class Processing(AbstractManager): method __init__ (line 26) | def __init__(self, loglevel: int | None=None): method _to_run_forever (line 43) | def _to_run_forever(self) -> None: method _update_recent_captures (line 54) | def _update_recent_captures(self) -> None: method _build_ua_file (line 87) | def _build_ua_file(self) -> None: method _retry_failed_enqueue (line 129) | def _retry_failed_enqueue(self) -> None: method _process_built_captures (line 192) | def _process_built_captures(self) -> None: function main (line 308) | def main() -> None: FILE: bin/mastobot.py class LookylooMastobotListener (line 22) | class LookylooMastobotListener(StreamListener): method __init__ (line 24) | def __init__(self, mastobot: Mastobot) -> None: method handle_heartbeat (line 31) | def handle_heartbeat(self) -> None: method on_update (line 99) | def on_update(self, status: Status) -> None: method _find_url (line 102) | def _find_url(self, content: str) -> list[str] | list[tuple[str, str]]: method on_notification (line 125) | def on_notification(self, notification: Notification) -> None: class Mastobot (line 182) | class Mastobot(AbstractManager): method __init__ (line 184) | def __init__(self, loglevel: int | None=None) -> None: method _to_run_forever (line 231) | def _to_run_forever(self) -> None: method _wait_to_finish (line 245) | def _wait_to_finish(self) -> None: function main (line 251) | def main() -> None: FILE: bin/run_backend.py function check_running (line 18) | def check_running(name: str) -> bool: function launch_cache (line 29) | def launch_cache(storage_directory: Path | None=None) -> None: function shutdown_cache (line 44) | def shutdown_cache(storage_directory: Path | None=None) -> None: function launch_indexing (line 52) | def launch_indexing(storage_directory: Path | None=None) -> None: function shutdown_indexing (line 70) | def shutdown_indexing(storage_directory: Path | None=None) -> None: function launch_full_index (line 81) | def launch_full_index(storage_directory: Path | None=None) -> None: function shutdown_full_index (line 96) | def shutdown_full_index(storage_directory: Path | None=None) -> None: function launch_all (line 104) | def launch_all() -> None: function check_all (line 112) | def check_all(stop: bool=False) -> None: function stop_all (line 136) | def stop_all() -> None: function main (line 143) | def main() -> None: FILE: bin/scripts_controller.py function _get_cmdline (line 17) | def _get_cmdline(pid: str) -> list[str]: function main (line 22) | def main() -> None: FILE: bin/shutdown.py function main (line 8) | def main() -> None: FILE: bin/start.py function main (line 8) | def main() -> None: FILE: bin/start_website.py class Website (line 15) | class Website(AbstractManager): method __init__ (line 17) | def __init__(self, loglevel: int | None=None) -> None: method _launch_website (line 23) | def _launch_website(self) -> Popen: # type: ignore[type-arg] function main (line 38) | def main() -> None: FILE: bin/stop.py function main (line 11) | def main() -> None: FILE: bin/update.py function compute_hash_self (line 24) | def compute_hash_self() -> bytes: function keep_going (line 31) | def keep_going(ignore: bool=False) -> None: function run_command (line 40) | def run_command(command: str, expect_fail: bool=False, capture_output: b... function check_poetry_version (line 51) | def check_poetry_version() -> None: function main (line 68) | def main() -> None: FILE: lookyloo/capturecache.py class LookylooCacheLogAdapter (line 45) | class LookylooCacheLogAdapter(LoggerAdapter): # type: ignore[type-arg] method process (line 49) | def process(self, msg: str, kwargs: MutableMapping[str, Any]) -> tuple... function safe_make_datetime (line 55) | def safe_make_datetime(dt: str) -> datetime: class CaptureCache (line 63) | class CaptureCache(): method __init__ (line 68) | def __init__(self, cache_entry: dict[str, Any]): method search (line 110) | def search(self, query: str) -> bool: method tree_ready (line 122) | def tree_ready(self) -> bool: method tree (line 126) | def tree(self) -> CrawledTree: method categories (line 134) | def categories(self) -> set[str]: method categories (line 142) | def categories(self, categories: set[str]) -> None: method capture_settings (line 148) | def capture_settings(self) -> LookylooCaptureSettings | None: method monitor_uuid (line 159) | def monitor_uuid(self) -> str | None: method monitor_uuid (line 170) | def monitor_uuid(self, uuid: str) -> None: function serialize_sets (line 178) | def serialize_sets(obj: Any) -> Any: class CapturesIndex (line 185) | class CapturesIndex(Mapping): # type: ignore[type-arg] method __init__ (line 187) | def __init__(self, redis: Redis, contextualizer: Context | None=None, ... method cached_captures (line 229) | def cached_captures(self) -> set[str]: method __getitem__ (line 232) | def __getitem__(self, uuid: str) -> CaptureCache: method __iter__ (line 252) | def __iter__(self) -> Iterator[dict[str, CaptureCache]]: method __len__ (line 255) | def __len__(self) -> int: method reload_cache (line 258) | def reload_cache(self, uuid: str) -> None: method remove_pickle (line 266) | def remove_pickle(self, uuid: str) -> None: method rebuild_all (line 272) | def rebuild_all(self) -> None: method lru_cache_status (line 278) | def lru_cache_status(self) -> CacheInfo: method lru_cache_clear (line 281) | def lru_cache_clear(self) -> None: method get_capture_cache_quick (line 284) | def get_capture_cache_quick(self, uuid: str) -> CaptureCache | None: method _get_capture_dir (line 303) | def _get_capture_dir(self, uuid: str) -> str: method _prepare_hostnode_tree_for_icons (line 329) | def _prepare_hostnode_tree_for_icons(self, tree: CrawledTree) -> None: method _create_pickle (line 359) | async def _create_pickle(self, capture_dir: Path, logger: LookylooCach... method _raise_timeout (line 434) | def _raise_timeout(_, __) -> None: # type: ignore[no-untyped-def] method _timeout_context (line 438) | def _timeout_context(self) -> Iterator[None]: method _set_capture_cache (line 452) | async def _set_capture_cache(self, capture_dir_str: str) -> CaptureCache: method __resolve_dns (line 579) | async def __resolve_dns(self, ct: CrawledTree, logger: LookylooCacheLo... FILE: lookyloo/comparator.py class Comparator (line 22) | class Comparator(): method __init__ (line 24) | def __init__(self) -> None: method redis (line 36) | def redis(self) -> Redis: # type: ignore[type-arg] method get_comparables_node (line 39) | def get_comparables_node(self, node: URLNode) -> dict[str, str]: method _compare_nodes (line 45) | def _compare_nodes(self, left: dict[str, str], right: dict[str, str], ... method get_comparables_capture (line 75) | def get_comparables_capture(self, capture_uuid: str) -> dict[str, Any]: method compare_captures (line 116) | def compare_captures(self, capture_left: str, capture_right: str, /, *... FILE: lookyloo/context.py class Context (line 19) | class Context(): method __init__ (line 21) | def __init__(self) -> None: method clear_context (line 28) | def clear_context(self) -> None: method _cache_known_content (line 31) | def _cache_known_content(self) -> None: method find_known_content (line 60) | def find_known_content(self, har2tree_container: CrawledTree | HostNod... method store_known_legitimate_tree (line 118) | def store_known_legitimate_tree(self, tree: CrawledTree) -> None: method mark_as_legitimate (line 159) | def mark_as_legitimate(self, tree: CrawledTree, hostnode_uuid: str | N... method contextualize_tree (line 180) | def contextualize_tree(self, tree: CrawledTree) -> CrawledTree: method legitimate_body (line 214) | def legitimate_body(self, body_hash: str, legitimate_hostname: str) ->... method store_known_malicious_ressource (line 217) | def store_known_malicious_ressource(self, ressource_hash: str, details... method add_malicious (line 239) | def add_malicious(self, ressource_hash: str, details: dict[str, str]) ... method store_known_legitimate_ressource (line 249) | def store_known_legitimate_ressource(self, ressource_hash: str, detail... method add_legitimate (line 270) | def add_legitimate(self, ressource_hash: str, details: dict[str, str])... method is_legitimate (line 280) | def is_legitimate(self, urlnode: URLNode, known_hashes: dict[str, Any]... method is_malicious (line 308) | def is_malicious(self, urlnode: URLNode, known_hashes: dict[str, Any])... FILE: lookyloo/default/abstractmanager.py class AbstractManager (line 21) | class AbstractManager(ABC): method __init__ (line 25) | def __init__(self, loglevel: int | None=None): method is_running (line 36) | def is_running() -> list[tuple[str, float, set[str]]]: method clear_running (line 59) | def clear_running() -> None: method force_shutdown (line 67) | def force_shutdown() -> None: method set_running (line 74) | def set_running(self, number: int | None=None) -> None: method unset_running (line 84) | def unset_running(self) -> None: method long_sleep (line 89) | def long_sleep(self, sleep_in_sec: int, shutdown_check: int=10) -> bool: method long_sleep_async (line 98) | async def long_sleep_async(self, sleep_in_sec: int, shutdown_check: in... method shutdown_requested (line 107) | def shutdown_requested(self) -> bool: method _to_run_forever (line 116) | def _to_run_forever(self) -> None: method _kill_process (line 119) | def _kill_process(self) -> None: method run (line 136) | def run(self, sleep_in_sec: int) -> None: method _wait_to_finish (line 167) | def _wait_to_finish(self) -> None: method stop (line 170) | async def stop(self) -> None: method _to_run_forever_async (line 173) | async def _to_run_forever_async(self) -> None: method _wait_to_finish_async (line 176) | async def _wait_to_finish_async(self) -> None: method stop_async (line 179) | async def stop_async(self) -> None: method run_async (line 185) | async def run_async(self, sleep_in_sec: int) -> None: FILE: lookyloo/default/exceptions.py class LookylooException (line 4) | class LookylooException(Exception): class MissingEnv (line 8) | class MissingEnv(LookylooException): class CreateDirectoryException (line 12) | class CreateDirectoryException(LookylooException): class ConfigError (line 16) | class ConfigError(LookylooException): FILE: lookyloo/default/helpers.py function get_homedir (line 20) | def get_homedir() -> Path: function load_configs (line 40) | def load_configs(path_to_config_files: str | Path | None=None) -> None: function get_config (line 67) | def get_config(config_type: str, entry: str | None=None, quiet: bool=Fal... function safe_create_dir (line 92) | def safe_create_dir(to_create: Path) -> None: function get_socket_path (line 98) | def get_socket_path(name: str) -> str: function try_make_file (line 112) | def try_make_file(filename: Path) -> bool: FILE: lookyloo/exceptions.py class NoValidHarFile (line 6) | class NoValidHarFile(LookylooException): class MissingUUID (line 10) | class MissingUUID(LookylooException): class DuplicateUUID (line 14) | class DuplicateUUID(LookylooException): class MissingCaptureDirectory (line 18) | class MissingCaptureDirectory(LookylooException): class TreeNeedsRebuild (line 22) | class TreeNeedsRebuild(LookylooException): class ModuleError (line 26) | class ModuleError(LookylooException): class LacusUnreachable (line 30) | class LacusUnreachable(LookylooException): FILE: lookyloo/helpers.py function global_proxy_for_requests (line 45) | def global_proxy_for_requests() -> dict[str, str]: function prepare_global_session (line 61) | def prepare_global_session() -> requests.Session: function serialize_to_json (line 71) | def serialize_to_json(obj: set[Any]) -> list[Any]: function get_resources_hashes (line 76) | def get_resources_hashes(har2tree_container: CrawledTree | HostNode | UR... function get_taxonomies (line 93) | def get_taxonomies() -> Taxonomies: function get_captures_dir (line 98) | def get_captures_dir() -> Path: function get_email_template (line 105) | def get_email_template() -> str: function get_tt_template (line 111) | def get_tt_template() -> str: function get_error_screenshot (line 117) | def get_error_screenshot() -> Image.Image: function load_takedown_filters (line 123) | def load_takedown_filters() -> tuple[re.Pattern[str], re.Pattern[str], d... function make_dirs_list (line 146) | def make_dirs_list(root_dir: Path) -> list[Path]: function make_ts_from_dirname (line 162) | def make_ts_from_dirname(dirname: str) -> datetime: function get_sorted_captures_from_disk (line 169) | def get_sorted_captures_from_disk(captures_dir: Path, /, *, class UserAgents (line 199) | class UserAgents: method __init__ (line 201) | def __init__(self) -> None: method _load_newest_ua_file (line 222) | def _load_newest_ua_file(self, path: Path) -> None: method _load_playwright_devices (line 229) | def _load_playwright_devices(self) -> None: method user_agents (line 251) | def user_agents(self) -> dict[str, dict[str, list[str]]]: method default (line 268) | def default(self) -> dict[str, str]: function load_known_content (line 302) | def load_known_content(directory: str='known_content') -> dict[str, dict... function uniq_domains (line 310) | def uniq_domains(uniq_urls: list[str]) -> set[str]: function get_useragent_for_requests (line 320) | def get_useragent_for_requests() -> str: function get_cache_directory (line 324) | def get_cache_directory(root: Path, identifier: str, namespace: str | Pa... function is_locked (line 333) | def is_locked(locked_dir_path: Path, /) -> bool: class ParsedUserAgent (line 389) | class ParsedUserAgent(UserAgent): method _details (line 394) | def _details(self) -> ua_parser.DefaultedResult: method platform (line 398) | def platform(self) -> str | None: # type: ignore[override] method platform_version (line 402) | def platform_version(self) -> str | None: method browser (line 406) | def browser(self) -> str | None: # type: ignore[override] method version (line 410) | def version(self) -> str | None: # type: ignore[override] method _aggregate_version (line 413) | def _aggregate_version(self, details: ua_parser.OS | ua_parser.UserAge... method __str__ (line 420) | def __str__(self) -> str: function load_user_config (line 425) | def load_user_config(username: str) -> dict[str, Any] | None: function get_indexing (line 437) | def get_indexing(full: bool=False) -> Indexing: function get_pickle_path (line 444) | def get_pickle_path(capture_dir: Path | str) -> Path | None: function remove_pickle_tree (line 458) | def remove_pickle_tree(capture_dir: Path) -> None: function load_pickle_tree (line 465) | def load_pickle_tree(capture_dir: Path, last_mod_time: int, logger: Logg... function mimetype_to_generic (line 505) | def mimetype_to_generic(mimetype: str | None) -> str: FILE: lookyloo/indexing.py class Indexing (line 29) | class Indexing(): method __init__ (line 31) | def __init__(self, full_index: bool=False) -> None: method clear_indexes (line 48) | def clear_indexes(self) -> None: method redis_bytes (line 52) | def redis_bytes(self) -> Redis[bytes]: method redis (line 56) | def redis(self) -> Redis[str]: method can_index (line 59) | def can_index(self, capture_uuid: str | None=None) -> bool: method indexing_done (line 65) | def indexing_done(self, capture_uuid: str | None=None) -> None: method force_reindex (line 71) | def force_reindex(self, capture_uuid: str) -> None: method capture_indexed (line 105) | def capture_indexed(self, capture_uuid: str) -> Indexed: method index_capture (line 124) | def index_capture(self, uuid_to_index: str, directory: Path, force: bo... method __limit_failsafe (line 215) | def __limit_failsafe(self, oldest_capture: datetime | None=None, limit... method _reindex_cookies (line 223) | def _reindex_cookies(self, cookie_name: str) -> None: method cookies_names (line 239) | def cookies_names(self) -> set[str]: method index_cookies_capture (line 242) | def index_cookies_capture(self, crawled_tree: CrawledTree) -> None: method get_captures_cookies_name (line 274) | def get_captures_cookies_name(self, cookie_name: str, most_recent_capt... method scan_captures_cookies_name (line 292) | def scan_captures_cookies_name(self, cookie_name: str) -> Iterator[tup... method get_captures_cookie_name_count (line 295) | def get_captures_cookie_name_count(self, cookie_name: str) -> int: method get_capture_cookie_name_nodes (line 298) | def get_capture_cookie_name_nodes(self, capture_uuid: str, cookie_name... method _reindex_ressources (line 305) | def _reindex_ressources(self, h: str) -> None: method ressources (line 322) | def ressources(self) -> set[str]: method index_body_hashes_capture (line 325) | def index_body_hashes_capture(self, crawled_tree: CrawledTree) -> None: method get_captures_body_hash_count (line 357) | def get_captures_body_hash_count(self, h: str) -> int: method get_hash_uuids (line 366) | def get_hash_uuids(self, body_hash: str) -> tuple[str, str] | None: method get_captures_body_hash (line 376) | def get_captures_body_hash(self, body_hash: str, most_recent_capture: ... method scan_captures_body_hash (line 394) | def scan_captures_body_hash(self, body_hash: str) -> Iterator[tuple[st... method get_capture_body_hash_nodes (line 397) | def get_capture_body_hash_nodes(self, capture_uuid: str, body_hash: st... method get_body_hash_urlnodes (line 402) | def get_body_hash_urlnodes(self, body_hash: str) -> dict[str, list[str]]: method _reindex_hhhashes (line 409) | def _reindex_hhhashes(self, hhh: str) -> None: method http_headers_hashes (line 420) | def http_headers_hashes(self) -> set[str]: method index_hhhashes_capture (line 423) | def index_hhhashes_capture(self, crawled_tree: CrawledTree) -> None: method get_captures_hhhash (line 454) | def get_captures_hhhash(self, hhh: str, most_recent_capture: datetime ... method scan_captures_hhhash (line 472) | def scan_captures_hhhash(self, hhh: str) -> Iterator[tuple[str, float]]: method get_captures_hhhash_count (line 475) | def get_captures_hhhash_count(self, hhh: str) -> int: method get_capture_hhhash_nodes (line 478) | def get_capture_hhhash_nodes(self, capture_uuid: str, hhh: str) -> set... method get_node_for_headers (line 483) | def get_node_for_headers(self, hhh: str) -> tuple[str, str] | None: method ipv4 (line 497) | def ipv4(self) -> set[str]: method ipv6 (line 501) | def ipv6(self) -> set[str]: method index_ips_capture (line 504) | def index_ips_capture(self, crawled_tree: CrawledTree) -> None: method get_captures_ip (line 562) | def get_captures_ip(self, ip: str, most_recent_capture: datetime | Non... method scan_captures_ip (line 575) | def scan_captures_ip(self, ip: str) -> Iterator[tuple[str, float]]: method get_captures_ip_count (line 578) | def get_captures_ip_count(self, ip: str) -> int: method get_capture_ip_counter (line 581) | def get_capture_ip_counter(self, capture_uuid: str, ip: str) -> int: method get_capture_ip_nodes (line 584) | def get_capture_ip_nodes(self, capture_uuid: str, ip: str) -> set[str]: method _reindex_urls_domains (line 591) | def _reindex_urls_domains(self, hostname: str, md5_url: str) -> None: method urls (line 607) | def urls(self) -> set[str]: method hostnames (line 611) | def hostnames(self) -> set[str]: method index_url_capture (line 614) | def index_url_capture(self, crawled_tree: CrawledTree) -> None: method get_captures_url (line 655) | def get_captures_url(self, url: str, most_recent_capture: datetime | N... method scan_captures_url (line 674) | def scan_captures_url(self, url: str) -> Iterator[tuple[str, float]]: method get_captures_url_count (line 678) | def get_captures_url_count(self, url: str) -> int: method get_captures_hostname (line 687) | def get_captures_hostname(self, hostname: str, most_recent_capture: da... method scan_captures_hostname (line 705) | def scan_captures_hostname(self, hostname: str) -> Iterator[tuple[str,... method get_captures_hostname_count (line 708) | def get_captures_hostname_count(self, hostname: str) -> int: method get_capture_url_counter (line 716) | def get_capture_url_counter(self, capture_uuid: str, url: str) -> int: method get_capture_hostname_counter (line 722) | def get_capture_hostname_counter(self, capture_uuid: str, hostname: st... method get_capture_url_nodes (line 727) | def get_capture_url_nodes(self, capture_uuid: str, url: str) -> set[str]: method get_capture_hostname_nodes (line 733) | def get_capture_hostname_nodes(self, capture_uuid: str, hostname: str)... method tlds (line 741) | def tlds(self) -> set[str]: method index_tld_capture (line 744) | def index_tld_capture(self, crawled_tree: CrawledTree) -> None: method get_captures_tld (line 794) | def get_captures_tld(self, tld: str, most_recent_capture: datetime | N... method scan_captures_tld (line 807) | def scan_captures_tld(self, tld: str) -> Iterator[tuple[str, float]]: method get_captures_tld_count (line 810) | def get_captures_tld_count(self, tld: str) -> int: method get_capture_tld_counter (line 813) | def get_capture_tld_counter(self, capture_uuid: str, tld: str) -> int: method get_capture_tld_nodes (line 818) | def get_capture_tld_nodes(self, capture_uuid: str, tld: str) -> set[str]: method domains (line 826) | def domains(self) -> set[str]: method index_domain_capture (line 829) | def index_domain_capture(self, crawled_tree: CrawledTree) -> None: method get_captures_domain (line 866) | def get_captures_domain(self, domain: str, most_recent_capture: dateti... method scan_captures_domain (line 879) | def scan_captures_domain(self, domain: str) -> Iterator[tuple[str, flo... method get_captures_domain_count (line 882) | def get_captures_domain_count(self, domain: str) -> int: method get_capture_domain_counter (line 885) | def get_capture_domain_counter(self, capture_uuid: str, domain: str) -... method get_capture_domain_nodes (line 890) | def get_capture_domain_nodes(self, capture_uuid: str, domain: str) -> ... method _reindex_favicons (line 897) | def _reindex_favicons(self, favicon_sha512: str) -> None: method favicons (line 908) | def favicons(self) -> set[str]: method index_favicons_capture (line 911) | def index_favicons_capture(self, crawled_tree: CrawledTree, capture_di... method get_captures_favicon (line 936) | def get_captures_favicon(self, favicon_sha512: str, most_recent_captur... method scan_captures_favicon (line 949) | def scan_captures_favicon(self, favicon_sha512: str) -> Iterator[tuple... method get_captures_favicon_count (line 952) | def get_captures_favicon_count(self, favicon_sha512: str) -> int: method get_favicon (line 960) | def get_favicon(self, favicon_sha512: str) -> bytes | None: method _rename_certpl_hash_domhash (line 968) | def _rename_certpl_hash_domhash(self) -> None: method captures_hashes_types (line 992) | def captures_hashes_types(self) -> set[str]: method captures_hashes (line 996) | def captures_hashes(self, hash_type: str) -> set[str]: method index_capture_hashes_types (line 999) | def index_capture_hashes_types(self, crawled_tree: CrawledTree) -> None: method get_hashes_types_capture (line 1038) | def get_hashes_types_capture(self, capture_uuid: str) -> dict[str, str]: method get_captures_hash_type (line 1045) | def get_captures_hash_type(self, hash_type: str, h: str, most_recent_c... method scan_captures_hash_type (line 1059) | def scan_captures_hash_type(self, hash_type: str, h: str) -> Iterator[... method get_captures_hash_type_count (line 1062) | def get_captures_hash_type_count(self, hash_type: str, h: str) -> int: method _reindex_identifiers (line 1070) | def _reindex_identifiers(self, identifier_type: str, identifier: str) ... method identifiers_types (line 1079) | def identifiers_types(self) -> set[str]: method identifiers (line 1082) | def identifiers(self, identifier_type: str) -> set[str]: method index_identifiers_capture (line 1085) | def index_identifiers_capture(self, crawled_tree: CrawledTree) -> None: method get_identifiers_capture (line 1121) | def get_identifiers_capture(self, capture_uuid: str) -> dict[str, set[... method get_captures_identifier (line 1128) | def get_captures_identifier(self, identifier_type: str, identifier: str, method scan_captures_identifier (line 1149) | def scan_captures_identifier(self, identifier_type: str, identifier: s... method get_captures_identifier_count (line 1152) | def get_captures_identifier_count(self, identifier_type: str, identifi... method _reindex_categories (line 1157) | def _reindex_categories(self, category: str) -> None: method categories (line 1173) | def categories(self) -> set[str]: method index_categories_capture (line 1176) | def index_categories_capture(self, crawled_tree: CrawledTree, capture_... method get_captures_category (line 1216) | def get_captures_category(self, category: str, most_recent_capture: da... method get_capture_categories (line 1229) | def get_capture_categories(self, capture_uuid: str) -> set[str]: method get_captures_category_count (line 1232) | def get_captures_category_count(self, category: str) -> int: method capture_in_category (line 1235) | def capture_in_category(self, capture_uuid: str, category: str) -> bool: method reindex_categories_capture (line 1238) | def reindex_categories_capture(self, capture_uuid: str) -> None: FILE: lookyloo/lookyloo.py class Lookyloo (line 93) | class Lookyloo(): method __init__ (line 95) | def __init__(self, cache_max_size: int | None=None) -> None: method monitoring (line 169) | def monitoring(self) -> PyLookylooMonitoring | None: method redis (line 189) | def redis(self) -> Redis: # type: ignore[type-arg] method __enable_remote_lacus (line 192) | def __enable_remote_lacus(self, lacus_url: str) -> PyLacus: method lacus (line 211) | def lacus(self) -> PyLacus | LacusCore | dict[str, PyLacus]: method add_context (line 251) | def add_context(self, capture_uuid: str, /, urlnode_uuid: str, *, ress... method add_to_legitimate (line 259) | def add_to_legitimate(self, capture_uuid: str, /, hostnode_uuid: str |... method remove_pickle (line 265) | def remove_pickle(self, capture_uuid: str, /) -> None: method rebuild_cache (line 269) | def rebuild_cache(self) -> None: method rebuild_all (line 274) | def rebuild_all(self) -> None: method get_urlnode_from_tree (line 279) | def get_urlnode_from_tree(self, capture_uuid: str, /, node_uuid: str) ... method get_urlnodes_from_tree (line 284) | def get_urlnodes_from_tree(self, capture_uuid: str, /, node_uuids: Ite... method get_hostnode_from_tree (line 289) | def get_hostnode_from_tree(self, capture_uuid: str, /, node_uuid: str)... method get_hostnodes_from_tree (line 294) | def get_hostnodes_from_tree(self, capture_uuid: str, /, node_uuids: It... method get_statistics (line 299) | def get_statistics(self, capture_uuid: str, /) -> dict[str, Any]: method get_info (line 304) | def get_info(self, capture_uuid: str, /) -> tuple[bool, dict[str, Any]]: method get_meta (line 328) | def get_meta(self, capture_uuid: str, /) -> dict[str, str]: method get_capture_settings (line 359) | def get_capture_settings(self, capture_uuid: str, /) -> LookylooCaptur... method index_capture (line 376) | def index_capture(self, capture_uuid: str, /, *, force: bool=False) ->... method categorize_capture (line 391) | def categorize_capture(self, capture_uuid: str, /, categories: list[st... method uncategorize_capture (line 428) | def uncategorize_capture(self, capture_uuid: str, /, category: str) ->... method trigger_modules (line 447) | def trigger_modules(self, capture_uuid: str, /, force: bool, auto_trig... method get_modules_responses (line 467) | def get_modules_responses(self, capture_uuid: str, /) -> dict[str, Any]: method hide_capture (line 522) | def hide_capture(self, capture_uuid: str, /) -> None: method remove_capture (line 532) | def remove_capture(self, capture_uuid: str, /) -> None: method update_tree_cache_info (line 540) | def update_tree_cache_info(self, process_id: int, classname: str) -> N... method clear_tree_cache (line 543) | def clear_tree_cache(self) -> None: method get_recent_captures (line 546) | def get_recent_captures(self, /, public: bool = True, *, since: dateti... method sorted_capture_cache (line 567) | def sorted_capture_cache(self, capture_uuids: Iterable[str] | None=None, method capture_ready_to_store (line 608) | def capture_ready_to_store(self, capture_uuid: str, /) -> bool: method _get_lacus_capture_status (line 629) | def _get_lacus_capture_status(self, capture_uuid: str, /) -> CaptureSt... method get_capture_status (line 649) | def get_capture_status(self, capture_uuid: str, /) -> CaptureStatusCor... method capture_cache (line 667) | def capture_cache(self, capture_uuid: str, /, *, force_update: bool = ... method uuid_exists (line 709) | def uuid_exists(self, uuid: str) -> bool: method get_crawled_tree (line 718) | def get_crawled_tree(self, capture_uuid: str, /) -> CrawledTree: method _apply_user_config (line 727) | def _apply_user_config(self, query: LookylooCaptureSettings, user_conf... method _valid_category (line 746) | def _valid_category(self, category: str) -> bool: method enqueue_capture (line 753) | def enqueue_capture(self, query: LookylooCaptureSettings | dict[str, A... method takedown_details (line 865) | def takedown_details(self, hostnode: HostNode) -> dict[str, Any]: method takedown_filtered (line 927) | def takedown_filtered(self, hostnode: HostNode) -> set[str] | None: method contacts_filtered (line 954) | def contacts_filtered(self, capture_uuid: str, /) -> set[str]: method contacts (line 965) | def contacts(self, capture_uuid: str, /) -> list[dict[str, Any]]: method modules_filtered (line 974) | def modules_filtered(self, capture_uuid: str, /) -> str | None: method already_sent_mail (line 1025) | def already_sent_mail(self, capture_uuid: str, /, uuid_only: bool=True... method set_sent_mail_key (line 1043) | def set_sent_mail_key(self, capture_uuid: str, /, deduplicate_interval... method send_mail (line 1051) | def send_mail(self, capture_uuid: str, /, as_admin: bool, email: str |... method _load_tt_file (line 1165) | def _load_tt_file(self, capture_uuid: str, /) -> dict[str, bytes] | None: method get_trusted_timestamp (line 1173) | def get_trusted_timestamp(self, capture_uuid: str, /, name: str) -> by... method _prepare_tsr_data (line 1178) | def _prepare_tsr_data(self, capture_uuid: str, /, *, logger: LookylooC... method check_trusted_timestamps (line 1271) | def check_trusted_timestamps(self, capture_uuid: str, /) -> tuple[dict... method bundle_all_trusted_timestamps (line 1291) | def bundle_all_trusted_timestamps(self, capture_uuid: str, /) -> Bytes... method _get_raw (line 1341) | def _get_raw(self, capture_uuid: str, /, extension: str='*', all_files... method get_potential_favicons (line 1379) | def get_potential_favicons(self, capture_uuid: str, /, all_favicons: L... method get_potential_favicons (line 1383) | def get_potential_favicons(self, capture_uuid: str, /, all_favicons: L... method get_potential_favicons (line 1386) | def get_potential_favicons(self, capture_uuid: str, /, all_favicons: b... method get_html (line 1413) | def get_html(self, capture_uuid: str, /, all_html: bool=False) -> tupl... method get_html_as_md (line 1417) | def get_html_as_md(self, capture_uuid: str, /, all_html: bool=False) -... method get_har (line 1430) | def get_har(self, capture_uuid: str, /, all_har: bool=False) -> tuple[... method get_data (line 1434) | def get_data(self, capture_uuid: str, /, *, index_in_zip: int | None=N... method get_cookies (line 1464) | def get_cookies(self, capture_uuid: str, /, all_cookies: bool=False) -... method get_screenshot (line 1468) | def get_screenshot(self, capture_uuid: str, /) -> tuple[bool, BytesIO]: method get_storage_state (line 1472) | def get_storage_state(self, capture_uuid: str, /) -> tuple[bool, Bytes... method get_frames (line 1476) | def get_frames(self, capture_uuid: str, /) -> tuple[bool, BytesIO]: method get_last_url_in_address_bar (line 1480) | def get_last_url_in_address_bar(self, capture_uuid: str, /) -> str | N... method get_screenshot_thumbnail (line 1487) | def get_screenshot_thumbnail(self, capture_uuid: str, /, for_datauri: ... method get_capture (line 1528) | def get_capture(self, capture_uuid: str, /) -> tuple[bool, BytesIO]: method get_guessed_urls (line 1532) | def get_guessed_urls(self, capture_uuid: str, /) -> list[str]: method get_urls_rendered_page (line 1558) | def get_urls_rendered_page(self, capture_uuid: str, /) -> list[str]: method compute_mmh3_shodan (line 1568) | def compute_mmh3_shodan(self, favicon: bytes, /) -> str: method get_ressource (line 1572) | def get_ressource(self, tree_uuid: str, /, urlnode_uuid: str, h: str |... method __misp_add_vt_to_URLObject (line 1609) | def __misp_add_vt_to_URLObject(self, obj: MISPObject) -> MISPObject | ... method __misp_add_urlscan_to_event (line 1624) | def __misp_add_urlscan_to_event(self, capture_uuid: str) -> MISPAttrib... method misp_export (line 1634) | def misp_export(self, capture_uuid: str, /, with_parent: bool=False, *... method get_misp_occurrences (line 1814) | def get_misp_occurrences(self, capture_uuid: str, /, as_admin: bool, method get_hashes_with_context (line 1841) | def get_hashes_with_context(self, tree_uuid: str, /, algorithm: str, *... method merge_hashlookup_tree (line 1851) | def merge_hashlookup_tree(self, tree_uuid: str, /, as_admin: bool=Fals... method get_hashes (line 1877) | def get_hashes(self, tree_uuid: str, /, hostnode_uuid: str | None=None... method get_ips (line 1894) | def get_ips(self, tree_uuid: str, /, hostnode_uuid: str | None=None, u... method get_hostnames (line 1931) | def get_hostnames(self, tree_uuid: str, /, hostnode_uuid: str | None=N... method get_urls (line 1947) | def get_urls(self, tree_uuid: str, /, hostnode_uuid: str | None=None, ... method get_playwright_devices (line 1963) | def get_playwright_devices(self) -> dict[str, Any]: method get_stats (line 1967) | def get_stats(self, public: bool=True) -> dict[str, list[Any]]: method unpack_full_capture_archive (line 2041) | def unpack_full_capture_archive(self, archive: BytesIO, listing: bool)... method store_capture (line 2159) | def store_capture(self, uuid: str, is_public: bool, FILE: lookyloo/modules/abstractmodule.py class AbstractModule (line 17) | class AbstractModule(ABC): method __init__ (line 20) | def __init__(self, /, *, config_name: str | None=None, method admin_only (line 51) | def admin_only(self) -> bool: method autosubmit (line 55) | def autosubmit(self) -> bool: method allow_auto_trigger (line 59) | def allow_auto_trigger(self) -> bool: method available (line 63) | def available(self) -> bool: method module_init (line 67) | def module_init(self) -> bool: method capture_default_trigger (line 70) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, FILE: lookyloo/modules/ail.py class AIL (line 19) | class AIL(AbstractModule): method module_init (line 21) | def module_init(self) -> bool: method capture_default_trigger (line 41) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method _submit (line 50) | def _submit(self, cache: CaptureCache) -> dict[str, Any]: FILE: lookyloo/modules/assemblyline.py class AssemblyLine (line 19) | class AssemblyLine(AbstractModule): method module_init (line 21) | def module_init(self) -> bool: method capture_default_trigger (line 33) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method _submit (line 44) | def _submit(self, cache: CaptureCache) -> dict[str, Any]: method get_notification_queue (line 75) | def get_notification_queue(self) -> list[dict[str, Any]]: FILE: lookyloo/modules/auto_categorize.py class AutoCategorize (line 17) | class AutoCategorize(AbstractModule): method module_init (line 19) | def module_init(self) -> bool: method categorize (line 36) | def categorize(self, lookyloo: Lookyloo, capture: CaptureCache, /) -> ... method _invalid_init_script (line 42) | def _invalid_init_script(self, capture: CaptureCache, /) -> bool: FILE: lookyloo/modules/circlpdns.py class CIRCLPDNS (line 23) | class CIRCLPDNS(AbstractModule): method module_init (line 25) | def module_init(self) -> bool: method _get_live_passivedns (line 41) | def _get_live_passivedns(self, query: str) -> list[PDNSRecord] | None: method get_passivedns (line 49) | def get_passivedns(self, query: str, live: bool=False) -> list[PDNSRec... method capture_default_trigger (line 63) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method __pdns_lookup (line 80) | def __pdns_lookup(self, hostname: str, force: bool=False) -> None: FILE: lookyloo/modules/cloudflare.py class Cloudflare (line 16) | class Cloudflare(): method __init__ (line 19) | def __init__(self, test: bool=False) -> None: method fetch_lists (line 46) | def fetch_lists(self, test: bool=False) -> None: method init_lists (line 97) | def init_lists(self) -> None: method ips_lookup (line 114) | def ips_lookup(self, ips: set[str]) -> dict[str, bool]: FILE: lookyloo/modules/fox.py class FOX (line 18) | class FOX(AbstractModule): method module_init (line 20) | def module_init(self) -> bool: method capture_default_trigger (line 31) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method __submit_url (line 41) | def __submit_url(self, url: str) -> bool: method __url_submit (line 50) | def __url_submit(self, url: str) -> dict[str, Any]: FILE: lookyloo/modules/hashlookup.py class HashlookupModule (line 20) | class HashlookupModule(AbstractModule): method module_init (line 24) | def module_init(self) -> bool: method capture_default_trigger (line 39) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method hashes_lookup (line 59) | def hashes_lookup(self, hashes: list[str]) -> dict[str, dict[str, str]]: FILE: lookyloo/modules/misp.py class MISPs (line 30) | class MISPs(Mapping, AbstractModule): # type: ignore[type-arg] method module_init (line 32) | def module_init(self) -> bool: method has_public_misp (line 63) | def has_public_misp(self) -> bool: method has_lookup (line 66) | def has_lookup(self, as_admin: bool) -> bool: method has_push (line 71) | def has_push(self, as_admin: bool) -> bool: method __getitem__ (line 76) | def __getitem__(self, name: str) -> MISP: method __iter__ (line 79) | def __iter__(self) -> Iterator[dict[str, MISP]]: method __len__ (line 82) | def __len__(self) -> int: method default_misp (line 86) | def default_misp(self) -> MISP: method export (line 89) | def export(self, cache: CaptureCache, is_public_instance: bool=False, method __misp_add_ips_to_URLObject (line 196) | def __misp_add_ips_to_URLObject(self, obj: URLObject, hostname_tree: H... class MISP (line 214) | class MISP(AbstractModule): method module_init (line 216) | def module_init(self) -> bool: method get_fav_tags (line 243) | def get_fav_tags(self) -> dict[Any, Any] | list[MISPTag]: method _prepare_push (line 246) | def _prepare_push(self, to_push: list[MISPEvent] | MISPEvent, allow_du... method push (line 275) | def push(self, to_push: list[MISPEvent] | MISPEvent, as_admin: bool, *... method get_existing_event_url (line 312) | def get_existing_event_url(self, permaurl: str) -> str | None: method __get_existing_event (line 319) | def __get_existing_event(self, permaurl: str) -> MISPEvent | None: method lookup (line 328) | def lookup(self, node: URLNode, hostnode: HostNode, as_admin: bool) ->... FILE: lookyloo/modules/pandora.py class Pandora (line 16) | class Pandora(): method __init__ (line 18) | def __init__(self) -> None: method available (line 30) | def available(self) -> bool: method submit_file (line 35) | def submit_file(self, file_in_memory: BytesIO, filename: str) -> dict[... FILE: lookyloo/modules/phishtank.py class Phishtank (line 21) | class Phishtank(AbstractModule): method module_init (line 23) | def module_init(self) -> bool: method get_url_lookup (line 39) | def get_url_lookup(self, url: str) -> dict[str, Any] | None: method lookup_ips_capture (line 50) | def lookup_ips_capture(self, cache: CaptureCache) -> dict[str, list[di... method get_ip_lookup (line 68) | def get_ip_lookup(self, ip: str) -> dict[str, Any] | None: method capture_default_trigger (line 79) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method __ip_lookup (line 106) | def __ip_lookup(self, ip: str) -> None: method __url_lookup (line 134) | def __url_lookup(self, url: str) -> None: FILE: lookyloo/modules/pi.py class PhishingInitiative (line 24) | class PhishingInitiative(AbstractModule): method module_init (line 26) | def module_init(self) -> bool: method get_url_lookup (line 37) | def get_url_lookup(self, url: str) -> dict[str, Any] | None: method capture_default_trigger (line 48) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method __url_lookup (line 62) | def __url_lookup(self, url: str, force: bool=False) -> None: FILE: lookyloo/modules/sanejs.py class SaneJavaScript (line 16) | class SaneJavaScript(): method __init__ (line 18) | def __init__(self) -> None: method hashes_lookup (line 38) | def hashes_lookup(self, sha512: Iterable[str] | str, force: bool=False... FILE: lookyloo/modules/urlhaus.py class URLhaus (line 19) | class URLhaus(AbstractModule): method module_init (line 21) | def module_init(self) -> bool: method get_url_lookup (line 38) | def get_url_lookup(self, url: str) -> dict[str, Any] | None: method __url_result (line 49) | def __url_result(self, url: str) -> dict[str, Any]: method capture_default_trigger (line 55) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method __url_lookup (line 71) | def __url_lookup(self, url: str) -> None: FILE: lookyloo/modules/urlscan.py class UrlScan (line 20) | class UrlScan(AbstractModule): method module_init (line 22) | def module_init(self) -> bool: method get_url_submission (line 48) | def get_url_submission(self, capture_info: CaptureCache) -> dict[str, ... method capture_default_trigger (line 62) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method __submit_url (line 72) | def __submit_url(self, url: str, useragent: str | None, referer: str |... method __url_result (line 93) | def __url_result(self, uuid: str) -> dict[str, Any]: method __url_submit (line 98) | def __url_submit(self, capture_info: CaptureCache, visibility: str, fo... method url_result (line 139) | def url_result(self, capture_info: CaptureCache) -> dict[str, Any]: FILE: lookyloo/modules/uwhois.py class UniversalWhois (line 19) | class UniversalWhois(AbstractModule): method module_init (line 21) | def module_init(self) -> bool: method query_whois_hostnode (line 37) | def query_whois_hostnode(self, hostnode: HostNode) -> None: method capture_default_trigger (line 53) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method whois (line 71) | def whois(self, query: str, contact_email_only: Literal[True]) -> list... method whois (line 75) | def whois(self, query: str, contact_email_only: Literal[False]) -> str: method whois (line 79) | def whois(self, query: str, contact_email_only: bool) -> str | list[str]: method whois (line 82) | def whois(self, query: str, contact_email_only: bool=False) -> str | l... FILE: lookyloo/modules/vt.py function jsonify_vt (line 25) | def jsonify_vt(obj: WhistleBlowerDict) -> dict[str, Any]: class VirusTotal (line 31) | class VirusTotal(AbstractModule): method module_init (line 33) | def module_init(self) -> bool: method get_url_lookup (line 52) | def get_url_lookup(self, url: str) -> dict[str, Any] | None: method capture_default_trigger (line 67) | def capture_default_trigger(self, cache: CaptureCache, /, *, force: bool, method __get_object_vt (line 81) | async def __get_object_vt(self, url: str) -> ClientResponse: method __scan_url (line 86) | async def __scan_url(self, url: str) -> None: method __url_lookup (line 90) | def __url_lookup(self, url: str, force: bool=False) -> None: FILE: tests/test_generic.py function test_has_title (line 7) | def test_has_title(page: Page) -> None: function test_get_started_link (line 14) | def test_get_started_link(page: Page) -> None: FILE: tools/change_captures_dir.py function rename_captures (line 12) | def rename_captures() -> None: FILE: tools/check_s3fs_entry.py function check_path (line 12) | def check_path(path: str) -> dict[str, str]: FILE: tools/manual_parse_ua_list.py function update_user_agents (line 20) | def update_user_agents(lookyloo: Lookyloo) -> None | Path: function ua_parser (line 46) | def ua_parser(html_content: StringIO) -> dict[str, Any]: function commit_ua_file (line 77) | def commit_ua_file(ua_file: Path) -> None: function main (line 83) | def main() -> None: FILE: tools/monitoring.py class Monitoring (line 25) | class Monitoring(): method __init__ (line 29) | def __init__(self) -> None: method backend_status (line 42) | def backend_status(self) -> bool: method queues (line 73) | def queues(self) -> list[tuple[str, float]]: method ongoing_captures (line 77) | def ongoing_captures(self) -> list[tuple[str, float, dict[str, Any]]]: method tree_cache (line 92) | def tree_cache(self) -> dict[str, str]: method lacus_status (line 104) | def lacus_status(self) -> dict[str, Any]: FILE: tools/rebuild_caches.py function main (line 14) | def main() -> None: FILE: tools/remove_capture.py function main (line 12) | def main() -> None: FILE: tools/show_known_devices.py function playwright_known_devices (line 6) | def playwright_known_devices() -> None: FILE: tools/stats.py function uniq_domains (line 18) | def uniq_domains(uniq_urls: List[str]) -> Set[str]: FILE: tools/update_cloudflare_lists.py function update_cloudflare_lists (line 8) | def update_cloudflare_lists() -> None: FILE: tools/validate_config_files.py function validate_generic_config_file (line 10) | def validate_generic_config_file() -> bool: function validate_modules_config_file (line 57) | def validate_modules_config_file() -> bool: function update_user_configs (line 73) | def update_user_configs() -> bool: FILE: website/web/__init__.py class UUIDConverter (line 105) | class UUIDConverter(BaseConverter): class Sha512Converter (line 115) | class Sha512Converter(BaseConverter): function landing_page (line 134) | def landing_page() -> WerkzeugResponse | str: function landing_page (line 141) | def landing_page() -> WerkzeugResponse | str: function user_loader (line 149) | def user_loader(username: str) -> User | None: function _load_user_from_request (line 158) | def _load_user_from_request(request: Request) -> User | None: function login (line 163) | def login() -> WerkzeugResponse | str | Response: function logout (line 188) | def logout() -> WerkzeugResponse: function prepare_monitoring (line 215) | def prepare_monitoring() -> tuple[bool, list[str], dict[str, int | bool]]: function sizeof_fmt (line 236) | def sizeof_fmt(num: float, suffix: str='B') -> str: function http_status_description (line 244) | def http_status_description(code: int) -> str: function month_name (line 250) | def month_name(month: int) -> str: function get_sri (line 254) | def get_sri(directory: str, filename: str) -> str: class SafeMiddleEllipsisString (line 261) | class SafeMiddleEllipsisString(): method __init__ (line 263) | def __init__(self, unsafe_string: str | int, with_copy_button: bool=Fa... method __html_format__ (line 273) | def __html_format__(self, format_spec: str) -> Markup: method _copy_button (line 280) | def _copy_button(self) -> Markup: method __html__ (line 292) | def __html__(self) -> Markup: function shorten_string (line 307) | def shorten_string(s: str | int, with_title: bool=True, with_copy_button... class Icon (line 315) | class Icon(TypedDict): function get_icon (line 320) | def get_icon(icon_id: str) -> Icon | None: function get_tz_info (line 350) | def get_tz_info() -> tuple[str | None, str, dict[str, str]]: function hash_icon_render (line 357) | def hash_icon_render(tree_uuid: str, urlnode_uuid: str, mimetype: str, h... function details_modal_button (line 388) | def details_modal_button(target_modal_id: str, data_remote: str, button_... function load_custom_css (line 393) | def load_custom_css(filename: str) -> tuple[str, str] | tuple[()]: function load_custom_js (line 397) | def load_custom_js(filename: str) -> tuple[str, str] | tuple[()]: function load_custom_local_ressource (line 401) | def load_custom_local_ressource(ressource_type: str, filename: str) -> t... function b64enode_filter (line 431) | def b64enode_filter(blob: str | bytes | BytesIO) -> str: function after_request (line 445) | def after_request(response: Response) -> Response: function file_response (line 465) | def file_response(func): # type: ignore[no-untyped-def] function handle_pydandic_validation_exception (line 481) | def handle_pydandic_validation_exception(error: CaptureSettingsError) ->... function favicon (line 491) | def favicon() -> WerkzeugResponse: function _get_body_hash_investigator (line 507) | def _get_body_hash_investigator(body_hash: str, offset: int | None=None,... function get_all_body_hashes (line 529) | def get_all_body_hashes(capture_uuid: str, /) -> dict[str, Any]: function get_hostname_investigator (line 550) | def get_hostname_investigator(hostname: str, offset: int | None=None, li... function get_domain_investigator (line 573) | def get_domain_investigator(domain: str, offset: int | None=None, limit:... function get_tld_investigator (line 596) | def get_tld_investigator(tld: str, offset: int | None=None, limit: int |... function get_ip_investigator (line 619) | def get_ip_investigator(ip: str, offset: int | None=None, limit: int | N... function get_all_ips (line 642) | def get_all_ips(capture_uuid: str, /) -> dict[str, Any]: function get_all_hostnames (line 663) | def get_all_hostnames(capture_uuid: str, /) -> dict[str, dict[str, Any]]: function get_all_urls (line 684) | def get_all_urls(capture_uuid: str, /) -> dict[str, dict[str, int | str]]: function get_url_investigator (line 699) | def get_url_investigator(url: str, offset: int | None=None, limit: int |... function get_cookie_name_investigator (line 722) | def get_cookie_name_investigator(cookie_name: str, offset: int | None=No... function get_identifier_investigator (line 745) | def get_identifier_investigator(identifier_type: str, identifier: str, o... function get_capture_hash_investigator (line 757) | def get_capture_hash_investigator(hash_type: str, h: str, offset: int | ... function get_favicon_investigator (line 769) | def get_favicon_investigator(favicon_sha512: str, offset: int | None=Non... function get_hhh_investigator (line 781) | def get_hhh_investigator(hhh: str, offset: int | None=None, limit: int |... function get_hostnode_investigator (line 805) | def get_hostnode_investigator(capture_uuid: str, /, node_uuid: str) -> t... function hashes_hostnode (line 915) | def hashes_hostnode(tree_uuid: str, node_uuid: str) -> Response: function urls_hostnode (line 925) | def urls_hostnode(tree_uuid: str, node_uuid: str) -> Response: function hostnode_popup (line 932) | def hostnode_popup(tree_uuid: str, node_uuid: str) -> str | WerkzeugResp... function trigger_modules (line 965) | def trigger_modules(tree_uuid: str) -> WerkzeugResponse | str | Response: function historical_lookups (line 973) | def historical_lookups(tree_uuid: str) -> str | WerkzeugResponse | Respo... function categories_capture (line 989) | def categories_capture(tree_uuid: str) -> str | WerkzeugResponse | Respo... function stats (line 1024) | def stats(tree_uuid: str) -> str: function trusted_timestamp_tsr (line 1030) | def trusted_timestamp_tsr(tree_uuid: str, name: str) -> Response: function all_trusted_timestamp (line 1037) | def all_trusted_timestamp(tree_uuid: str) -> Response: function download_elements (line 1045) | def download_elements(tree_uuid: str) -> str: function get_downloaded_file (line 1068) | def get_downloaded_file(tree_uuid: str) -> Response: function downloads (line 1078) | def downloads(tree_uuid: str) -> str: function storage_state (line 1099) | def storage_state(tree_uuid: str) -> str: function web_misp_lookup_view (line 1113) | def web_misp_lookup_view(tree_uuid: str) -> str | WerkzeugResponse | Res... function web_lookyloo_push_view (line 1144) | def web_lookyloo_push_view(tree_uuid: str) -> str | WerkzeugResponse | R... function web_misp_push_view (line 1169) | def web_misp_push_view(tree_uuid: str) -> str | WerkzeugResponse | Respo... function modules (line 1268) | def modules(tree_uuid: str) -> str | WerkzeugResponse | Response: function redirects (line 1353) | def redirects(tree_uuid: str) -> Response: function image (line 1369) | def image(tree_uuid: str) -> Response: function data (line 1385) | def data(tree_uuid: str) -> Response: function thumbnail (line 1401) | def thumbnail(tree_uuid: str, width: int) -> Response: function html (line 1408) | def html(tree_uuid: str) -> Response: function html_as_markdown (line 1418) | def html_as_markdown(tree_uuid: str) -> Response: function cookies (line 1428) | def cookies(tree_uuid: str) -> Response: function storage_state_download (line 1438) | def storage_state_download(tree_uuid: str) -> Response: function frames_download (line 1448) | def frames_download(tree_uuid: str) -> Response: function har_download (line 1458) | def har_download(tree_uuid: str) -> Response: function hashes_tree (line 1469) | def hashes_tree(tree_uuid: str) -> Response: function export (line 1479) | def export(tree_uuid: str) -> Response: function urls_rendered_page (line 1488) | def urls_rendered_page(tree_uuid: str) -> WerkzeugResponse | str | Respo... function hashlookup (line 1504) | def hashlookup(tree_uuid: str) -> str | WerkzeugResponse | Response: function bulk_captures (line 1518) | def bulk_captures(base_tree_uuid: str) -> WerkzeugResponse | str | Respo... function hide_capture (line 1586) | def hide_capture(tree_uuid: str) -> WerkzeugResponse: function remove_capture (line 1594) | def remove_capture(tree_uuid: str) -> WerkzeugResponse: function rebuild_tree (line 1602) | def rebuild_tree(tree_uuid: str) -> WerkzeugResponse: function cache_tree (line 1612) | def cache_tree(tree_uuid: str) -> WerkzeugResponse: function monitor (line 1618) | def monitor(tree_uuid: str) -> WerkzeugResponse: function send_mail (line 1660) | def send_mail(tree_uuid: str) -> WerkzeugResponse: function trigger_indexing (line 1684) | def trigger_indexing(tree_uuid: str) -> WerkzeugResponse: function tree (line 1692) | def tree(tree_uuid: str, node_uuid: str | None=None) -> Response | str |... function mark_as_legitimate (line 1796) | def mark_as_legitimate(tree_uuid: str) -> Response: function tree_identifiers (line 1806) | def tree_identifiers(tree_uuid: str) -> str: function tree_favicons (line 1811) | def tree_favicons(tree_uuid: str) -> str: function tree_capture_hashes_types (line 1816) | def tree_capture_hashes_types(tree_uuid: str) -> str: function tree_body_hashes (line 1821) | def tree_body_hashes(tree_uuid: str) -> str: function tree_ips (line 1826) | def tree_ips(tree_uuid: str) -> str: function tree_hostnames (line 1835) | def tree_hostnames(tree_uuid: str) -> str: function tree_urls (line 1840) | def tree_urls(tree_uuid: str) -> str: function pandora_submit (line 1845) | def pandora_submit(tree_uuid: str) -> dict[str, Any] | Response: function index_generic (line 1879) | def index_generic(show_hidden: bool=False, show_error: bool=True, catego... function get_index_params (line 1901) | def get_index_params(request: Request) -> tuple[bool, str]: function index (line 1915) | def index() -> str: function index_hidden (line 1922) | def index_hidden() -> str: function cookies_lookup (line 1928) | def cookies_lookup() -> str: function hhhashes_lookup (line 1936) | def hhhashes_lookup() -> str: function favicons_lookup (line 1944) | def favicons_lookup() -> str: function ressources (line 1957) | def ressources() -> str: function categories (line 1975) | def categories() -> str: function rebuild_all (line 1984) | def rebuild_all() -> WerkzeugResponse: function rebuild_cache (line 1991) | def rebuild_cache() -> WerkzeugResponse: function search (line 1997) | def search() -> str | Response | WerkzeugResponse: function _prepare_capture_template (line 2047) | def _prepare_capture_template(user_ua: str | None, predefined_settings: ... function recapture (line 2129) | def recapture(tree_uuid: str) -> str | Response | WerkzeugResponse: function ressource_by_hash (line 2141) | def ressource_by_hash(sha512: str) -> Response: function __get_remote_capture (line 2156) | def __get_remote_capture(remote_lookyloo: str, remote_uuid: str) -> Mark... function submit_capture (line 2172) | def submit_capture() -> str | Response | WerkzeugResponse: function capture_web (line 2235) | def capture_web() -> str | Response | WerkzeugResponse: function simple_capture (line 2408) | def simple_capture() -> str | Response | WerkzeugResponse: function cookies_name_detail (line 2439) | def cookies_name_detail(cookie_name: str) -> str: function hhh_detail (line 2445) | def hhh_detail(hhh: str) -> str: function identifier_details (line 2456) | def identifier_details(identifier_type: str, identifier: str) -> str: function capture_hash_details (line 2463) | def capture_hash_details(hash_type: str, h: str) -> str: function favicon_detail (line 2469) | def favicon_detail(favicon_sha512: str) -> str: function body_hash_details (line 2489) | def body_hash_details(body_hash: str) -> str: function url_details (line 2512) | def url_details(url: str) -> str: function hostname_details (line 2519) | def hostname_details(hostname: str) -> str: function tld_details (line 2525) | def tld_details(tld: str) -> str: function domain_details (line 2531) | def domain_details(domain: str) -> str: function ip_details (line 2537) | def ip_details(ip: str) -> str: function statsfull (line 2544) | def statsfull() -> str: function whois (line 2553) | def whois(query: str, email_only: int=0) -> Response: function urlnode_request_cookies (line 2565) | def urlnode_request_cookies(tree_uuid: str, node_uuid: str) -> Response ... function urlnode_response_cookies (line 2576) | def urlnode_response_cookies(tree_uuid: str, node_uuid: str) -> Response... function urlnode_urls_in_rendered_content (line 2587) | def urlnode_urls_in_rendered_content(tree_uuid: str, node_uuid: str) -> ... function urlnode_rendered_content (line 2605) | def urlnode_rendered_content(tree_uuid: str, node_uuid: str) -> Response... function urlnode_post_request (line 2621) | def urlnode_post_request(tree_uuid: str, node_uuid: str) -> WerkzeugResp... function get_ressource (line 2659) | def get_ressource(tree_uuid: str, node_uuid: str) -> WerkzeugResponse | ... function get_ressource_preview (line 2688) | def get_ressource_preview(tree_uuid: str, node_uuid: str, h_ressource: s... function hashes_urlnode (line 2701) | def hashes_urlnode(tree_uuid: str, node_uuid: str) -> Response: function add_context (line 2711) | def add_context(tree_uuid: str, node_uuid: str) -> WerkzeugResponse | None: function __prepare_node_view (line 2789) | def __prepare_node_view(capture_uuid: str, nodes: Sequence[tuple[str, st... function __prepare_title_in_modal (line 2794) | def __prepare_title_in_modal(capture_uuid: str, title: str, from_popup: ... function __prepare_landings_in_modal (line 2803) | def __prepare_landings_in_modal(landing_page: str) -> dict[str, Markup]: function _safe_capture_title (line 2808) | def _safe_capture_title(capture_uuid: str, title: str, nodes: Sequence[t... function get_index (line 2843) | def get_index(offset: int, limit: int, public: bool=True, show_error: bo... function post_table (line 2885) | def post_table(table_name: str, value: str='') -> Response: FILE: website/web/genericapi.py function api_auth_check (line 40) | def api_auth_check(method): # type: ignore[no-untyped-def] function handle_no_HAR_file_exception (line 53) | def handle_no_HAR_file_exception(error: Any) -> Response: function handle_pydandic_validation_exception (line 59) | def handle_pydandic_validation_exception(error: CaptureSettingsError) ->... class UserConfig (line 69) | class UserConfig(Resource): # type: ignore[misc] method get (line 72) | def get(self) -> dict[str, Any] | None | Response: class AuthToken (line 80) | class AuthToken(Resource): # type: ignore[misc] method get (line 86) | def get(self) -> Response: method post (line 94) | def post(self) -> Response: class CaptureStatusQuery (line 106) | class CaptureStatusQuery(Resource): # type: ignore[misc] method get (line 109) | def get(self, capture_uuid: str) -> Response: class CaptureIPs (line 123) | class CaptureIPs(Resource): # type: ignore[misc] method get (line 124) | def get(self, capture_uuid: str) -> Response: class CaptureFaviconss (line 139) | class CaptureFaviconss(Resource): # type: ignore[misc] method get (line 140) | def get(self, capture_uuid: str) -> Response: class CaptureHostnames (line 170) | class CaptureHostnames(Resource): # type: ignore[misc] method get (line 171) | def get(self, capture_uuid: str) -> Response: class CaptureURLs (line 186) | class CaptureURLs(Resource): # type: ignore[misc] method get (line 187) | def get(self, capture_uuid: str) -> Response: class CaptureHashes (line 202) | class CaptureHashes(Resource): # type: ignore[misc] method get (line 211) | def get(self, capture_uuid: str) -> Response: class CaptureRedirects (line 235) | class CaptureRedirects(Resource): # type: ignore[misc] method get (line 236) | def get(self, capture_uuid: str) -> Response: class MISPExport (line 258) | class MISPExport(Resource): # type: ignore[misc] method get (line 259) | def get(self, capture_uuid: str) -> Response: class MISPPush (line 287) | class MISPPush(Resource): # type: ignore[misc] method get (line 292) | def get(self, capture_uuid: str, instance_name: str | None=None) -> Re... method post (line 325) | def post(self, capture_uuid: str, instance_name: str | None=None) -> R... class TriggerModules (line 367) | class TriggerModules(Resource): # type: ignore[misc] method post (line 369) | def post(self, capture_uuid: str) -> Response: class ModulesResponse (line 380) | class ModulesResponse(Resource): # type: ignore[misc] method get (line 381) | def get(self, capture_uuid: str) -> Response: function get_body_hash_occurrences (line 385) | def get_body_hash_occurrences(body_hash: str, *, with_urls_occurrences: ... class HashInfo (line 418) | class HashInfo(Resource): # type: ignore[misc] method get (line 420) | def get(self, h: str) -> Response: method post (line 433) | def post(self) -> Response: function get_favicon_occurrences (line 438) | def get_favicon_occurrences(favicon: str, *, cached_captures_only: bool=... class FaviconInfo (line 467) | class FaviconInfo(Resource): # type: ignore[misc] method post (line 470) | def post(self) -> Response: function get_ip_occurrences (line 475) | def get_ip_occurrences(ip: str, *, with_urls_occurrences: bool=False, ca... class IPInfo (line 507) | class IPInfo(Resource): # type: ignore[misc] method post (line 510) | def post(self) -> Response: function get_url_occurrences (line 515) | def get_url_occurrences(url: str, *, with_urls_occurrences: bool=False, ... class URLInfo (line 554) | class URLInfo(Resource): # type: ignore[misc] method post (line 557) | def post(self) -> Response: function get_hostname_occurrences (line 562) | def get_hostname_occurrences(hostname: str, *, with_urls_occurrences: bo... class HostnameInfo (line 608) | class HostnameInfo(Resource): # type: ignore[misc] method post (line 611) | def post(self) -> Response: class InstanceStats (line 618) | class InstanceStats(Resource): # type: ignore[misc] method get (line 619) | def get(self) -> Response: class Devices (line 625) | class Devices(Resource): # type: ignore[misc] method get (line 627) | def get(self) -> Response: function _prepare_lacus_details (line 631) | def _prepare_lacus_details(lacus: PyLacus, name: str) -> dict[str, Any]: class RemoteLacuses (line 646) | class RemoteLacuses(Resource): # type: ignore[misc] method get (line 648) | def get(self) -> Response: class CaptureStats (line 663) | class CaptureStats(Resource): # type: ignore[misc] method get (line 664) | def get(self, capture_uuid: str) -> Response: class CaptureInfo (line 671) | class CaptureInfo(Resource): # type: ignore[misc] method get (line 672) | def get(self, capture_uuid: str) -> Response: class CaptureCookies (line 682) | class CaptureCookies(Resource): # type: ignore[misc] method get (line 683) | def get(self, capture_uuid: str) -> Response: class CaptureStorageState (line 693) | class CaptureStorageState(Resource): # type: ignore[misc] method get (line 694) | def get(self, capture_uuid: str) -> Response: class CaptureReport (line 704) | class CaptureReport(Resource): # type: ignore[misc] method post (line 707) | def post(self, capture_uuid: str) -> Response: class UploadCapture (line 718) | class UploadCapture(Resource): # type: ignore[misc] method post (line 719) | def post(self) -> Response: class SubmitCapture (line 827) | class SubmitCapture(Resource): # type: ignore[misc] method get (line 839) | def get(self) -> str | Response: method post (line 872) | def post(self) -> str: class CaptureScreenshot (line 887) | class CaptureScreenshot(Resource): # type: ignore[misc] method get (line 890) | def get(self, capture_uuid: str) -> Response: class CaptureExport (line 900) | class CaptureExport(Resource): # type: ignore[misc] method get (line 903) | def get(self, capture_uuid: str) -> Response: class CaptureData (line 913) | class CaptureData(Resource): # type: ignore[misc] method get (line 916) | def get(self, capture_uuid: str) -> Response: class CompareCaptures (line 947) | class CompareCaptures(Resource): # type: ignore[misc] method post (line 949) | def post(self) -> Response: class Comparables (line 996) | class Comparables(Resource): # type: ignore[misc] method get (line 999) | def get(self, capture_uuid: str) -> dict[str, Any]: class Takedown (line 1013) | class Takedown(Resource): # type: ignore[misc] method post (line 1015) | def post(self) -> Response: class RebuildAll (line 1036) | class RebuildAll(Resource): # type: ignore[misc] method post (line 1039) | def post(self) -> Response: class RebuildAllCache (line 1050) | class RebuildAllCache(Resource): # type: ignore[misc] method post (line 1053) | def post(self) -> Response: class CaptureRebuildTree (line 1065) | class CaptureRebuildTree(Resource): # type: ignore[misc] method post (line 1068) | def post(self, capture_uuid: str) -> Response: class CaptureHide (line 1081) | class CaptureHide(Resource): # type: ignore[misc] method post (line 1084) | def post(self, capture_uuid: str) -> Response: class CaptureRemove (line 1096) | class CaptureRemove(Resource): # type: ignore[misc] method post (line 1099) | def post(self, capture_uuid: str) -> Response: class RecentCaptures (line 1112) | class RecentCaptures(Resource): # type: ignore[misc] method get (line 1113) | def get(self, timestamp: str | float | None=None) -> Response: class CategoriesCaptures (line 1128) | class CategoriesCaptures(Resource): # type: ignore[misc] method get (line 1129) | def get(self, category: str | None=None) -> Response: class TLDCaptures (line 1142) | class TLDCaptures(Resource): # type: ignore[misc] method get (line 1148) | def get(self) -> Response: function validate_and_format_payload (line 1193) | def validate_and_format_payload(payload: dict[str, Any]) -> dict[str, Any]: class AdvancedSearch (line 1261) | class AdvancedSearch(Resource): # type: ignore[misc] method post (line 1271) | def post(self) -> Response: FILE: website/web/helpers.py function get_lookyloo_instance (line 24) | def get_lookyloo_instance() -> Lookyloo: function src_request_ip (line 31) | def src_request_ip(request: Request) -> str | None: class User (line 39) | class User(flask_login.UserMixin): # type: ignore[misc] function load_user_from_request (line 43) | def load_user_from_request(request: Request) -> User | None: function is_valid_username (line 56) | def is_valid_username(username: str) -> bool: function build_keys_table (line 61) | def build_keys_table() -> dict[str, str]: function get_users (line 73) | def get_users() -> dict[str, str | list[str]]: function build_users_table (line 82) | def build_users_table() -> dict[str, dict[str, str]]: function get_secret_key (line 107) | def get_secret_key() -> bytes: function sri_load (line 118) | def sri_load() -> dict[str, dict[str, str]]: function get_indexing (line 123) | def get_indexing(user: User | None) -> Indexing: FILE: website/web/proxied.py class ReverseProxied (line 6) | class ReverseProxied(): method __init__ (line 7) | def __init__(self, app: Any) -> None: method __call__ (line 10) | def __call__(self, environ: MutableMapping[str, Any], start_response: ... FILE: website/web/static/capture.js function toggle_multiple_captures (line 27) | function toggle_multiple_captures() { function change_proxy_details (line 68) | function change_proxy_details(e) { function hide_disable_browser_ua (line 94) | function hide_disable_browser_ua() { function enable_mobile (line 185) | function enable_mobile() { function enable_desktop (line 202) | function enable_desktop() { FILE: website/web/static/generic.js function checkAllBoxes (line 3) | function checkAllBoxes(name) { function openURLInNewTab (line 10) | function openURLInNewTab(url) { function openTreeInNewTab (line 19) | function openTreeInNewTab(capture_uuid, hostnode_uuid=null) { function downloadBase64File (line 34) | function downloadBase64File(contentType, base64Data, fileName) { function render_datetime_with_tz (line 42) | function render_datetime_with_tz(data) { function newTabClickListener (line 59) | function newTabClickListener() { function downloadFaviconListener (line 72) | function downloadFaviconListener() { function submitPandoraListener (line 78) | function submitPandoraListener() { function submit_pandora (line 85) | function submit_pandora(node_uuid, ressource_hash, index_in_zip, pandora... function add_event_js_copy (line 112) | function add_event_js_copy() { FILE: website/web/static/hostnode_modals.js function getData (line 16) | async function getData(url) { FILE: website/web/static/render_tables.js function renderTables (line 3) | function renderTables() { FILE: website/web/static/tree.js function open_hostnode_popup (line 164) | function open_hostnode_popup(hostnode_uuid) { function LocateNode (line 172) | function LocateNode(hostnode_uuid) { function UnbookmarkAllNodes (line 239) | function UnbookmarkAllNodes() { function MarkAsKnown (line 255) | function MarkAsKnown(capture_uuid, hostnode_uuid=null, urlnode_uuid=null) { function UnbookmarkHostNode (line 262) | function UnbookmarkHostNode(hostnode_uuid) { function NodeHighlight (line 278) | function NodeHighlight(hostnode_uuid) { function icon_list (line 297) | function icon_list(relative_x_pos, relative_y_pos, d) { function text_entry (line 370) | function text_entry(relative_x_pos, relative_y_pos, d) { function update (line 434) | function update(root, computed_node_width=0) { FILE: website/web/static/tree_modals.js function mispSelector (line 2) | function mispSelector() {