{ "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 prosty 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 }