The cryptography-based networking stack for building unstoppable networks with LoRa, Packet Radio, WiFi and everything in between.
This report summarizes scanner evidence for markqvist/Reticulum, a Python project with 7,505 GitHub stars. SynthScan examined 116,858 lines of code across 213 source files, recording 1895 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 18.2 (Elevated 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? 801 finding(s).
Are imports declared and package/API names verified? 139 finding(s).
Are wrappers, guards, and repeated structures necessary? 1113 finding(s).
Which changes need focused human review? 1895 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 1895 distinct pattern matches across 19 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 | setup.py | 126 | except Exception: pass | CODE |
| MEDIUM | CRNS/__init__.py | 83 | def _save_unbuildable(self): | CODE |
| MEDIUM | CRNS/__init__.py | 89 | def _mark_unbuildable(self, fullname, source): | CODE |
| LOW | CRNS/__init__.py | 39 | except Exception as e: | CODE |
| LOW⚡ | CRNS/__init__.py | 63 | except Exception: self.unbuildable = {} | STRING |
| LOW⚡ | CRNS/__init__.py | 74 | except Exception: pass | STRING |
| LOW⚡ | CRNS/__init__.py | 81 | except Exception: pass | STRING |
| LOW⚡ | CRNS/__init__.py | 87 | except Exception: pass | STRING |
| LOW⚡ | CRNS/__init__.py | 93 | except Exception: pass | STRING |
| LOW | CRNS/__init__.py | 104 | except Exception: pass | STRING |
| LOW | CRNS/__init__.py | 155 | except Exception: return False | STRING |
| LOW | CRNS/__init__.py | 224 | except Exception: results = {} | STRING |
| LOW | CRNS/__init__.py | 239 | except Exception as e: | STRING |
| LOW | CRNS/__init__.py | 257 | except Exception as e: | STRING |
| LOW | tests/link.py | 41 | except Exception as e: | CODE |
| LOW | tests/link.py | 834 | except Exception as e: | CODE |
| MEDIUM | tests/link.py | 835 | print("Error: "+str(e)) | CODE |
| LOW | tests/coalesced_transmit.py | 376 | except Exception as e: | CODE |
| MEDIUM | tests/coalesced_transmit.py | 373 | def producer(): | CODE |
| LOW | tests/hkdf.py | 132 | except Exception as e: return (type(e).__name__, str(e)) | CODE |
| MEDIUM | tests/hkdf.py | 128 | def raised_exception(fn, kwargs): | CODE |
| LOW | docs/clean_md.py | 90 | except Exception as e: | CODE |
| MEDIUM | docs/clean_md.py | 91 | print(f"Error processing {filepath}: {e}", file=sys.stderr) | CODE |
| MEDIUM | docs/clean_md.py | 112 | print(f"Error: '{directory}' is not a valid directory", file=sys.stderr) | CODE |
| MEDIUM | docs/clean_md.py | 76 | def process_file(filepath, start_patterns, any_patterns): | CODE |
| MEDIUM | docs/markdown/examples.md | 3218 | def read_loop(self): | CODE |
| LOW | docs/markdown/examples.md | 554 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 960 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 1278 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 1567 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 1961 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 2287 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 2533 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 2550 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 3143 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 3256 | except Exception as e: | CODE |
| LOW | docs/markdown/examples.md | 3279 | except Exception as e: | CODE |
| LOW | Examples/Link.py | 198 | except Exception as e: | CODE |
| LOW | Examples/Channel.py | 292 | except Exception as e: | CODE |
| LOW | Examples/Request.py | 189 | except Exception as e: | CODE |
| LOW⚡ | Examples/Resource.py | 206 | except Exception as e: | CODE |
| LOW | Examples/Filetransfer.py | 141 | except Exception as e: | CODE |
| LOW | Examples/Filetransfer.py | 158 | except Exception as e: | CODE |
| LOW | Examples/Ratchets.py | 139 | except Exception as e: | CODE |
| LOW | Examples/ExampleInterface.py | 142 | except Exception as e: | CODE |
| LOW | Examples/ExampleInterface.py | 256 | except Exception as e: | CODE |
| LOW | Examples/ExampleInterface.py | 279 | except Exception as e: | CODE |
| MEDIUM | Examples/ExampleInterface.py | 218 | def read_loop(self): | CODE |
| LOW | Examples/Buffer.py | 225 | except Exception as e: | CODE |
| LOW | Examples/Identify.py | 219 | except Exception as e: | CODE |
| LOW | Examples/Echo.py | 131 | except Exception as e: | CODE |
| MEDIUM | RNS/Link.py | 391 | def validate_proof(self, packet): | CODE |
| MEDIUM | RNS/Link.py | 516 | def rtt_packet(self, packet): | CODE |
| MEDIUM | RNS/Link.py | 674 | def teardown_packet(self, packet): | CODE |
| MEDIUM | RNS/Link.py | 1166 | def encrypt(self, plaintext): | CODE |
| MEDIUM | RNS/Link.py | 1180 | def decrypt(self, ciphertext): | CODE |
| MEDIUM | RNS/Link.py | 1192 | def validate(self, signature, message): | CODE |
| LOW⚡ | RNS/Link.py | 1170 | except Exception as e: | CODE |
| LOW⚡ | RNS/Link.py | 1176 | except Exception as e: | CODE |
| LOW⚡ | RNS/Link.py | 1185 | except Exception as e: | CODE |
| 811 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | setup.py | 126 | except Exception: pass | CODE |
| HIGH | CRNS/__init__.py | 74 | except Exception: pass | CODE |
| HIGH | CRNS/__init__.py | 87 | except Exception: pass | CODE |
| HIGH | CRNS/__init__.py | 93 | except Exception: pass | CODE |
| HIGH | CRNS/__init__.py | 104 | except Exception: pass | CODE |
| HIGH | CRNS/__init__.py | 81 | except Exception: pass | CODE |
| HIGH | Examples/Filetransfer.py | 331 | except: | CODE |
| HIGH | RNS/Link.py | 683 | except Exception as e: pass | CODE |
| HIGH | RNS/__init__.py | 134 | except: pass | CODE |
| HIGH | RNS/Identity.py | 881 | except Exception as e: | CODE |
| HIGH | RNS/Cryptography/Provider.py | 55 | except Exception as e: | CODE |
| HIGH | RNS/Cryptography/X25519.py | 168 | except Exception as e: | CODE |
| HIGH | RNS/Utilities/rnid.py | 219 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 403 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 405 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 407 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 409 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 292 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 307 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 315 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 299 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 331 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 346 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 354 | except: pass | CODE |
| HIGH | RNS/Utilities/rnid.py | 338 | except: pass | CODE |
| HIGH | RNS/Utilities/rnstatus.py | 400 | except Exception as e: pass | CODE |
| HIGH | RNS/Utilities/rnstatus.py | 391 | except Exception as e: pass | CODE |
| HIGH | RNS/Utilities/rnstatus.py | 393 | except Exception as e: pass | CODE |
| HIGH | RNS/Utilities/rnstatus.py | 397 | except Exception as e: pass | CODE |
| HIGH | RNS/Utilities/rnstatus.py | 309 | except Exception as e: pass | CODE |
| HIGH | RNS/Utilities/rnstatus.py | 358 | except Exception as e: | CODE |
| HIGH | RNS/Utilities/rnstatus.py | 578 | except: | CODE |
| HIGH | RNS/Utilities/rnodeconf.py | 3884 | except Exception as e: | CODE |
| HIGH | RNS/Utilities/rnodeconf.py | 1166 | except Exception as e: | CODE |
| HIGH | RNS/Utilities/rnx.py | 536 | except Exception as e: | CODE |
| HIGH | RNS/Utilities/rnx.py | 203 | except subprocess.TimeoutExpired: | CODE |
| HIGH | RNS/Utilities/rngit/server.py | 3328 | except: pass | CODE |
| HIGH | RNS/Utilities/rngit/server.py | 3538 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/server.py | 4749 | except (ValueError, TypeError): pass | CODE |
| HIGH | RNS/Utilities/rngit/server.py | 3446 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/media.py | 82 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/media.py | 84 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/media.py | 116 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/media.py | 134 | except (ValueError, TypeError): pass | CODE |
| HIGH | RNS/Utilities/rngit/media.py | 137 | except (ValueError, TypeError): pass | CODE |
| HIGH | RNS/Utilities/rngit/client.py | 417 | except BrokenPipeError: pass | CODE |
| HIGH | RNS/Utilities/rngit/pages.py | 1134 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/pages.py | 2319 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/pages.py | 2163 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/pages.py | 2370 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/pages.py | 1953 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rngit/highlight.py | 187 | except ClassNotFound: pass | CODE |
| HIGH | RNS/Utilities/rngit/highlight.py | 191 | except ClassNotFound: pass | CODE |
| HIGH | RNS/Utilities/rngit/highlight.py | 196 | except ClassNotFound: pass | CODE |
| HIGH | RNS/Utilities/rnsh/rnsh.py | 179 | except SystemExit: pass | CODE |
| HIGH | RNS/Utilities/rnsh/rnsh.py | 180 | except KeyboardInterrupt: pass | CODE |
| HIGH | RNS/Utilities/rnsh/initiator.py | 338 | except: | CODE |
| HIGH | RNS/Utilities/rnsh/process.py | 579 | except Exception: pass | CODE |
| HIGH | RNS/Utilities/rnsh/process.py | 406 | except Exception: | CODE |
| HIGH | RNS/Utilities/rnsh/process.py | 414 | except Exception: | CODE |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 116 | CODE | |
| LOW | CRNS/__init__.py | 165 | CODE | |
| LOW | tests/throughput.py | 505 | CODE | |
| LOW | tests/throughput.py | 546 | CODE | |
| LOW | tests/channel.py | 37 | CODE | |
| LOW | tests/channel.py | 448 | CODE | |
| LOW | tests/channel.py | 41 | CODE | |
| LOW | tests/coalesced_transmit.py | 19 | CODE | |
| LOW | tests/hkdf.py | 66 | CODE | |
| LOW | tests/hdlc.py | 24 | CODE | |
| LOW | tests/hdlc.py | 174 | CODE | |
| LOW | tests/ifac.py | 38 | CODE | |
| LOW | tests/ifac.py | 188 | CODE | |
| LOW | docs/clean_md.py | 39 | CODE | |
| LOW | Examples/Link.py | 167 | CODE | |
| LOW | Examples/Channel.py | 255 | CODE | |
| LOW | Examples/Filetransfer.py | 302 | CODE | |
| LOW | Examples/Filetransfer.py | 342 | CODE | |
| LOW | Examples/Ratchets.py | 228 | CODE | |
| LOW | Examples/ExampleInterface.py | 218 | CODE | |
| LOW | Examples/Identify.py | 188 | CODE | |
| LOW | Examples/Echo.py | 219 | CODE | |
| LOW | RNS/Link.py | 186 | CODE | |
| LOW | RNS/Link.py | 391 | CODE | |
| LOW | RNS/Link.py | 516 | CODE | |
| LOW | RNS/Link.py | 712 | CODE | |
| LOW | RNS/Link.py | 804 | CODE | |
| LOW | RNS/Link.py | 857 | CODE | |
| LOW | RNS/Link.py | 937 | CODE | |
| LOW | RNS/Link.py | 1417 | CODE | |
| LOW | RNS/Destination.py | 244 | CODE | |
| LOW | RNS/Destination.py | 414 | CODE | |
| LOW | RNS/Destination.py | 437 | CODE | |
| LOW | RNS/Destination.py | 622 | CODE | |
| LOW | RNS/Discovery.py | 107 | CODE | |
| LOW | RNS/Discovery.py | 136 | CODE | |
| LOW | RNS/Discovery.py | 290 | CODE | |
| LOW | RNS/Discovery.py | 525 | CODE | |
| LOW | RNS/Discovery.py | 587 | CODE | |
| LOW | RNS/Discovery.py | 660 | CODE | |
| LOW | RNS/Discovery.py | 734 | CODE | |
| LOW | RNS/Discovery.py | 792 | CODE | |
| LOW | RNS/Discovery.py | 904 | CODE | |
| LOW | RNS/Discovery.py | 939 | CODE | |
| LOW | RNS/Transport.py | 70 | CODE | |
| LOW | RNS/Transport.py | 307 | CODE | |
| LOW | RNS/Transport.py | 591 | CODE | |
| LOW | RNS/Transport.py | 685 | CODE | |
| LOW | RNS/Transport.py | 1247 | CODE | |
| LOW | RNS/Transport.py | 1353 | CODE | |
| LOW | RNS/Transport.py | 1624 | CODE | |
| LOW | RNS/Transport.py | 1753 | CODE | |
| LOW | RNS/Transport.py | 1914 | CODE | |
| LOW | RNS/Transport.py | 2820 | CODE | |
| LOW | RNS/Transport.py | 2877 | CODE | |
| LOW | RNS/Transport.py | 2898 | CODE | |
| LOW | RNS/Transport.py | 3005 | CODE | |
| LOW | RNS/Transport.py | 3070 | CODE | |
| LOW | RNS/Transport.py | 3325 | CODE | |
| LOW | RNS/Transport.py | 3346 | CODE | |
| 266 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/throughput.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tests/throughput.py | 901 | # ---------------------------------------------------------------------- | COMMENT |
| LOW | tests/throughput.py | 921 | # transit_single_135 247,667 162,090 267.48 Mbps / 175.06 Mbps | COMMENT |
| LOW | tests/throughput.py | 941 | # ---------------------------------------------------------------------- | COMMENT |
| LOW | docs/markdown/examples.md | 21 | # destinations we create. Since this basic example | COMMENT |
| LOW | docs/markdown/examples.md | 581 | # Let's first check if RNS knows a path to the destination. | COMMENT |
| LOW | docs/markdown/examples.md | 781 | ########################################################## | COMMENT |
| LOW | docs/markdown/examples.md | 1061 | ########################################################## | COMMENT |
| LOW | docs/markdown/examples.md | 1681 | import argparse | COMMENT |
| LOW | docs/markdown/examples.md | 1701 | # same object definitions to be able to communicate over | COMMENT |
| LOW | docs/markdown/examples.md | 1721 | # reserved for the system. | COMMENT |
| LOW | docs/markdown/examples.md | 1741 | # | COMMENT |
| LOW | docs/markdown/examples.md | 1841 | COMMENT | |
| LOW | docs/markdown/examples.md | 2081 | COMMENT | |
| LOW | docs/markdown/examples.md | 2401 | # encryption and hashmap sequencing can take a long time # | COMMENT |
| LOW | docs/markdown/examples.md | 3001 | ```default | COMMENT |
| LOW | docs/markdown/examples.md | 3101 | # raising an exception. | COMMENT |
| LOW | docs/markdown/interfaces.md | 61 | # This example demonstrates an more specifically | COMMENT |
| LOW | docs/markdown/interfaces.md | 441 | # port = 4242 | COMMENT |
| LOW | docs/markdown/interfaces.md | 561 | # target RNode must be paired with the | COMMENT |
| LOW | docs/markdown/interfaces.md | 581 | COMMENT | |
| LOW | docs/markdown/interfaces.md | 601 | # id_callsign = MYCALL-0 | COMMENT |
| LOW | docs/markdown/interfaces.md | 641 | # Enable interface if you want to use it! | COMMENT |
| LOW | docs/markdown/interfaces.md | 681 | # Select coding rate 5. Valid range | COMMENT |
| LOW | docs/markdown/interfaces.md | 701 | COMMENT | |
| LOW | docs/markdown/interfaces.md | 721 | spreadingfactor = 7 | COMMENT |
| LOW | docs/markdown/interfaces.md | 821 | slottime = 20 | COMMENT |
| LOW | docs/markdown/interfaces.md | 881 | stopbits = 1 | COMMENT |
| LOW | docs/markdown/forhumans.md | 1 | # An Explanation of Reticulum for Human Beings | COMMENT |
| LOW | docs/markdown/using.md | 61 | [reticulum] | COMMENT |
| LOW | docs/markdown/using.md | 81 | share_instance = Yes | COMMENT |
| LOW | docs/markdown/using.md | 101 | # shared_instance_type = tcp | COMMENT |
| LOW | docs/markdown/using.md | 121 | # enable_remote_management = yes | COMMENT |
| LOW | docs/markdown/using.md | 141 | COMMENT | |
| LOW | docs/source/conf.py | 41 | # This pattern also affects html_static_path and html_extra_path. | COMMENT |
| LOW | docs/source/conf.py | 81 | # html_theme = "pydata_sphinx_theme" | COMMENT |
| LOW | docs/source/conf.py | 101 | # return False | COMMENT |
| LOW | docs/manual/_sources/using.rst.txt | 61 | COMMENT | |
| LOW | docs/manual/_sources/using.rst.txt | 81 | # Network Stack will create a shared instance, that other | COMMENT |
| LOW | docs/manual/_sources/using.rst.txt | 101 | # specifying a unique set of ports for each: | COMMENT |
| LOW | docs/manual/_sources/using.rst.txt | 121 | COMMENT | |
| LOW | docs/manual/_sources/using.rst.txt | 141 | # This behaviour is disabled by default. | COMMENT |
| LOW | docs/manual/_sources/using.rst.txt | 161 | # 2: Log warnings and lower log levels | COMMENT |
| LOW | docs/manual/_sources/interfaces.rst.txt | 461 | # The above configuration will allow communication | COMMENT |
| LOW | docs/manual/_sources/interfaces.rst.txt | 581 | # Enable interface if you want use it! | COMMENT |
| LOW | docs/manual/_sources/interfaces.rst.txt | 601 | # BLE MAC address or by any available. | COMMENT |
| LOW | docs/manual/_sources/interfaces.rst.txt | 621 | COMMENT | |
| LOW | docs/manual/_sources/interfaces.rst.txt | 641 | # For certain homebrew RNode interfaces | COMMENT |
| LOW | docs/manual/_sources/interfaces.rst.txt | 701 | # Set frequency to 2.4GHz | COMMENT |
| LOW | docs/manual/_sources/interfaces.rst.txt | 721 | COMMENT | |
| LOW | docs/manual/_sources/interfaces.rst.txt | 761 | # the longest range. | COMMENT |
| LOW | docs/manual/_sources/interfaces.rst.txt | 861 | COMMENT | |
| LOW | Examples/Link.py | 1 | ########################################################## | COMMENT |
| LOW | Examples/Channel.py | 21 | COMMENT | |
| LOW | Examples/Channel.py | 41 | COMMENT | |
| LOW | Examples/Channel.py | 61 | self.data = data | COMMENT |
| LOW | Examples/Channel.py | 181 | reply_message = StringMessage("I received \""+message.data+"\" over the link") | COMMENT |
| LOW | Examples/Filetransfer.py | 1 | ########################################################## | COMMENT |
| LOW | Examples/Ratchets.py | 1 | ########################################################## | COMMENT |
| LOW | Examples/Ratchets.py | 161 | # echo request to the destination specified on the | COMMENT |
| 166 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CRNS/__init__.py | 291 | CODE | |
| LOW | tests/link.py | 8 | CODE | |
| LOW | tests/link.py | 17 | CODE | |
| LOW | tests/egress.py | 5 | CODE | |
| LOW | tests/channel.py | 1 | CODE | |
| LOW | tests/all.py | 3 | CODE | |
| LOW | tests/all.py | 4 | CODE | |
| LOW | tests/all.py | 5 | CODE | |
| LOW | tests/all.py | 6 | CODE | |
| LOW | tests/all.py | 7 | CODE | |
| LOW | tests/all.py | 8 | CODE | |
| LOW | tests/all.py | 9 | CODE | |
| LOW | tests/all.py | 10 | CODE | |
| LOW | tests/all.py | 11 | CODE | |
| LOW | tests/all.py | 12 | CODE | |
| LOW | Examples/Link.py | 6 | CODE | |
| LOW | Examples/Channel.py | 7 | CODE | |
| LOW | Examples/Request.py | 6 | CODE | |
| LOW | Examples/ExampleInterface.py | 19 | CODE | |
| LOW | Examples/Buffer.py | 6 | CODE | |
| LOW | Examples/Buffer.py | 7 | CODE | |
| LOW | Examples/Buffer.py | 11 | CODE | |
| LOW | Examples/Buffer.py | 14 | CODE | |
| LOW | Examples/Identify.py | 6 | CODE | |
| LOW | RNS/Destination.py | 32 | CODE | |
| LOW | RNS/Transport.py | 35 | CODE | |
| LOW | RNS/Reticulum.py | 52 | CODE | |
| LOW | RNS/Reticulum.py | 58 | CODE | |
| LOW | RNS/Reticulum.py | 59 | CODE | |
| LOW | RNS/Reticulum.py | 47 | CODE | |
| LOW | RNS/Channel.py | 31 | CODE | |
| LOW | RNS/__init__.py | 668 | CODE | |
| LOW | RNS/__init__.py | 669 | CODE | |
| LOW | RNS/__init__.py | 670 | CODE | |
| LOW | RNS/__init__.py | 671 | CODE | |
| LOW | RNS/__init__.py | 671 | CODE | |
| LOW | RNS/__init__.py | 671 | CODE | |
| LOW | RNS/__init__.py | 672 | CODE | |
| LOW | RNS/__init__.py | 673 | CODE | |
| LOW | RNS/__init__.py | 674 | CODE | |
| LOW | RNS/__init__.py | 676 | CODE | |
| LOW | RNS/__init__.py | 677 | CODE | |
| LOW | RNS/__init__.py | 678 | CODE | |
| LOW | RNS/__init__.py | 678 | CODE | |
| LOW | RNS/__init__.py | 679 | CODE | |
| LOW | RNS/__init__.py | 680 | CODE | |
| LOW | RNS/Buffer.py | 31 | CODE | |
| LOW | RNS/Buffer.py | 33 | CODE | |
| LOW | RNS/Identity.py | 31 | CODE | |
| LOW | RNS/Identity.py | 35 | CODE | |
| LOW | RNS/Identity.py | 36 | CODE | |
| LOW | RNS/Cryptography/Token.py | 32 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 34 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 35 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 36 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 37 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 38 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 39 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 44 | CODE | |
| LOW | RNS/Cryptography/__init__.py | 44 | CODE | |
| 78 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | CRNS/__init__.py | 65 | def _verify_mirror_directives(self): | STRING |
| LOW | tests/channel.py | 78 | def set_packet_timeout_callback(self, packet: Packet, callback: Callable[[Packet], None] | None, | CODE |
| LOW | tests/channel.py | 82 | def set_packet_delivered_callback(self, packet: Packet, callback: Callable[[Packet], None] | None): | CODE |
| LOW | tests/channel.py | 268 | def test_send_on_failing_outlet_does_not_corrupt_state(self): | CODE |
| LOW | tests/channel.py | 350 | def test_system_message_check(self): | CODE |
| LOW | tests/channel.py | 415 | def test_send_receive_message_test(self): | CODE |
| LOW | tests/channel.py | 427 | def test_buffer_small_bidirectional(self): | CODE |
| LOW | tests/channel.py | 494 | def test_buffer_small_with_callback(self): | CODE |
| LOW | tests/hashes.py | 17 | def test_less_than_block_length(self): | CODE |
| LOW | tests/hashes.py | 73 | def test_less_than_block_length(self): | CODE |
| LOW | docs/markdown/examples.md | 2563 | def resource_sending_concluded(resource): | CODE |
| LOW⚡ | Examples/Resource.py | 211 | def resource_concluded_sending(resource): | CODE |
| LOW | Examples/Filetransfer.py | 171 | def resource_sending_concluded(resource): | CODE |
| LOW⚡ | RNS/Link.py | 1230 | def set_resource_started_callback(self, callback): | CODE |
| LOW⚡ | RNS/Link.py | 1239 | def set_resource_concluded_callback(self, callback): | CODE |
| LOW⚡ | RNS/Link.py | 1248 | def set_remote_identified_callback(self, callback): | CODE |
| LOW⚡ | RNS/Link.py | 1417 | def response_resource_progress(self, resource): | CODE |
| LOW | RNS/Link.py | 885 | def request_resource_concluded(self, resource): | CODE |
| LOW | RNS/Link.py | 897 | def response_resource_concluded(self, resource): | CODE |
| LOW | RNS/Link.py | 1198 | def set_link_established_callback(self, callback): | CODE |
| LOW | RNS/Link.py | 1278 | def register_outgoing_resource(self, resource): | CODE |
| LOW | RNS/Link.py | 1281 | def register_incoming_resource(self, resource): | CODE |
| LOW | RNS/Link.py | 1367 | def request_resource_concluded(self, resource): | CODE |
| LOW | RNS/Destination.py | 133 | def app_and_aspects_from_name(full_name): | CODE |
| LOW | RNS/Destination.py | 141 | def hash_from_name_and_identity(full_name, identity): | CODE |
| LOW | RNS/Destination.py | 332 | def set_link_established_callback(self, callback): | CODE |
| LOW | RNS/Destination.py | 350 | def set_proof_requested_callback(self, callback): | CODE |
| LOW | RNS/Destination.py | 400 | def deregister_request_handler(self, path): | CODE |
| LOW | RNS/Discovery.py | 136 | def get_interface_announce_data(self, interface): | CODE |
| LOW | RNS/Discovery.py | 525 | def list_discovered_interfaces(self, only_available=False, only_transport=False): | CODE |
| LOW | RNS/Discovery.py | 731 | def bootstrap_interface_count(self): | CODE |
| LOW | RNS/Discovery.py | 772 | def autoconnect_interface_name(self, name): | CODE |
| LOW⚡ | RNS/Transport.py | 3620 | def interface_to_shared_instance(interface): | CODE |
| LOW | RNS/Transport.py | 1247 | def handle_disovery_path_requests(): | CODE |
| LOW | RNS/Transport.py | 1268 | def handle_outgoing_announces(outgoing): | CODE |
| LOW | RNS/Transport.py | 1293 | def handle_outgoing_ifac_legacy(interface, raw): | CODE |
| LOW | RNS/Transport.py | 2788 | def tunnel_synthesize_handler(data, packet): | CODE |
| LOW | RNS/Transport.py | 2956 | def register_announce_handler(handler): | CODE |
| LOW | RNS/Transport.py | 2971 | def deregister_announce_handler(handler): | CODE |
| LOW | RNS/Transport.py | 3167 | def next_hop_interface_bitrate(destination_hash): | CODE |
| LOW | RNS/Transport.py | 3173 | def next_hop_interface_hw_mtu(destination_hash): | CODE |
| LOW | RNS/Transport.py | 3188 | def next_hop_per_byte_latency(destination_hash): | CODE |
| LOW | RNS/Transport.py | 3608 | def is_local_client_interface(interface): | CODE |
| LOW | RNS/Transport.py | 3690 | def shared_connection_disappeared(): | CODE |
| LOW | RNS/Transport.py | 3705 | def shared_connection_reappeared(): | CODE |
| LOW | RNS/Transport.py | 3725 | def timebase_from_random_blob(random_blob): | CODE |
| LOW | RNS/Transport.py | 3729 | def timebase_from_random_blobs(random_blobs): | CODE |
| LOW⚡ | RNS/Reticulum.py | 1279 | def _default_ic_max_held_announces(self): | CODE |
| LOW⚡ | RNS/Reticulum.py | 1285 | def _default_ic_burst_freq_new(self): | CODE |
| LOW⚡ | RNS/Reticulum.py | 1291 | def _default_ic_pr_burst_freq_new(self): | CODE |
| LOW⚡ | RNS/Reticulum.py | 1294 | def _default_ic_pr_burst_freq(self): | CODE |
| LOW⚡ | RNS/Reticulum.py | 1463 | def _unretain_destination_data(self, destination_hash): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2137 | def interface_discovery_sources(): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2147 | def should_autoconnect_discovered_interfaces(): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2151 | def should_autoconnect_unverified_implementations(): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2155 | def autoconnect_interface_mode(): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2159 | def autoconnect_interface_gravity(): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2163 | def autoconnect_announces_to_internal(): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2167 | def max_autoconnected_interfaces(): | CODE |
| LOW⚡ | RNS/Reticulum.py | 2171 | def static_transport_identity(): | CODE |
| 65 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/manual/examples.html | 904 | <span class="c1"># This function is called when our reply destination</span> | CODE |
| MEDIUM | docs/manual/examples.html | 944 | <span class="c1"># This function is called if a packet times out.</span> | CODE |
| MEDIUM | docs/manual/examples.html | 1229 | <span class="c1"># This function is called when a link</span> | CODE |
| MEDIUM | docs/manual/examples.html | 1464 | <span class="c1"># Create a new client identity</span> | CODE |
| MEDIUM | docs/manual/examples.html | 1547 | <span class="c1"># This function is called when a link</span> | CODE |
| MEDIUM | docs/manual/examples.html | 1850 | <span class="c1"># This function is called when a link</span> | CODE |
| MEDIUM | docs/manual/examples.html | 2233 | <span class="c1"># This function is called when a link</span> | CODE |
| MEDIUM | docs/manual/examples.html | 2562 | <span class="c1"># This function is called when a link</span> | CODE |
| MEDIUM | docs/manual/examples.html | 2830 | <span class="c1"># This function is called on the server when a</span> | CODE |
| MEDIUM | docs/manual/examples.html | 3097 | <span class="c1"># This function is called when a link</span> | CODE |
| MEDIUM | docs/manual/examples.html | 3541 | <span class="c1"># This method handles serial port disconnects.</span> | CODE |
| MEDIUM | Examples/Link.py | 203 | # This function is called when a link | COMMENT |
| MEDIUM | Examples/Channel.py | 297 | # This function is called when a link | COMMENT |
| MEDIUM | Examples/Request.py | 207 | # This function is called when a link | COMMENT |
| MEDIUM⚡ | Examples/Resource.py | 215 | # This function is called when a link | COMMENT |
| MEDIUM | Examples/Filetransfer.py | 169 | # This function is called on the server when a | COMMENT |
| MEDIUM | Examples/Filetransfer.py | 436 | # This function is called when a link | COMMENT |
| MEDIUM | Examples/Ratchets.py | 226 | # This function is called when our reply destination | COMMENT |
| MEDIUM | Examples/Ratchets.py | 266 | # This function is called if a packet times out. | COMMENT |
| MEDIUM | Examples/ExampleInterface.py | 270 | # This method handles serial port disconnects. | COMMENT |
| MEDIUM | Examples/Buffer.py | 230 | # This function is called when a link | COMMENT |
| MEDIUM | Examples/Speedtest.py | 228 | # This function is called when a link | COMMENT |
| MEDIUM | Examples/Identify.py | 141 | # Create a new client identity | COMMENT |
| MEDIUM | Examples/Identify.py | 224 | # This function is called when a link | COMMENT |
| MEDIUM | Examples/Echo.py | 217 | # This function is called when our reply destination | COMMENT |
| MEDIUM | Examples/Echo.py | 257 | # This function is called if a packet times out. | COMMENT |
| MEDIUM | RNS/Resource.py | 246 | # Create a resource for transmission to a remote destination | COMMENT |
| MEDIUM | RNS/Resource.py | 1011 | # Define the search scope | COMMENT |
| MEDIUM | RNS/Utilities/rnsh/protocol.py | 101 | # Create a version of RNS.Buffer.StreamDataMessage that we control | COMMENT |
| MEDIUM | RNS/Interfaces/RNodeMultiInterface.py | 181 | # Create an array with a row for each subinterface | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/manual/interfaces.html | 799 | <span class="w"> </span><span class="c1"># Set frequency to 867.2 MHz</span> | CODE |
| LOW | docs/manual/interfaces.html | 883 | <span class="w"> </span><span class="c1"># Set frequency to 2.4GHz</span> | CODE |
| LOW | docs/manual/interfaces.html | 925 | <span class="w"> </span><span class="c1"># Set frequency to 865.6 MHz</span> | CODE |
| LOW | docs/manual/examples.html | 1153 | <span class="c1"># Check if we know a path to the destination</span> | CODE |
| LOW | docs/manual/examples.html | 1206 | <span class="c1"># Check if we should quit the example</span> | CODE |
| LOW | docs/manual/examples.html | 1471 | <span class="c1"># Check if we know a path to the destination</span> | CODE |
| LOW | docs/manual/examples.html | 1524 | <span class="c1"># Check if we should quit the example</span> | CODE |
| LOW | docs/manual/examples.html | 1770 | <span class="c1"># Check if we know a path to the destination</span> | CODE |
| LOW | docs/manual/examples.html | 1818 | <span class="c1"># Check if we should quit the example</span> | CODE |
| LOW | docs/manual/examples.html | 2156 | <span class="c1"># Check if we know a path to the destination</span> | CODE |
| LOW | docs/manual/examples.html | 2204 | <span class="c1"># Check if we should quit the example</span> | CODE |
| LOW | docs/manual/examples.html | 2497 | <span class="c1"># Check if we know a path to the destination</span> | CODE |
| LOW | docs/manual/examples.html | 2545 | <span class="c1"># Check if we should quit the example</span> | CODE |
| LOW | docs/manual/examples.html | 2762 | <span class="c1"># Check if the served directory still exists</span> | CODE |
| LOW | docs/manual/examples.html | 2894 | <span class="c1"># Check if we know a path to the destination</span> | CODE |
| LOW | Examples/Link.py | 127 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Link.py | 180 | # Check if we should quit the example | COMMENT |
| LOW | Examples/Channel.py | 220 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Channel.py | 268 | # Check if we should quit the example | COMMENT |
| LOW | Examples/Request.py | 127 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Request.py | 175 | # Check if we should quit the example | COMMENT |
| LOW | Examples/Resource.py | 135 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Resource.py | 183 | # Check if we should quit the example | COMMENT |
| LOW | Examples/Filetransfer.py | 101 | # Check if the served directory still exists | COMMENT |
| LOW | Examples/Filetransfer.py | 233 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Buffer.py | 165 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Buffer.py | 213 | # Check if we should quit the example | COMMENT |
| LOW | Examples/Speedtest.py | 182 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Identify.py | 148 | # Check if we know a path to the destination | COMMENT |
| LOW | Examples/Identify.py | 201 | # Check if we should quit the example | COMMENT |
| LOW | RNS/Transport.py | 1382 | # Check if we have a known path for the destination in the path table | COMMENT |
| LOW | RNS/Transport.py | 2180 | # Check if this is a next retransmission from | COMMENT |
| LOW | RNS/Transport.py | 2204 | # Check if this announce should be inserted into | COMMENT |
| LOW | RNS/Transport.py | 2675 | # Check if we can deliver it to a local pending link | COMMENT |
| LOW | RNS/Transport.py | 2733 | # Check if this proof needs to be transported | COMMENT |
| LOW | RNS/Identity.py | 569 | # Check if we already have a public key for this destination | COMMENT |
| LOW | RNS/Utilities/rnsd.py | 463 | # Set frequency to 867.2 MHz | COMMENT |
| LOW | RNS/Utilities/rngit/util.py | 761 | # Check if word alone exceeds width to force break it | COMMENT |
| LOW | RNS/Utilities/rngit/util.py | 793 | # Check if word fits on current line | COMMENT |
| LOW | RNS/Utilities/rngit/pages.py | 2118 | # Check if it's actually a tree | COMMENT |
| LOW | RNS/Utilities/rngit/pages.py | 2190 | # Check if it's a tree via ls-tree | COMMENT |
| LOW | RNS/Utilities/rngit/pages.py | 2199 | # Check if it's a symlink via ls-tree | COMMENT |
| LOW | RNS/Utilities/rngit/pages.py | 2356 | # Check if it's an annotated tag | COMMENT |
| LOW | RNS/Utilities/rngit/pages.py | 2478 | # Check if file exists in parent | COMMENT |
| LOW | RNS/Utilities/rngit/pages.py | 2484 | # Check if file exists in current commit | COMMENT |
| LOW | RNS/Utilities/rngit/pages.py | 2890 | # Check if pixel overlaps this category | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/throughput.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 603 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 605 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 682 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 684 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 901 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 920 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 934 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/throughput.py | 941 | # ---------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/markdown/examples.md | 2165 | # In this example, both the reader and the writer | COMMENT |
| HIGH | docs/manual/examples.html | 2433 | <span class="c1"># In this example, both the reader and the writer</span> | CODE |
| HIGH | Examples/Ratchets.py | 50 | # path to store ratchets. In this example, we will just | COMMENT |
| HIGH | Examples/Buffer.py | 101 | # In this example, both the reader and the writer | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Examples/ExampleInterface.py | 37 | CODE | |
| LOW | RNS/Link.py | 1324 | CODE | |
| LOW | RNS/Reticulum.py | 1217 | CODE | |
| LOW | RNS/Resource.py | 249 | CODE | |
| LOW | RNS/__init__.py | 160 | CODE | |
| LOW | RNS/Packet.py | 123 | CODE | |
| LOW | RNS/Utilities/rncp.py | 75 | CODE | |
| LOW | RNS/Utilities/rncp.py | 359 | CODE | |
| LOW | RNS/Utilities/rncp.py | 618 | CODE | |
| LOW | RNS/Utilities/rnstatus.py | 159 | CODE | |
| LOW | RNS/Utilities/rnodeconf.py | 139 | CODE | |
| LOW | RNS/Utilities/rnx.py | 326 | CODE | |
| LOW | RNS/Utilities/rnpath.py | 102 | CODE | |
| LOW | RNS/Utilities/rngit/server.py | 56 | CODE | |
| LOW | RNS/Utilities/rngit/highlight.py | 202 | CODE | |
| LOW | RNS/Utilities/rnsh/protocol.py | 76 | CODE | |
| LOW | RNS/Utilities/rnsh/listener.py | 120 | CODE | |
| LOW | RNS/Interfaces/WeaveInterface.py | 47 | CODE | |
| LOW | RNS/Interfaces/RNodeMultiInterface.py | 132 | CODE | |
| LOW | RNS/Interfaces/RNodeMultiInterface.py | 951 | CODE | |
| LOW | RNS/Interfaces/I2PInterface.py | 51 | CODE | |
| LOW | RNS/Interfaces/I2PInterface.py | 65 | CODE | |
| LOW | RNS/Interfaces/AX25KISSInterface.py | 58 | CODE | |
| LOW | RNS/Interfaces/TCPInterface.py | 53 | CODE | |
| LOW | RNS/Interfaces/TCPInterface.py | 67 | CODE | |
| LOW | RNS/Interfaces/SerialInterface.py | 49 | CODE | |
| LOW | RNS/Interfaces/RNodeInterface.py | 105 | CODE | |
| LOW | RNS/Interfaces/KISSInterface.py | 58 | CODE | |
| LOW | RNS/Interfaces/PipeInterface.py | 52 | CODE | |
| LOW | RNS/Interfaces/util/HDLC.py | 45 | CODE | |
| LOW | RNS/Interfaces/Android/SerialInterface.py | 49 | CODE | |
| LOW | RNS/Interfaces/Android/RNodeInterface.py | 117 | CODE | |
| LOW | RNS/Interfaces/Android/KISSInterface.py | 58 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | RNS/Interfaces/WeaveInterface.py | 1027 | if not self._online or not self.owner: return false | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | RNS/Cryptography/Token.py | 88 | if not isinstance(data, bytes): raise TypeError("Token plaintext input must be bytes") | CODE |
| LOW | RNS/Cryptography/Token.py | 101 | if not isinstance(token, bytes): raise TypeError("Token must be bytes") | CODE |
| LOW | RNS/Cryptography/aes/aes256.py | 236 | __all__ = ["AES256"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | RNS/Utilities/rngit/server.py | 5011 | # Instead of IDENTITY_HASH, you can also use "all" or "none". | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/manual/examples.html | 2949 | <span class="c1"># We just create a packet containing the</span> | CODE |
| LOW | Examples/Filetransfer.py | 288 | # We just create a packet containing the | COMMENT |
| LOW | RNS/Utilities/rngit/server.py | 2157 | # idea here. Seems best to just set it initially on clone, and then | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | RNS/Utilities/rngit/server.py | 1089 | # Step 1: Initialize release | COMMENT |
| LOW | RNS/Utilities/rngit/server.py | 1106 | # Step 2: Upload artifacts | COMMENT |
| LOW | RNS/Utilities/rngit/server.py | 1130 | # Step 3: Finalize release | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | RNS/Utilities/rngit/server.py | 1089 | # Step 1: Initialize release | COMMENT |
| LOW | RNS/Utilities/rngit/server.py | 1106 | # Step 2: Upload artifacts | COMMENT |
| LOW | RNS/Utilities/rngit/server.py | 1130 | # Step 3: Finalize release | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | RNS/Transport.py | 1346 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | RNS/Link.py | 804 | def handle_request(self, request_id, unpacked_request): | CODE |