{"id":25608249,"url":"https://github.com/dhondta/rpl-attacks","last_synced_at":"2026-05-03T01:30:20.105Z","repository":{"id":41333618,"uuid":"58322362","full_name":"dhondta/rpl-attacks","owner":"dhondta","description":"RPL attacks framework for simulating WSN with a malicious mote based on Contiki","archived":false,"fork":false,"pushed_at":"2024-05-07T19:59:23.000Z","size":7338,"stargazers_count":72,"open_issues_count":11,"forks_count":43,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-05-07T20:54:38.643Z","etag":null,"topics":["attack","contiki","malicious-motes","research-tools","rpl","rpl-attacks-framework","security-tools","simulation","simulation-campaign","wireless-network","wsn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dhondta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-08T17:04:42.000Z","updated_at":"2024-05-29T22:47:43.095Z","dependencies_parsed_at":"2023-02-12T18:31:02.617Z","dependency_job_id":"c7e09111-0661-4c8f-bad3-9054d9099f39","html_url":"https://github.com/dhondta/rpl-attacks","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhondta%2Frpl-attacks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhondta%2Frpl-attacks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhondta%2Frpl-attacks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhondta%2Frpl-attacks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dhondta","download_url":"https://codeload.github.com/dhondta/rpl-attacks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240080256,"owners_count":19744843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["attack","contiki","malicious-motes","research-tools","rpl","rpl-attacks-framework","security-tools","simulation","simulation-campaign","wireless-network","wsn"],"created_at":"2025-02-21T20:19:53.933Z","updated_at":"2026-05-03T01:30:20.012Z","avatar_url":"https://github.com/dhondta.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/logo.png\"\u003e\u003c/p\u003e\r\n\u003ch1 align=\"center\"\u003eRPL Attacks Framework \u003ca href=\"https://twitter.com/intent/tweet?text=RPL%20Attacks%20Framework%20-%20Framework%20for%20simulating%20WSN%20with%20a%20malicious%20mote%20based%20on%20Contiki%20for%20attacking%20the%20RPL%20protocol.%0D%0Ahttps%3a%2f%2fgithub%2ecom%2fdhondta%2frpl-attacks%0D%0A\u0026hashtags=python,simulation,framework,contiki,rpl,wsn,sensors\"\u003e\u003cimg src=\"https://img.shields.io/badge/Tweet--lightgrey?logo=twitter\u0026style=social\" alt=\"Tweet\" height=\"20\"/\u003e\u003c/a\u003e\u003c/h1\u003e\r\n\u003ch3 align=\"center\"\u003eMake simulations of a WSN with a malicious mote for attacking the RPL protocol.\u003c/h3\u003e\r\n\r\n[![Read The Docs](https://readthedocs.org/projects/rpl-attacks/badge/?version=latest)](https://rpl-attacks.readthedocs.io/en/latest/?badge=latest)\r\n[![Known Vulnerabilities](https://snyk.io/test/github/dhondta/rpl-attacks/badge.svg?targetFile=requirements.txt)](https://snyk.io/test/github/dhondta/rpl-attacks?targetFile=requirements.txt)\r\n[![DOI](https://zenodo.org/badge/22624/dhondta/rpl-attacks.svg)](https://zenodo.org/badge/latestdoi/22624/dhondta/rpl-attacks)\r\n[![Black Hat Arsenal Europe 2018](https://raw.githubusercontent.com/toolswatch/badges/master/arsenal/europe/2018.svg?sanitize=true)](https://www.blackhat.com/eu-18/arsenal/schedule/index.html#rpl-attacks-framework-attacking-rpl-in-wsns-12671)\r\n[![Vagrant](https://img.shields.io/badge/vagrant-1.0.0-blue.svg)](https://app.vagrantup.com/dhondta/boxes/rpl-attacks)\r\n[![License](https://img.shields.io/badge/license-AGPLv3-lightgrey)](https://github.com/dhondta/rpl-attacks/blob/master/LICENSE)\r\n\r\n\r\nThis project aims to provide a simple and convenient interface relying on [Contiki OS](https://github.com/contiki-os/contiki) to generate [Cooja simulations](https://anrg.usc.edu/contiki/index.php/Cooja_Simulator) and deploy malicious motes for a [Wireless Sensor Network (WSN)](https://en.wikipedia.org/wiki/Wireless_sensor_network) that uses [Routing Protocol for Low-power and lossy devices (RPL)](https://www.ietf.org/proceedings/94/slides/slides-94-rtgarea-2.pdf) ([RFC 6550](https://tools.ietf.org/html/rfc6550)) as its network layer.\r\n\r\nWith this framework, it is possible to easily define campaign of simulations (in JSON format) either redefining RPL configuration constants, modifying single lines from the [ContikiRPL library](https://github.com/contiki-os/contiki/tree/master/core/net/rpl) or using an own external RPL library. Moreover, experiments in a campaign can be generated either based on a same or a randomized topology for each simulation.\r\n\r\nSee the [Wiki](https://github.com/dhondta/rpl-attacks/wiki) for additional documentation.\r\n\r\n### A few test cases made with the framework:\r\n\r\n#### Test case 1: flooding attack\r\n\r\nThe malicious mote has 3, 7, 10 in its range                               |  Power tracking without the malicious mote                                                |  Power tracking with the malicious mote\r\n:-------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------:\r\n![The malicious mote has 3, 7, 10 in its range](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/flooding-dag.png) | ![Power tracking without the malicious mote](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/flooding-powertracking-without.png) | ![Power tracking with the malicious mote](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/flooding-powertracking-with.png)\r\n\r\n#### Test case 2: versioning attack\r\n\r\nLegitimate DODAG                                         |  Versioning attack in action (global repair)\r\n:-------------------------------------------------------:|:-----------------------------------------------------:\r\n![Legitimate DODAG](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/versioning-dag-without.png) | ![Versioning attack](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/versioning-dag-with.png)\r\n\r\nPower tracking without the malicious mote                          |  Power tracking with the malicious mote\r\n:-----------------------------------------------------------------:|:---------------------------------------------------------------:\r\n![Power tracking without the malicious mote](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/versioning-powertracking-without.png) | ![Power tracking with the malicious mote](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/versioning-powertracking-with.png)\r\n\r\n#### Test case 3a: blackhole attack\r\n\r\nLegitimate DODAG                                               |  Blackhole attack in action\r\n:-------------------------------------------------------------:|:-----------------------------------------------------------:\r\n![Legitimate DODAG](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/blackhole-attack-ex1-without.png) | ![Blackhole attack](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/blackhole-attack-ex1-with.png)\r\n\r\n#### Test case 3b: blackhole attack\r\n\r\nLegitimate DODAG                                               |  Blackhole attack in action\r\n:-------------------------------------------------------------:|:-----------------------------------------------------------:\r\n![Legitimate DODAG](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/blackhole-attack-ex2-without.png) | ![Blackhole attack](https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/blackhole-attack-ex2-with.png)\r\n\r\n\r\n## :cd: Installation\r\n\r\n1. Clone this repository\r\n\r\n ```\r\n $ git clone https://github.com/dhondta/rpl-attacks.git\r\n ```\r\n \r\n \u003e **Behind a proxy ?**\r\n \u003e \r\n \u003e Setting: `git config --global http.proxy http://[user]:[pwd]@[host]:[port]`\r\n \u003e \r\n \u003e Unsetting: `git config --global --unset http.proxy`\r\n \u003e \r\n \u003e Getting: `git config --global --get http.proxy`\r\n\r\n2. Create the VM\r\n\r\n ```\r\n $ vagrant login\r\n [...]\r\n $ vagrant up\r\n ```\r\n \r\n \u003e **Important notes**\r\n \u003e \r\n \u003e The downloads of the Vagrant box may take a while, please be patient...\r\n \u003e \r\n \u003e Also, after the creation of the VM, Vagrant may complain that the *SSH connection was unexpectedly closed by the remote end*. In practice, this does not affect the creation and operation of the box.\r\n \r\n \u003e **Behind a proxy ?**\r\n \u003e \r\n \u003e Install the plugin: `vagrant plugin install vagrant-proxyconf`\r\n \u003e \r\n \u003e Configure Vagrant: Uncomment the lines starting with `config.proxy` in the `Vagrantfile`\r\n\r\n \u003e **Troubleshooting**:\r\n \u003e \r\n \u003e - Ensure the latest version of Vagrant is installed\r\n \u003e - If using `virtualbox` provider, ensure Oracle Extension Pack is installed (see [Oracle website](https://www.google.be/#q=virtualbox+oracle+extension+pack+install))\r\n\r\n \u003e **Using Instant Contiki or another distribution**:\r\n \u003e \r\n \u003e The full manual installation procedure is available [here](https://rpl-attacks.readthedocs.io/en/latest/install/#manual-installation) and mentions [InstantContiki](https://sourceforge.net/projects/contiki/files/Instant%20Contiki/) but it is advised to use the [Vagrant box](https://app.vagrantup.com/dhondta/boxes/rpl-attacks) as it was fully tested.\r\n\r\n\r\n## :sunglasses: Demonstration\r\n\r\nThis will make 3 complete examples of attacks : hello flood, version number and blackhole.\r\n\r\nOpen the console like before and type:\r\n\r\n ```\r\n user@instant-contiki:rpl-attacks\u003e\u003e demo\r\n ```\r\n\r\nOr simply launch the `demo` command with Fabric:\r\n\r\n ```\r\n ./rpl-attacks$ fab demo\r\n ```\r\n\r\n\r\n## :fast_forward: Quick Start\r\n\r\n1. Open the console (you should see something like in the following screenshot)\r\n\r\n ```\r\n ./rpl-attacks$ python main.py\r\n ```\r\n\r\n or\r\n\r\n ```\r\n ./rpl-attacks$ fab console\r\n ```\r\n \r\n \u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/dhondta/rpl-attacks/raw/master/doc/imgs/rpl-attacks.png\"\u003e\u003c/p\u003e\r\n\r\n2. Create a campaign of simulations\r\n\r\n ```\r\n user@instant-contiki:rpl-attacks\u003e\u003e prepare sample-attacks\r\n ```\r\n\r\n3. Go to your experiments folder (default: `~/Experiments`) and edit your new `sample-attacks.json` to suit your needs\r\n\r\n  See [*How to create a campaign of simulations ?*](https://github.com/dhondta/rpl-attacks/blob/master/doc/campaigns.md) for more information.\r\n\r\n4. Make the simulations\r\n\r\n ```\r\n user@instant-contiki:rpl-attacks\u003e\u003e make_all sample-attacks\r\n ```\r\n\r\n5. Run the simulations (multi-processed)\r\n\r\n ```\r\n user@instant-contiki:rpl-attacks\u003e\u003e run_all sample-attacks\r\n ```\r\n\r\n  **Hint** : You can type ``status`` during ``make_all`` and ``run_all`` processing for getting the status of pending tasks.\r\n\r\n6. Once tasks are in status ``SUCCESS`` in the status tables (visible by typing ``status``), just go to the experiment's ``results`` folders to get pictures and logs of the simulations. The related paths are the followings :\r\n\r\n ``[EXPERIMENTS_FOLDER]/[experiment_name]/without-malicious/results/``\r\n ``[EXPERIMENTS_FOLDER]/[experiment_name]/with-malicious/results/``\r\n\r\n \r\n## :grimacing: Issues management\r\n\r\nIn case of bug, there should be a **crash report generated in the folder of the experiment** that the framework was processing. By convention, this is named **`crash-report-[...].txt`**. Please copy its content (without the title) in a [new Issue](https://github.com/dhondta/rpl-attacks/issues/new).\r\n \r\nFor contributions or suggestions, please [open an Issue](https://github.com/dhondta/rpl-attacks/issues/new) and clearly explain, using an example or a use case if appropriate.\r\n\r\nIf you want to build new RPL attacks, please refer to the [*How to make new building blocks ?*](https://github.com/dhondta/rpl-attacks/blob/master/doc/building-blocks.md) section. In this case, please submit your new attack through a Pull Request.\r\n\r\n\r\n## :clap:  Supporters\r\n\r\n[![Stargazers repo roster for @dhondta/rpl-attacks](https://reporoster.com/stars/dark/dhondta/rpl-attacks)](https://github.com/dhondta/rpl-attacks/stargazers)\r\n\r\n[![Forkers repo roster for @dhondta/rpl-attacks](https://reporoster.com/forks/dark/dhondta/rpl-attacks)](https://github.com/dhondta/rpl-attacks/network/members)\r\n\r\n\u003cp align=\"center\"\u003e\u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Back%20to%20top--lightgrey?style=social\" alt=\"Back to top\" height=\"20\"/\u003e\u003c/a\u003e\u003c/p\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhondta%2Frpl-attacks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhondta%2Frpl-attacks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhondta%2Frpl-attacks/lists"}