Commit f41d72d7 authored by cif2cif's avatar cif2cif
Browse files

Actualizados READMEs

parent ef592c07
# SecureGrid
Deep Learning based Attack Detection System for Smart Grids
## Required modules
* Keras
* There is a recognized bug in numpy 1.16.3. Thus, the numpy version should be 1.16.1.
pip uninstall numpy
pip install --upgrade numpy==1.16.1
# Mosaik
For running the demo number of packages are needed:
sudo apt-get install git python3-numpy python3-scipy python3-h5py
In addition, there is a bug in arrow in mosaik demo, so you should install the version arrow 0.14:
pip install arrow==0.14
Execute
python securegrid-demo.py
After finishing, you will have the simulation data in the file demo.hdf5
You can visualize this file with any hdf5 viewer.
In our case, we are using ViTables (http://vitables.org/Download/).
If you desire to install it, follow the installation instructions.
The suggested process is:
apt install libhdf5-dev
pip install pyqt5
pip install vitables
Then execute 'vitables' in a terminal.
If you wish to visualize the scenario, you can install maverig: https://bitbucket.org/mosaik/maverig/src/master/. Basically
pip install maverig
## Usage
In order to detect attacks, the power consumption values of the houses are analyzed. For that reason, first, the needed DataFrames to feed the neural network (autoencoder) have to be created.
For this purpose, the notebook dataframe_creation is used. This notebook generates .pkl files that contain the DataFrames with the necessary data. In addition, these DataFrames contain the following features:
| Feature | Description |
| ------------- | ------------- |
| Day | Current day of the first window value |
| Hour | Current hour of the first window value |
| Minute | Current minute of the first window value |
| Pn | Power consumption window values |
| Mean | Mean of the window values |
| Mean_i - Mean_i-1 | Difference between the mean of the window values and the mean of the previous window values |
| s | Standard deviation of the window values |
| Pn - P1 | Difference between the last and first value of the window |
| Q1 | First quartile of the window values |
| Q2 | Median of the window values |
| Q3 | Third quartile of the window values |
| IQR | Interquartile range of the window values |
For executing the dataframe, it is needed to install the package h5py
pip install h5py
Once the DataFrames are created, they are used to feed the autoencoder. Therefore, the conv1d_autoencoder.py file has to be configured.
The normal_data_path variable has to contain the path to the .pkl file that contains data without attacks, that is to say, a normal behaviour of the houses. In addition, the attack_data_path variable has to contain the path to the .pkl file that contains the data that is wanted to be analyzed in order to detect attacks.
Furthermore, in order to train the autoencoder, the DO_TRAINING variable has to be set to True.
Finally, the following command executes the system:
$ python conv1d_autoencoder.py
## Results
Once the system is executed, it generates the predicted_labels.csv file that contains the labels that classify every entry of the DataFrame into attack (1) or normal behaviour (0).
# SecureGrid
# SecureGrid Deep Learning based Attack Detection System for Smart Grids
Deep Learning based Attack Detection System for Smart Grids
This is the software of Deep Learning based Attack Detection System for Smart Grids
## Required modules
* Keras
* There is a recognized bug in numpy 1.16.3. Thus, the numpy version should be 1.16.1.
pip uninstall numpy
pip install --upgrade numpy==1.16.1
It is composed of three modules, which should be executed in order:
# Mosaik
For running the demo number of packages are needed:
sudo apt-get install git python3-numpy python3-scipy python3-h5py
* `simululator/` - Data generation of the power of residential houses ander attacks
* `data-processing/` - Data preprocessing of the results of the simulator
* `attack-detector/` - deep learning module for detecting attacks
In addition, there is a bug in arrow in mosaik demo, so you should install the version arrow 0.14:
pip install arrow==0.14
Execute
python securegrid-demo.py
After finishing, you will have the simulation data in the file demo.hdf5
You can visualize this file with any hdf5 viewer.
In our case, we are using ViTables (http://vitables.org/Download/).
If you desire to install it, follow the installation instructions.
The suggested process is:
apt install libhdf5-dev
pip install pyqt5
pip install vitables
Then execute 'vitables' in a terminal.
If you wish to visualize the scenario, you can install maverig: https://bitbucket.org/mosaik/maverig/src/master/. Basically
pip install maverig
## Usage
In order to detect attacks, the power consumption values of the houses are analyzed. For that reason, first, the needed DataFrames to feed the neural network (autoencoder) have to be created.
For this purpose, the notebook dataframe_creation is used. This notebook generates .pkl files that contain the DataFrames with the necessary data. In addition, these DataFrames contain the following features:
| Feature | Description |
| ------------- | ------------- |
| Day | Current day of the first window value |
| Hour | Current hour of the first window value |
| Minute | Current minute of the first window value |
| Pn | Power consumption window values |
| Mean | Mean of the window values |
| Mean_i - Mean_i-1 | Difference between the mean of the window values and the mean of the previous window values |
| s | Standard deviation of the window values |
| Pn - P1 | Difference between the last and first value of the window |
| Q1 | First quartile of the window values |
| Q2 | Median of the window values |
| Q3 | Third quartile of the window values |
| IQR | Interquartile range of the window values |
For executing the dataframe, it is needed to install the package h5py
pip install h5py
Once the DataFrames are created, they are used to feed the autoencoder. Therefore, the conv1d_autoencoder.py file has to be configured.
The normal_data_path variable has to contain the path to the .pkl file that contains data without attacks, that is to say, a normal behaviour of the houses. In addition, the attack_data_path variable has to contain the path to the .pkl file that contains the data that is wanted to be analyzed in order to detect attacks.
Furthermore, in order to train the autoencoder, the DO_TRAINING variable has to be set to True.
Finally, the following command executes the system:
$ python conv1d_autoencoder.py
## Results
Once the system is executed, it generates the predicted_labels.csv file that contains the labels that classify every entry of the DataFrame into attack (1) or normal behaviour (0).
Please, refer to every module for its installation, configuration and execution.
This directory contains an attack detector developed with the deep learning library Keras.
## DEEP LEARNING BASED ATTACK DETECTOR
This directory contains an attack detector developed with the deep learning library Keras, based on an autoencoder architecture.
## Installation
$ pip install keras
......
## DATA PROCESSING MODULE
This directory contains the code for processing the data generated by the simulator and feeding the machine learning algorithm.
## Description
......
# Securegrid data simulator
## Securegrid data simulator
This module allows users to generate synthetic data from a smart grid that suffers False Data Injection Attacks.
Installation
============
## Installation
For this purpose, a smart grid is simulated using Mosaik, which can be installed following the instructions of this link https://mosaik.readthedocs.io/en/latest/installation.html.
Basically, it requres two steps:
1) Installing mosaik:
......@@ -14,24 +13,21 @@ $ cd securegrid-simulator
pip install -r requirements.txt
$ pip install arrow==0.14
Description
===========
## Description
Mosaik only allows users to simulate a scenario that contains normal smart grid behavior, so this module has been implemented in order to simulate attacks. The attack that can be simulated modifies the power consumption values of the houses to a specific percentage of the original value.
The directory `securegrid-simulator` contains the data simulator for SecureGrid. It has been done extending mosaik-demo (git clone https://git@bitbucket.org/mosaik/mosaik-demo.git securegrid-simulator) with the files `securegrid-demo.py`, `householdsim.py`, `attack.py` and `model_house.py`, included in the folder `securegrid-model`.
The directory `data` contains the grid configuration (`demo_lv_grid.json`) and power profiles (`pv_10kw.csv` and `pv_30kw.csv`).
Simulation parameters
======================
## Simulation parameters
Several parametrs can be configured to generate a simulation:
- variable `nAttacks` of the `securegrid-simulator.py`: how many houses of the simulation suffer an attack.
- variable `attackPercentageValue` of the `attack.py`: percentage of the original value at which the power consumption values of the houses will be modified
- variable `attackTime` of the `attack.py`: moment in which the attack starts. This variable represents the percentage of the course of the simulation in which the attack will begin.
Execution
=========
##Execution
The following command starts the simulation.
$ python securegrid-simulator.py
......@@ -49,3 +45,5 @@ $ python -m pip install vitables
The files that will be used for attack detection are Series/HouseholdSim-0.House_{N}/P_out which contain the power of House N. Every P_out file has 44.640 values, since the
simulator generates data every minute for a month (60 minutes * 24 hours * 31 days).
The directory `generated_data` contains the simulation results in the files demo_N.hdf5 where N is the value of `attackPercentageValue` (0, 10, 20 and 30).
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment