Developer Guide

EXPLIoT Framework is a brilliant choice for vendors, smart infrastructure admins, developers and security researchers for various reasons:

  • It will streamline your security/regression testing.

  • You will be able to identify security loopholes prior to deployment on an IoT solution in your infrastructure.

  • It will help you in automating time consuming test cases.

  • If you fall under any compliance or regulatory requirements for the IoT product or Smart Infrastructure, it will help you in automating and performing compliance checks regularly.

  • It will save a lot of time during IoT security research or assessments.

  • You can mold it to your needs by simply extending it with your own plugins.

If you are interested in extending the framework i.e. writing new plugins, follow on.

Coding style

Please follow the below coding style, when writing new code, if you are used to some other style.

We use Black for code formatting. Every merge request is automatically checked as part of the linting process and we never merge submissions that diverge. We recommend to run black, pylint and flake8 locally before creating a merge request.

  1. The code must follow PEP8 (Style Guide for Python Code).

  2. Class names should be short, simple and define the purpose. It must be in CamelCase.

  3. Import should be grouped and ordered, use isort.

  4. The method names must not use CamelCase. It may use underscores (”_”) for a name with more than one word.

  5. Class member names should follow the same convention as method names.

  6. Every module, function, class or method definition must have at least a Docstring.

    It’s preferred to have additional details for the API documentation.

    """ Method description.
        param1 (type): param1 description
        param2 (type): param2 description
    Returns: (or Yields: for generators)
        type: Description of return value
        type: Description/reason of the exception

Please refer to the Google Python Style Guide for further information or if you are unsure about a specific topic.


If you are interested in contributing to the project. Please follow these steps:

  1. You must have an idea or a bug fix.

  2. If this is your first time contributing to EXPLIoT, then please DO NOT submit a pull/merge request first thing. Instead please open an issue describing your code changes.

  3. Setup your development environment, see Setup the development environment.

  4. You will need to sign a contributor license agreement. Please sign, scan and email the same.

  5. Create the merge request following the mentioned points in the previous section.

Additional details