# IoT Dataset Generation Framework

IoT Dataset Generation Framework for Visualization and Generation of IoT/SmartHome Network traffic

## Short Paper Link
The short paper "IoT dataset generation framework for evaluating anomaly detection mechanisms" by Andreas Meyer-Berg, Rolf Egert, Leon Böck, and Max Mühlhäuser for this framework is presented at [https://doi.org/10.1145/3407023.3407036](https://doi.org/10.1145/3407023.3407036).

## Gradle tasks
Gradle will download required libraries and handle the build process

	$ gradlew build		# Assembles and tests this project
	
	$ gradlew jar 		# Creates an executable Jar-file

	$ gradlew javadoc	# Generates Java Doc for the framework
	
	$ gradlew test		# Runs the included unit tests
	
	$ gradlew run		# Runs the IoTDatasetGenerationFramework as a JVM Application
	
	$ gradlew runIt		# Runs the IoTDatasetGenerationFramework as a Jar-file
	
	$ gradlew tasks		# Displays further available tasks

## Prerequisites
* [Java SE JDK 8.0](https://www.oracle.com/technetwork/java/javase/downloads/index.html) or greater
	
## Required Libraries
Gradle downloads these during the build process

* [JUnit4](https://junit.org/junit4/) - Java unit test framework
* [Math3](https://commons.apache.org/proper/commons-math/) - Apache Common Maths (for Distribution function)
* [Weka 3](https://www.cs.waikato.ac.nz/ml/weka/) - Weka machine learning framework (for example anomaly detection algorithms)
<!--* [Pcap4j](https://www.pcap4j.org/) - Java Library used for Pcap File creation (not yet implemented)-->
<!-- PCAP file writing example (as part of the export manager - but probably required packet transformation): https://www.devdungeon.com/content/packet-capturing-java-pcap4j#writing_pcap_file -->

## Installation
Clone repository
$ git clone git@git.tk.informatik.tu-darmstadt.de:SPIN/IoTDatasetGenerationFramework.git
Go to folder
$ cd IoTDatasetGenerationFramework
Build project (and run)
$ gradlew run

## Adaptations and custom implementations
To change code of the framework, it is possible to import it into an IDE of choice. Custom implementations of devices, protocols etc. can also be written in a separate project and later be imported. <br>
For access to libraries during development the Jar files in "\build\install\SmartHomeNetworkSim\lib" can be imported. While running the framework, externally implemented programs can be imported.

### Developed by
Andreas T. Meyer-Berg (As part of his Bachelor Thesis)
