Cowrie SSH/Telnet Honeypot https://docs.cowrie.org/
This report summarizes scanner evidence for cowrie/cowrie, a Python project with 6,595 GitHub stars. SynthScan examined 66,798 lines of code across 398 source files, recording 1722 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 36.8 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1195 finding(s).
Are imports declared and package/API names verified? 370 finding(s).
Are wrappers, guards, and repeated structures necessary? 1178 finding(s).
Which changes need focused human review? 1722 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1722 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | .github/scripts/advanced-honeypot-tests.py | 172 | def test_filesystem_consistency(self, client: paramiko.SSHClient) -> bool: | CODE |
| LOW | src/cowrie/llm/protocol.py | 255 | def _process_command_with_llm(self, command: str) -> None: | CODE |
| LOW | src/cowrie/core/utils.py | 162 | def get_endpoints_from_section( | CODE |
| LOW | src/cowrie/test/test_telegram.py | 43 | def test_redirect_in_command_is_escaped(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telegram.py | 53 | def test_markup_in_command_is_not_rendered(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telegram.py | 68 | def test_ampersand_in_command_is_escaped(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telegram.py | 75 | def test_credentials_are_escaped(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telegram.py | 89 | def test_download_url_is_escaped(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telegram.py | 101 | def test_wrapping_tags_survive(self) -> None: | CODE |
| LOW | src/cowrie/test/test_parser.py | 51 | def test_stderr_to_devnull_inline(self) -> None: | CODE |
| LOW | src/cowrie/test/test_parser.py | 73 | def test_multiple_redirections(self) -> None: | CODE |
| LOW | src/cowrie/test/test_parser.py | 87 | def test_redirect_without_target(self) -> None: | CODE |
| LOW | src/cowrie/test/test_parser.py | 121 | def test_redirect_both_stdout_stderr(self) -> None: | CODE |
| LOW | src/cowrie/test/test_parser.py | 133 | def test_redirect_both_append(self) -> None: | CODE |
| LOW | src/cowrie/test/test_parser.py | 139 | def test_redirect_both_inline_target(self) -> None: | CODE |
| LOW | src/cowrie/test/test_sed.py | 49 | def test_substitute_groups_and_ampersand(self) -> None: | CODE |
| LOW | src/cowrie/test/test_sed.py | 63 | def test_bracket_classes_and_anchors(self) -> None: | CODE |
| LOW | src/cowrie/test/test_sed.py | 75 | def test_print_and_delete_with_addresses(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_sed.py | 86 | def test_quit_and_line_number(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_sed.py | 96 | def test_append_insert_change(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_sed.py | 102 | def test_multiple_expressions_and_blocks(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_sed.py | 115 | def test_labels_and_branches_join_lines(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_sed.py | 121 | def test_print_only_substituted_lines(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_sed.py | 127 | def test_delete_first_line_of_pattern_space_restarts_cycle(self) -> None: | CODE |
| LOW | src/cowrie/test/test_sed.py | 160 | def test_unterminated_substitute(self) -> None: | CODE |
| LOW | src/cowrie/test/test_sed.py | 172 | def test_no_script_prints_usage(self) -> None: | CODE |
| LOW | src/cowrie/test/test_sed.py | 189 | def test_option_values_are_not_mistaken_for_i(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 18 | def test_returns_bytes_for_existing_resource(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 23 | def test_raises_file_not_found_for_missing_resource(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 27 | def test_raises_file_not_found_for_missing_subpath(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 31 | def test_raises_file_not_found_for_directory(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 39 | def test_raises_file_not_found_for_directory_via_empty_subpath(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 49 | def test_yields_readable_binary_stream(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 55 | def test_raises_file_not_found_for_missing_resource(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_resources.py | 60 | def test_raises_file_not_found_for_directory(self) -> None: | CODE |
| LOW | src/cowrie/test/test_reversedns.py | 72 | def test_second_connect_same_ip_dispatches_again(self) -> None: | CODE |
| LOW | src/cowrie/test/test_reversedns.py | 83 | def test_forward_after_connect_same_ip_dispatches(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_reversedns.py | 100 | def test_timeout_is_not_cached(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_reversedns.py | 106 | def test_servfail_is_not_cached(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_reversedns.py | 112 | def test_invalid_ip_does_no_lookup(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_shell_cwd.py | 36 | def test_top_level_cd_persists(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_shell_cwd.py | 40 | def test_substitution_sees_its_own_cd(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_shell_cwd.py | 44 | def test_substitution_cd_does_not_leak(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_shell_cwd.py | 48 | def test_substitution_inherits_parent_cwd(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_shell_cwd.py | 54 | def test_nested_sh_cd_does_not_leak(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_shell_cwd.py | 58 | def test_relative_path_resolves_against_shell_cwd(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telnet_proxy_handler.py | 71 | def test_username_with_cr_nul(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telnet_proxy_handler.py | 76 | def test_username_with_bare_trailing_cr(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telnet_proxy_handler.py | 90 | def test_password_with_bare_trailing_cr(self) -> None: | CODE |
| LOW | src/cowrie/test/test_telnet_proxy_handler.py | 96 | def test_valid_password_forwards_the_backend_password(self) -> None: | CODE |
| LOW | src/cowrie/test/test_jsonlog.py | 35 | def test_rotation_never_splits_an_event(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 55 | def test_malformed_port_does_not_hang(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 66 | def test_out_of_range_port_does_not_hang(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 75 | def test_failed_download_removes_temp_artifact(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 98 | def test_tcp_timeout_reports_connection_timed_out(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 119 | def test_missing_host_reports_error_without_crashing(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 127 | def test_exit_removes_empty_artifact(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 143 | def test_artifact_close_is_idempotent(self) -> None: | CODE |
| LOW | src/cowrie/test/test_curl.py | 172 | def test_late_download_callbacks_after_exit_are_inert(self) -> None: | CODE |
| LOW⚡ | src/cowrie/test/test_curl.py | 238 | def test_get_binds_agent_to_out_addr(self) -> None: | CODE |
| 960 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | .github/scripts/advanced-honeypot-tests.py | 180 | stdin, stdout, stderr = client.exec_command('ls -la /bin/bash /bin/sh /usr/bin/python* 2>/dev/null || echo " | CODE |
| HIGH⚡ | .github/scripts/advanced-honeypot-tests.py | 205 | stdin, stdout, stderr = client.exec_command('netstat -an 2>/dev/null || ss -an') | CODE |
| HIGH⚡ | .github/scripts/advanced-honeypot-tests.py | 214 | stdin, stdout, stderr = client.exec_command('ip addr || ifconfig') | CODE |
| HIGH | src/cowrie/test/test_cat.py | 44 | (b"cat /etc/hostname > /dev/null; echo $?", b"0\n"), | CODE |
| HIGH | src/cowrie/test/test_cat.py | 51 | b"cat nonExisting /etc/hostname > /dev/null; echo $?", | CODE |
| HIGH⚡ | src/cowrie/test/test_bashparse.py | 219 | statements = self.parser.parse("a && b || c") | CODE |
| HIGH⚡ | src/cowrie/test/test_bashparse.py | 219 | statements = self.parser.parse("a && b || c") | CODE |
| HIGH⚡ | src/cowrie/test/test_bashparse.py | 268 | statements = self.parser.parse("true && echo a | cat") | CODE |
| HIGH⚡ | src/cowrie/test/test_bashparse.py | 547 | statements = self.parser.parse("true && for i in 1; do echo $i; done") | CODE |
| HIGH⚡ | src/cowrie/test/test_bashparse.py | 625 | self._assert_unambiguous("echo a > f 2>&1 && echo b || echo c & # done\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_bashparse.py | 625 | self._assert_unambiguous("echo a > f 2>&1 && echo b || echo c & # done\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_test_builtin.py | 54 | self.proto.lineReceived(b"true && echo yes") | CODE |
| HIGH⚡ | src/cowrie/test/test_test_builtin.py | 59 | self.proto.lineReceived(b"false || echo recovered") | CODE |
| HIGH⚡ | src/cowrie/test/test_exec_builtin.py | 71 | self.assertEqual(self.run_line(b"exec 2>/dev/null; echo $?"), b"0\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_grep.py | 123 | (b"grep -q root /nonexistent /etc/passwd 2>/dev/null; echo $?", b"0\n"), | CODE |
| HIGH⚡ | src/cowrie/test/test_grep.py | 124 | (b"grep -q zzz /nonexistent /etc/passwd 2>/dev/null; echo $?", b"2\n"), | CODE |
| HIGH⚡ | src/cowrie/test/test_script_execution.py | 202 | b"printf 'for u in a b c\\ndo\\necho fetch $u && break\\ndone\\n'" | CODE |
| HIGH | src/cowrie/test/test_script_execution.py | 106 | """Scripts test `cmd || fallback`; a binary that cannot run must | STRING |
| HIGH⚡ | src/cowrie/test/test_tr.py | 103 | b"printf 'x\\ny\\n' | ( tr -d '\\n' 2>/dev/null || cat ); echo" | CODE |
| HIGH | src/cowrie/test/test_flow_control.py | 237 | "for url in http://a/x http://b/x; do echo fetch $url && break; done" | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 60 | self.assertEqual(self.run_line(b"true && echo ran"), b"ran\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 61 | self.assertEqual(self.run_line(b"false && echo ran"), b"") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 64 | self.assertEqual(self.run_line(b"false || echo ran"), b"ran\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 65 | self.assertEqual(self.run_line(b"true || echo ran"), b"") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 69 | self.assertEqual(self.run_line(b"false && echo a || echo b"), b"b\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 69 | self.assertEqual(self.run_line(b"false && echo a || echo b"), b"b\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 71 | self.assertEqual(self.run_line(b"true && echo a || echo b"), b"a\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 71 | self.assertEqual(self.run_line(b"true && echo a || echo b"), b"a\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 75 | self.assertEqual(self.run_line(b"false && echo x; echo $?"), b"1\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 90 | self.assertEqual(self.run_line(b"bash -c false && echo ran"), b"") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 97 | out = self.run_line(b"dd if=/nonexistentfile && echo ran") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 145 | self.assertEqual(self.run_line(b"echo $(true || echo x)"), b"\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_exit_status.py | 146 | self.assertEqual(self.run_line(b"echo $(false || echo y)"), b"y\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_echo.py | 177 | self.proto.lineReceived(b"(echo first && echo second)") | CODE |
| HIGH⚡ | src/cowrie/test/test_echo.py | 185 | self.proto.lineReceived(b"(echo first || echo second)") | CODE |
| HIGH⚡ | src/cowrie/test/test_echo.py | 253 | self.proto.lineReceived(b"( ./xxxxxx 2>&1 || true ) | wc -c\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_echo.py | 257 | self.proto.lineReceived(b"( xxxxxx ) 2>/dev/null; echo rc=$?\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_echo.py | 279 | self.proto.lineReceived(b"bash -c 'echo (' 2>/dev/null; echo rc=$?\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_async_substitution.py | 95 | self.proto.lineReceived(b"echo $(fakeasync && echo ok)\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_async_substitution.py | 101 | self.proto.lineReceived(b"echo $(fakeasync && echo ok)\n") | CODE |
| HIGH⚡ | src/cowrie/test/test_pipeline.py | 79 | self.run_line("false || echo a | cat && echo b"), b"a\nb\n" + PROMPT | CODE |
| HIGH⚡ | src/cowrie/test/test_pipeline.py | 79 | self.run_line("false || echo a | cat && echo b"), b"a\nb\n" + PROMPT | CODE |
| HIGH | src/cowrie/shell/parser.py | 6 | # ABOUTME: Handles FD redirections like 2>/dev/null, stdin redirects, and command substitution. | COMMENT |
| HIGH | src/cowrie/shell/honeypot.py | 378 | A subshell is queued as one unit so its join operator (e.g. the || in | STRING |
| HIGH | src/cowrie/commands/fs.py | 77 | self.writeBytes(b"\t[--null] [pattern] [file ...]\n") | CODE |
| HIGH | src/cowrie/commands/ftpget.py | 232 | self.write("ftpget: cmd (null) (null)\n") | CODE |
| HIGH | src/cowrie/commands/ftpget.py | 253 | self.write("ftpget: cmd TYPE I (null)\n") | CODE |
| HIGH | src/cowrie/commands/ftpget.py | 254 | self.write("ftpget: cmd PASV (null)\n") | CODE |
| HIGH | src/cowrie/commands/ftpget.py | 278 | self.write("ftpget: cmd (null) (null)\n") | CODE |
| HIGH | src/cowrie/commands/ftpget.py | 279 | self.write("ftpget: cmd QUIT (null)\n") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/advanced-honeypot-tests.py | 12 | CODE | |
| LOW | .github/scripts/advanced-honeypot-tests.py | 14 | CODE | |
| LOW | .github/scripts/advanced-honeypot-tests.py | 15 | CODE | |
| LOW | src/cowrie/llm/telnet.py | 9 | CODE | |
| LOW | src/cowrie/llm/server.py | 6 | CODE | |
| LOW | src/cowrie/llm/protocol.py | 6 | CODE | |
| LOW | src/cowrie/llm/session.py | 5 | CODE | |
| LOW | src/cowrie/llm/llm.py | 8 | CODE | |
| LOW | src/cowrie/llm/llm.py | 34 | CODE | |
| LOW | src/cowrie/llm/avatar.py | 6 | CODE | |
| LOW | src/cowrie/llm/realm.py | 5 | CODE | |
| LOW | src/cowrie/core/auth.py | 10 | CODE | |
| LOW | src/cowrie/core/config.py | 10 | CODE | |
| LOW | src/cowrie/core/artifact.py | 25 | CODE | |
| LOW | src/cowrie/core/checkers.py | 10 | CODE | |
| LOW | src/cowrie/core/credentials.py | 5 | CODE | |
| LOW | src/cowrie/core/cef.py | 10 | CODE | |
| LOW | src/cowrie/core/fingerprint.py | 22 | CODE | |
| LOW | src/cowrie/core/events.py | 16 | CODE | |
| LOW | src/cowrie/core/download.py | 8 | CODE | |
| LOW | src/cowrie/core/ocsf.py | 21 | CODE | |
| LOW | src/cowrie/core/ttylog.py | 11 | CODE | |
| LOW | src/cowrie/core/eventids.py | 25 | CODE | |
| LOW | src/cowrie/core/utils.py | 6 | CODE | |
| LOW | src/cowrie/core/network.py | 20 | CODE | |
| LOW | src/cowrie/core/resources.py | 8 | CODE | |
| LOW | src/cowrie/core/uuid.py | 6 | CODE | |
| LOW | src/cowrie/core/output.py | 5 | CODE | |
| LOW | src/cowrie/test/test_telegram.py | 8 | CODE | |
| LOW | src/cowrie/test/test_parser.py | 8 | CODE | |
| LOW | src/cowrie/test/fake_server.py | 6 | CODE | |
| LOW | src/cowrie/test/test_command.py | 8 | CODE | |
| LOW | src/cowrie/test/test_sed.py | 8 | CODE | |
| LOW | src/cowrie/test/test_resources.py | 8 | CODE | |
| LOW | src/cowrie/test/test_reversedns.py | 8 | CODE | |
| LOW | src/cowrie/test/test_cat.py | 5 | CODE | |
| LOW | src/cowrie/test/test_shell_cwd.py | 8 | CODE | |
| LOW | src/cowrie/test/test_telnet_proxy_handler.py | 8 | CODE | |
| LOW | src/cowrie/test/test_jsonlog.py | 8 | CODE | |
| LOW | src/cowrie/test/test_curl.py | 8 | CODE | |
| LOW | src/cowrie/test/test_protocol_keystroke.py | 6 | CODE | |
| LOW | src/cowrie/test/test_pool_config.py | 8 | CODE | |
| LOW | src/cowrie/test/test_greynoise.py | 8 | CODE | |
| LOW | src/cowrie/test/test_utils.py | 5 | CODE | |
| LOW | src/cowrie/test/test_download.py | 8 | CODE | |
| LOW | src/cowrie/test/test_cut.py | 4 | CODE | |
| LOW | src/cowrie/test/fake_transport.py | 6 | CODE | |
| LOW | src/cowrie/test/test_exec_shell_stdin.py | 8 | CODE | |
| LOW | src/cowrie/test/test_output_socketlog.py | 8 | CODE | |
| LOW | src/cowrie/test/test_proxy_packet_buffer.py | 8 | CODE | |
| LOW | src/cowrie/test/test_kafka.py | 8 | CODE | |
| LOW | src/cowrie/test/test_insults_events.py | 8 | CODE | |
| LOW | src/cowrie/test/test_output_lifecycle.py | 8 | CODE | |
| LOW | src/cowrie/test/test_session_duration.py | 8 | CODE | |
| LOW | src/cowrie/test/test_ftpget.py | 5 | CODE | |
| LOW | src/cowrie/test/test_ftpget.py | 41 | CODE | |
| LOW | src/cowrie/test/test_llm.py | 8 | CODE | |
| LOW | src/cowrie/test/test_awk.py | 4 | CODE | |
| LOW | src/cowrie/test/test_output_sql_parity.py | 8 | CODE | |
| LOW | src/cowrie/test/test_output_sql_parity.py | 29 | CODE | |
| 258 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | .github/scripts/advanced-honeypot-tests.py | 167 | except Exception as e: | CODE |
| LOW⚡ | .github/scripts/advanced-honeypot-tests.py | 218 | except Exception as e: | CODE |
| LOW | .github/scripts/advanced-honeypot-tests.py | 62 | except Exception as e: | CODE |
| LOW | .github/scripts/advanced-honeypot-tests.py | 88 | except Exception as e: | CODE |
| LOW | .github/scripts/advanced-honeypot-tests.py | 112 | except Exception as e: | CODE |
| LOW | .github/scripts/advanced-honeypot-tests.py | 139 | except Exception as e: | CODE |
| LOW | .github/scripts/advanced-honeypot-tests.py | 192 | except Exception as e: | CODE |
| LOW | .github/scripts/advanced-honeypot-tests.py | 258 | except Exception as e: | CODE |
| LOW | src/cowrie/llm/telnet.py | 76 | except Exception: | CODE |
| LOW | src/cowrie/llm/protocol.py | 159 | except Exception: | CODE |
| LOW | src/cowrie/core/auth.py | 185 | except Exception: | CODE |
| LOW | src/cowrie/core/fingerprint.py | 153 | except Exception as e: | CODE |
| LOW | src/cowrie/core/fingerprint.py | 227 | except Exception as e: | CODE |
| LOW | src/cowrie/core/events.py | 124 | except Exception as e: # one sink must not stop the rest | CODE |
| LOW | src/cowrie/core/network.py | 171 | except Exception as e: | CODE |
| LOW | src/cowrie/core/output.py | 142 | except Exception: | CODE |
| LOW | src/cowrie/shell/protocol.py | 132 | except Exception: | CODE |
| LOW | src/cowrie/shell/protocol.py | 147 | except Exception: | CODE |
| LOW | src/cowrie/shell/protocol.py | 499 | except Exception: | CODE |
| MEDIUM | src/cowrie/shell/protocol.py | 496 | def displayMOTD(self) -> None: | CODE |
| LOW | src/cowrie/shell/pwd.py | 39 | except Exception: | CODE |
| LOW | src/cowrie/shell/pwd.py | 153 | except Exception: | CODE |
| LOW | src/cowrie/shell/fs.py | 131 | except Exception: | CODE |
| LOW | src/cowrie/shell/fs.py | 159 | except Exception as e: | CODE |
| LOW | src/cowrie/shell/fs.py | 429 | except Exception: | CODE |
| LOW | src/cowrie/shell/fs.py | 444 | except Exception: | CODE |
| LOW | src/cowrie/shell/fs.py | 461 | except Exception: | CODE |
| LOW | src/cowrie/shell/pipe.py | 280 | except Exception: | CODE |
| LOW | src/cowrie/shell/honeypot.py | 1183 | except Exception: | CODE |
| LOW | src/cowrie/output/postgresql.py | 76 | except Exception as e: | CODE |
| MEDIUM | src/cowrie/output/postgresql.py | 26 | def _runInteraction(self, interaction, *args, **kw): | CODE |
| LOW | src/cowrie/output/dshield.py | 215 | except Exception as e: | CODE |
| LOW | src/cowrie/output/cuckoo.py | 117 | except Exception as e: | CODE |
| LOW | src/cowrie/output/cuckoo.py | 146 | except Exception as e: | CODE |
| LOW | src/cowrie/output/cuckoo.py | 173 | except Exception as e: | CODE |
| LOW | src/cowrie/output/abuseipdb.py | 392 | except Exception as e: | CODE |
| LOW | src/cowrie/output/abuseipdb.py | 408 | except Exception: | CODE |
| MEDIUM | src/cowrie/output/abuseipdb.py | 383 | def http_request(self, params): | CODE |
| LOW | src/cowrie/output/rethinkdblog.py | 101 | except Exception: | CODE |
| LOW | src/cowrie/output/influx.py | 52 | except Exception: | CODE |
| LOW | src/cowrie/output/discord.py | 123 | except Exception: | CODE |
| LOW⚡ | src/cowrie/output/discord.py | 207 | except Exception: | CODE |
| LOW⚡ | src/cowrie/output/discord.py | 212 | except Exception: | CODE |
| LOW⚡ | src/cowrie/output/discord.py | 216 | except Exception: | CODE |
| LOW | src/cowrie/output/misp.py | 307 | except Exception as e: | CODE |
| LOW | src/cowrie/output/prometheus.py | 149 | except Exception as e: | CODE |
| LOW | src/cowrie/output/kafka.py | 105 | except Exception as e: | CODE |
| LOW | src/cowrie/output/kafka.py | 137 | except Exception as e: | CODE |
| LOW | src/cowrie/output/kafka.py | 176 | except Exception as e: | CODE |
| LOW | src/cowrie/output/axiom.py | 68 | except Exception as e: | CODE |
| LOW | src/cowrie/output/malshare.py | 86 | except Exception as e: | CODE |
| LOW | src/cowrie/output/oraclecloud.py | 71 | except Exception as ex: | CODE |
| LOW | src/cowrie/output/mysql.py | 90 | except Exception as e: | CODE |
| MEDIUM | src/cowrie/output/mysql.py | 41 | def _runInteraction(self, interaction, *args, **kw): | CODE |
| LOW | src/cowrie/ssh_proxy/protocols/port_forward.py | 54 | except Exception as e: | CODE |
| LOW | src/cowrie/ssh_proxy/protocols/port_forward.py | 83 | except Exception as e: | CODE |
| LOW | src/cowrie/ssh/forwarding.py | 156 | except Exception as e: | CODE |
| LOW | src/cowrie/ssh/forwarding.py | 184 | except Exception as e: | CODE |
| LOW | src/cowrie/ssh/forwarding.py | 251 | except Exception as e: | CODE |
| LOW | src/cowrie/ssh/forwarding.py | 281 | except Exception as e: | CODE |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/cowrie/core/artifact.py | 94 | except FileNotFoundError: | CODE |
| HIGH | src/cowrie/core/uuid.py | 52 | except FileNotFoundError: | CODE |
| HIGH | src/cowrie/test/fake_transport.py | 133 | except KeyError: | CODE |
| HIGH | src/cowrie/shell/protocol.py | 257 | except FileNotFoundError: | CODE |
| HIGH | src/cowrie/shell/protocol.py | 499 | except Exception: | CODE |
| HIGH | src/cowrie/output/abuseipdb.py | 107 | except UnboundLocalError: | CODE |
| HIGH | src/cowrie/output/abuseipdb.py | 265 | except AttributeError: | CODE |
| HIGH | src/cowrie/output/rethinkdblog.py | 96 | except ReqlOpFailedError: | CODE |
| HIGH | src/cowrie/ssh_proxy/server_transport.py | 404 | except AttributeError: | CODE |
| HIGH | src/cowrie/ssh/factory.py | 93 | except OSError: | CODE |
| HIGH | src/cowrie/scripts/createdynamicprocess.py | 37 | except psutil.NoSuchProcess: | CODE |
| HIGH | src/cowrie/commands/sed.py | 746 | except fs.FileNotFound: | CODE |
| HIGH | src/cowrie/commands/printf.py | 117 | except _Stop: | CODE |
| HIGH | src/cowrie/commands/free.py | 114 | except Exception: | CODE |
| HIGH | src/cowrie/commands/ftpget.py | 130 | except ValueError: | CODE |
| HIGH | src/cowrie/commands/tftp.py | 456 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| HIGH | src/cowrie/commands/tftp.py | 531 | except ValueError: | CODE |
| HIGH | src/cowrie/commands/base.py | 930 | except Exception: | CODE |
| HIGH | src/cowrie/commands/wget.py | 219 | except Exception: | CODE |
| HIGH | src/cowrie/insults/insults.py | 242 | except OSError: | CODE |
| HIGH | src/backend_pool/libvirt/backend_service.py | 171 | except KeyboardInterrupt: | CODE |
| HIGH | src/backend_pool/libvirt/snapshot_handler.py | 16 | except PermissionError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/cowrie/core/auth.py | 197 | CODE | |
| LOW | src/cowrie/core/fingerprint.py | 39 | CODE | |
| LOW | src/cowrie/core/fingerprint.py | 167 | CODE | |
| LOW | src/cowrie/core/network.py | 133 | CODE | |
| LOW | src/cowrie/test/test_output_mongodb.py | 91 | CODE | |
| LOW | src/cowrie/test/test_output_rmq.py | 99 | CODE | |
| LOW | src/cowrie/shell/protocol.py | 407 | CODE | |
| LOW | src/cowrie/shell/bashparse.py | 640 | CODE | |
| LOW | src/cowrie/shell/bashparse.py | 1102 | CODE | |
| LOW | src/cowrie/shell/bashparse.py | 1153 | CODE | |
| LOW | src/cowrie/shell/fs.py | 263 | CODE | |
| LOW | src/cowrie/shell/pipe.py | 102 | CODE | |
| LOW | src/cowrie/shell/pipe.py | 328 | CODE | |
| LOW | src/cowrie/shell/honeypot.py | 448 | CODE | |
| LOW | src/cowrie/shell/honeypot.py | 503 | CODE | |
| LOW | src/cowrie/shell/honeypot.py | 675 | CODE | |
| LOW | src/cowrie/shell/honeypot.py | 817 | CODE | |
| LOW | src/cowrie/shell/honeypot.py | 1151 | CODE | |
| LOW | src/cowrie/output/postgresql.py | 109 | CODE | |
| LOW | src/cowrie/output/dshield.py | 96 | CODE | |
| LOW | src/cowrie/output/abuseipdb.py | 45 | CODE | |
| LOW | src/cowrie/output/abuseipdb.py | 142 | CODE | |
| LOW | src/cowrie/output/influx.py | 113 | CODE | |
| LOW | src/cowrie/output/misp.py | 93 | CODE | |
| LOW | src/cowrie/output/misp.py | 310 | CODE | |
| LOW | src/cowrie/output/sqlite.py | 70 | CODE | |
| LOW | src/cowrie/output/prometheus.py | 118 | CODE | |
| LOW | src/cowrie/output/hpfeeds3.py | 60 | CODE | |
| LOW | src/cowrie/output/mysql.py | 122 | CODE | |
| LOW | src/cowrie/ssh_proxy/protocols/term.py | 74 | CODE | |
| LOW | src/cowrie/ssh_proxy/protocols/port_forward.py | 29 | CODE | |
| LOW | src/cowrie/ssh_proxy/protocols/sftp.py | 109 | CODE | |
| LOW | src/cowrie/ssh_proxy/protocols/ssh.py | 93 | CODE | |
| LOW | src/cowrie/ssh/forwarding.py | 131 | CODE | |
| LOW | src/cowrie/ssh/forwarding.py | 226 | CODE | |
| LOW | src/cowrie/ssh/userauth.py | 174 | CODE | |
| LOW | src/cowrie/ssh/factory.py | 61 | CODE | |
| LOW | src/cowrie/scripts/playlog.py | 18 | CODE | |
| LOW | src/cowrie/scripts/playlog.py | 104 | CODE | |
| LOW | src/cowrie/scripts/fsctl.py | 810 | CODE | |
| LOW | src/cowrie/scripts/createfs.py | 95 | CODE | |
| LOW | src/cowrie/scripts/createfs.py | 193 | CODE | |
| LOW | src/cowrie/scripts/cowrie.py | 287 | CODE | |
| LOW | src/cowrie/scripts/asciinema.py | 21 | CODE | |
| LOW | src/cowrie/commands/uname.py | 84 | CODE | |
| LOW | src/cowrie/commands/git.py | 20 | CODE | |
| LOW | src/cowrie/commands/wc.py | 74 | CODE | |
| LOW | src/cowrie/commands/tee.py | 37 | CODE | |
| LOW | src/cowrie/commands/base64.py | 29 | CODE | |
| LOW | src/cowrie/commands/curl.py | 219 | CODE | |
| LOW | src/cowrie/commands/curl.py | 487 | CODE | |
| LOW | src/cowrie/commands/chmod.py | 81 | CODE | |
| LOW | src/cowrie/commands/sed.py | 92 | CODE | |
| LOW | src/cowrie/commands/sed.py | 414 | CODE | |
| LOW | src/cowrie/commands/sed.py | 428 | CODE | |
| LOW | src/cowrie/commands/sed.py | 242 | CODE | |
| LOW | src/cowrie/commands/sed.py | 341 | CODE | |
| LOW | src/cowrie/commands/sed.py | 474 | CODE | |
| LOW | src/cowrie/commands/sed.py | 612 | CODE | |
| LOW | src/cowrie/commands/sed.py | 673 | CODE | |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/cowrie/test/test_output_postgresql.py | 0 | construct the plugin without running its config-reading start(). | STRING |
| HIGH | src/cowrie/test/test_output_sqlite.py | 0 | construct the plugin without running its config-reading start(). | STRING |
| HIGH | src/cowrie/test/test_output_mysql.py | 0 | construct the plugin without running its config-reading start(). | STRING |
| HIGH | src/cowrie/test/test_output_slack.py | 0 | construct the plugin without running its config-reading start(). | STRING |
| HIGH | src/cowrie/test/test_output_postgresql.py | 0 | stop() must not raise when start() never created the pool. | STRING |
| HIGH | src/cowrie/test/test_output_sqlite.py | 0 | stop() must not raise when start() never created the pool. | STRING |
| HIGH | src/cowrie/test/test_output_mysql.py | 0 | stop() must not raise when start() never created the pool. | STRING |
| HIGH | src/cowrie/test/test_output_mongodb.py | 0 | stop() must not raise when start() never connected. | STRING |
| HIGH | src/cowrie/test/test_output_rethinkdblog.py | 0 | stop() must not raise when start() never connected. | STRING |
| HIGH | src/cowrie/test/test_output_redis.py | 0 | stop() must not raise when start() never connected. | STRING |
| HIGH | src/cowrie/ssh_proxy/client_transport.py | 0 | make sure all sessions time out eventually. timeout is reset when authentication succeeds. | STRING |
| HIGH | src/cowrie/ssh_proxy/server_transport.py | 0 | make sure all sessions time out eventually. timeout is reset when authentication succeeds. | STRING |
| HIGH | src/cowrie/ssh/transport.py | 0 | make sure all sessions time out eventually. timeout is reset when authentication succeeds. | STRING |
| HIGH | src/cowrie/telnet_proxy/client_transport.py | 0 | make sure all sessions time out eventually. timeout is reset when authentication succeeds. | STRING |
| HIGH | src/cowrie/telnet_proxy/server_transport.py | 0 | make sure all sessions time out eventually. timeout is reset when authentication succeeds. | STRING |
| HIGH | src/cowrie/telnet/transport.py | 0 | make sure all sessions time out eventually. timeout is reset when authentication succeeds. | STRING |
| HIGH | src/cowrie/telnet_proxy/server_transport.py | 0 | telnet transport and authentication for the honeypot @author: olivier bilodeau <obilodeau@gosecure.ca> | STRING |
| HIGH | src/cowrie/telnet/transport.py | 0 | telnet transport and authentication for the honeypot @author: olivier bilodeau <obilodeau@gosecure.ca> | STRING |
| HIGH | src/cowrie/telnet/userauth.py | 0 | telnet transport and authentication for the honeypot @author: olivier bilodeau <obilodeau@gosecure.ca> | STRING |
| HIGH | src/cowrie/telnet/factory.py | 0 | telnet transport and authentication for the honeypot @author: olivier bilodeau <obilodeau@gosecure.ca> | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements-output.txt | 1 | # SPDX-FileCopyrightText: 2017 lelonek1 <lelonek1@umbc.edu> | COMMENT |
| LOW | bin/build-fs-pickle.sh | 1 | #!/bin/sh | COMMENT |
| LOW | docs/conf.py | 1 | # SPDX-FileCopyrightText: 2019-2025 Michel Oosterhof <michel@oosterhof.net> | COMMENT |
| LOW | docs/conf.py | 61 | # Add any paths that contain templates here, relative to this directory. | COMMENT |
| LOW | docs/conf.py | 81 | # directories to ignore when looking for source files. | COMMENT |
| LOW | docs/conf.py | 101 | COMMENT | |
| LOW | docs/conf.py | 121 | htmlhelp_basename = "cowriedoc" | COMMENT |
| LOW | src/cowrie/llm/__init__.py | 1 | # SPDX-FileCopyrightText: 2025 Michel Oosterhof <michel@oosterhof.net> | COMMENT |
| LOW | src/cowrie/core/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/core/ocsf.py | 1 | # SPDX-FileCopyrightText: 2026 JustSamAgain justsamagain@proton.me | COMMENT |
| LOW | src/cowrie/test/fake_transport.py | 101 | protocol="test", | COMMENT |
| LOW | src/cowrie/test/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/python/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/shell/command.py | 41 | # already exited (a download completing after an abort) checks this so a | COMMENT |
| LOW | src/cowrie/shell/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/shell/bashparse.py | 81 | COMMENT | |
| LOW | src/cowrie/shell/bashparse.py | 101 | # test_bashparse asserts it with an explicit-ambiguity parse of sample lines. | COMMENT |
| LOW | src/cowrie/shell/bashparse.py | 121 | // A function definition's "()" is one token, so "f()", "f ()" and "f ( )" | COMMENT |
| LOW | src/cowrie/shell/pipe.py | 61 | # command: redirection targets resolve against the cwd, and the files | COMMENT |
| LOW | src/cowrie/shell/honeypot.py | 101 | # subshell stays a single unit here so its &&/|| gate covers the whole | COMMENT |
| LOW | src/cowrie/shell/honeypot.py | 141 | self.bashparser = BashParser(self) | COMMENT |
| LOW | src/cowrie/shell/honeypot.py | 181 | # child captures its stdout. ``done`` fires with the finished child | COMMENT |
| LOW | src/cowrie/output/telegram.py | 41 | def write(self, event): | COMMENT |
| LOW | src/cowrie/pool_interface/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/ssh_proxy/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/ssh_proxy/protocols/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/ssh_proxy/protocols/sftp.py | 21 | # # ['uint32', 'version'], [['string', 'extension_name'], ['string', 'extension_data']]] | COMMENT |
| LOW | src/cowrie/ssh_proxy/protocols/sftp.py | 41 | # 18: "SSH_FXP_RENAME", # [['uint32', 'id'], ['string', 'oldpath'], ['string', 'newpath']] | COMMENT |
| LOW | src/cowrie/ssh_proxy/protocols/ssh.py | 41 | # 21: "SSH_MSG_NEWKEYS", | COMMENT |
| LOW | src/cowrie/ssh/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/scripts/dumpfs.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | src/cowrie/scripts/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/scripts/fsctl.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | src/cowrie/scripts/createfs.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | src/cowrie/telnet_proxy/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/telnet/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/cowrie/insults/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/backend_pool/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| LOW | src/backend_pool/libvirt/__init__.py | 1 | # SPDX-FileCopyrightText: 2009 Upi Tamminen <desaster@gmail.com> | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/fingerprint.yml | 76 | # Check if container is running | COMMENT |
| LOW | .github/workflows/fingerprint.yml | 233 | # Check if advanced tests detected honeypot | COMMENT |
| LOW⚡ | .github/scripts/advanced-honeypot-tests.py | 162 | # Check if all commands execute too quickly (< 10ms) | COMMENT |
| LOW⚡ | .github/scripts/advanced-honeypot-tests.py | 179 | # Check if common binaries exist and have reasonable sizes | COMMENT |
| LOW⚡ | .github/scripts/advanced-honeypot-tests.py | 209 | # Check if it shows the SSH connection we're using | COMMENT |
| LOW | .github/scripts/advanced-honeypot-tests.py | 57 | # Check if ping actually works (Cowrie simulates it) | COMMENT |
| LOW | .github/scripts/advanced-honeypot-tests.py | 124 | # Check if /proc/self/exe exists and is valid | COMMENT |
| LOW | .github/scripts/advanced-honeypot-tests.py | 264 | # Print results | COMMENT |
| LOW | src/cowrie/core/auth.py | 220 | # Check if it is the first visit from src_ip | COMMENT |
| LOW | src/cowrie/core/auth.py | 275 | # Check if enough login attempts are tried | COMMENT |
| LOW | src/cowrie/core/checkers.py | 148 | # Check if authclass exists in the auth module, fall back to UserDB | COMMENT |
| LOW | src/cowrie/output/abuseipdb.py | 157 | # Check if reported IP is ready for re-reporting | COMMENT |
| LOW | src/cowrie/output/virustotal.py | 440 | # Check if URL has been scanned | COMMENT |
| LOW | src/cowrie/output/slack.py | 142 | # Check if we have a handler for this event | COMMENT |
| LOW | src/cowrie/scripts/cowrie.py | 132 | # Check if already running | COMMENT |
| LOW | src/cowrie/commands/tftp.py | 204 | # Check if this is the expected block | COMMENT |
| LOW | src/cowrie/commands/tftp.py | 235 | # Check if this is the last packet (< 512 bytes of data) | COMMENT |
| LOW | src/cowrie/commands/tftp.py | 505 | # Check if this is a cancellation (from CTRL-C) | COMMENT |
| LOW | src/cowrie/commands/sleep.py | 70 | # Check if the error was caused by a long option (--option) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/cowrie/test/fake_transport.py | 23 | """This class is placeholder for creating a fake interface. | STRING |
| MEDIUM | src/cowrie/test/test_telnet_transport.py | 61 | # Create a failure with AlreadyNegotiating | COMMENT |
| MEDIUM | src/cowrie/test/test_telnet_transport.py | 81 | # Create a failure with AlreadyNegotiating | COMMENT |
| MEDIUM | src/cowrie/test/test_telnet_transport.py | 99 | # Create a mock Deferred for onResult | COMMENT |
| MEDIUM | src/cowrie/test/test_virustotal.py | 102 | # Create a temporary file for testing | COMMENT |
| MEDIUM | src/cowrie/shell/honeypot.py | 837 | # Defining a function records its body and succeeds. | COMMENT |
| MEDIUM | src/cowrie/output/misp.py | 257 | # Create a comprehensive session event if there's activity worth reporting | COMMENT |
| MEDIUM | src/cowrie/commands/ls.py | 141 | # Create a list to hold formatted sizes for display | COMMENT |
| MEDIUM | src/cowrie/commands/su.py | 155 | # Create a non-interactive shell running as the target user. The | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/cowrie/llm/session.py | 42 | self.avatar.conn.transport.events.dispatch( | CODE |
| CRITICAL | src/cowrie/shell/session.py | 99 | self.avatar.conn.transport.events.dispatch( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/cowrie/shell/honeypot.py | 961 | # Probably no reason to be this comprehensive for just PATH... | COMMENT |
| MEDIUM | src/cowrie/output/misp.py | 68 | # Session tracking for comprehensive session events | COMMENT |
| MEDIUM | src/cowrie/output/misp.py | 238 | # When a session closes, create a comprehensive event | COMMENT |
| MEDIUM | src/cowrie/output/misp.py | 257 | # Create a comprehensive session event if there's activity worth reporting | COMMENT |
| MEDIUM | src/cowrie/output/misp.py | 577 | # Add comprehensive text summary | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/cowrie/output/discord.py | 32 | # ----------------- | COMMENT |
| MEDIUM | src/cowrie/output/discord.py | 34 | # ----------------- | COMMENT |
| MEDIUM | src/cowrie/output/prometheus.py | 26 | # ──────────────────────────────────────────── | COMMENT |
| MEDIUM | src/cowrie/output/prometheus.py | 28 | # ──────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/advanced-honeypot-tests.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/cowrie/test/test_temp_file_naming.py | 41 | def update_realfile(self, f: list, realfile: str) -> None: | CODE |
| LOW | src/cowrie/test/test_honeyfs.py | 188 | def _set_contents_path(self, path: str) -> None: | CODE |
| LOW | src/cowrie/shell/command.py | 125 | def set_input_data(self, data: bytes) -> None: | CODE |
| LOW | src/cowrie/shell/fs.py | 251 | def update_realfile(self, f: Node | None, realfile: str) -> None: | CODE |
| LOW | src/cowrie/shell/fs.py | 659 | def update_size(self, filename: str, size: int) -> None: | CODE |
| LOW | src/cowrie/shell/pipe.py | 102 | def _setup_redirections(self) -> None: | CODE |
| LOW | src/cowrie/output/rmq.py | 106 | def _setup_failed(self, reason: Failure, connection: Any) -> None: | CODE |
| LOW | src/cowrie/output/mongodb.py | 93 | def update_session(self, session: str, fields: dict[str, Any]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/cowrie/scripts/dumpfs.py | 11 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/cowrie/shell/customparser.py | 28 | CODE |