Architecture

December 1, 2020 ยท View on GitHub

Overview

The below table is intended to help orient users to the different parts of the KillerBee codebase, and share overall thoughts for planned future changes to allow for comments, feedback, and planning.

CategorySub-categoryDescriptionExamplesNotes
coreThe library that is used to interact with the radio peripheralpnext(), inject(), set_channel(), sniffer_on()/off()
driversDevice specific implementation of "core" functionalitydev_*.pyWill be moved to a sub-directory.
utilitiesConvenience functions for working with ZigBee
pcapPlan to migrate to using scapy fully for this
devicedevlist(), is_\[device\]()Possibly move this into core
zigbeemakeFCS(), randmac(), extractkey()
cryptoencrypt_ccm(), decrypt_ccm(), hash_mmo()
rf4cederivekey()Planned future features.
home-automationdisarm(), sensor_trigger(), tamper()Planned future features.
scapy-extensionA wrapper around "core" and "utility" for convenience when working alongside scapy or as-if working with scapykbsend(), kbsniff()
home-automation layerPlanned future features.
toolssimpleSimple script wrappers around "core" or "utility" functionalitye.g., zbcat, zbdump, zbwireshark, zbid, zbcrypto
fully-featuredOther, more complex toolszbwardrive, openearThese will be promoted to their own repository

Additional Goals

  • Migrate remaining tools and utilities to use Dot15d4 Scapy for packet construction
  • Move device configuration to runtime options rather than "compile" time
  • Add unittesting coverage (see tests/ for coverage so far)
  • Add pytypes
  • Move documentation to modern framework such as Sphinx
  • Publish documentation to readthedocs.io
  • Publish KillerBee to pypi to simplify installation
  • Have KillerBee updated in distros (e.g., Kali)