Network_attack_propagation/network_attack_propagation.ipynb
2022-06-21 16:40:42 +02:00

208 lines
4.5 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Propagacja ataku sieci z wykorzystaniem spacerów losowych\n",
"\n",
"- Marcin Kostrzewski\n",
"- Mateusz Tylka\n",
"- Krystian Wasilewski"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problem\n",
"\n",
"W jakich topologiach sieci komputerowych potencjalny atak wirusa rozprzestrzeniałby się najszybciej, a w których najwolniej?\n",
"Aby rozwiązać ten problem zaprojektowaliśmy symulację ataków wirusa na różne rodzaje topologii sieci."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Graf\n",
"\n",
"Grafem nazywamy kolekcję dwóch zbiorów: zbioru wierzchołków V oraz zbioru krawędzi E. Zbiór wierzchołków jest dowolnej postaci. Elementami zbioru krawędzi są e∈E, które są podzbiorami postaci v1,v2 dla pewnych dwóch wierzchołków v1,v2∈V (jeśli graf jest nieskierowany) lub parą uporządkowaną (v1,v2) jeśli graf jest skierowany.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Spacer losowy na grafie\n",
"Inaczej błądzenie losowe. Obiekt przemieszczający się na grafie losowo wybiera jeden z sąsiednich do obecnego wezłów, żeby się do nich przemieścić. Ruch ten nie zależy od historii ruchów - tylko ostatnie przemieszczenie jest brane pod uwagę przy podejmowaniu decyzji."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Model\n",
"Model sieci reprezentowany jest jako graf nieskierowany. Każdy węzeł reprezentuje w nim urządzenie a krawędzie połączenia między nimi. Węzły zaznaczone na czerwono reprezentują urządzenie zainfekowane przez wirusa, który przemieszcza się do nowych urządzeń spacerem losowym - w każdym kroku wirus wybiera jeden z sąsiadujących węzłów z jednakowym prawdopodobieństwem i próbuje go zainfekować."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Implementacja\n",
"\n",
"W naszym przypadku dana topologia sieci będzie przedstawiona za pomocą grafu nieskierowanego, a wirus będzie infekować sieć przemieszczając się po jego krawędziach za pomocą spaceru losowego."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Kod"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Eksperymenty"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Magistrala"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](bus0.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](bus8.gif)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](bus15.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pierścień"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](ring0.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](ring8.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](ring15.gif)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Gwiazda"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](star0.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](star2.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](star4.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](star6.gif)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Wnioski\n",
"\n",
"Najszybciej wirus rozprzestrzenia się w pierścieniu, a najwolniej w magistrali."
]
}
],
"metadata": {
"interpreter": {
"hash": "11938c6bc6919ae2720b4d5011047913343b08a43b18698fd82dedb0d4417594"
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}