Attacks

class graph_tiger.attacks.Attack(graph, runs=10, steps=50, attack='id_node', defense=None, k_d=0, **kwargs)

Bases: graph_tiger.simulations.Simulation

This class simulates a variety of attack strategies on an undirected NetworkX graph

Parameters
  • graph – an undirected NetworkX graph

  • runs – an integer number of times to run the simulation

  • steps – an integer number of steps to run a single simulation

  • attack – a string representing the attack strategy to run

  • defense – a string representing the defense strategy to run

  • k_d – an integer number of nodes to defend

  • **kwargs

    see parent class Simulation for additional options

reset_simulation()

Resets the simulation between each run

run_single_sim()

Run the attack simulation

track_simulation(step)

Keeps track of important simulation information at each step of the simulation

Parameters

step – current simulation iteration

graph_tiger.attacks.get_attack_category(method)

Gets the attack category e.g., ‘node’, ‘edge’ attack

Parameters

method – a string representing the attack method

Returns

a string representing the attack type (‘node’ or ‘edge’)

graph_tiger.attacks.get_attack_methods()

Gets a list of available attach methods as a list of functions

Returns

a list of all attack functions

graph_tiger.attacks.get_edge_ib(graph, k=3, approx=inf)

Get k edges to attack based on Initial Betweenness (IB) Removal [13].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

  • approx – number of edges to approximate the betweenness centrality

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_id(graph, k=3)

Get k edges to attack based on Initial Degree (ID) Removal [13].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_line_deg(graph, k=3)

Get k edges to attack using degree centrality by transforming the graph into a line graph [16].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_line_eig(graph, k=3)

Get k edges to attack using eigenvector centrality by transforming the graph into a line graph [16].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_line_ns(graph, k=3)

Get k edges to attack using Netshield by transforming the graph into a line graph [17,16]

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_line_pr(graph, k=3)

Get k edges to attack using PageRank by transforming the graph into a line graph [16].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_rb(graph, k=3, approx=inf)

Get k edges to attack based on Recalculated Betweenness (RB) Removal [13].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

  • approx – number of edges to approximate the betweenness centrality

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_rd(graph, k=3)

Get k edges to attack based on Recalculated Degree (RD) Removal [13].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_edge_rnd(graph, k=3)

Randomly select k edges to attack

Parameters
  • graph – an undirected NetworkX graph

  • k – number of edges to attack

Returns

a list of edge tuples to attack

graph_tiger.attacks.get_node_eig(graph, k=3)

Get k nodes to attack based on top eigenvector centrality entries

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

Returns

a list of nodes to attack

graph_tiger.attacks.get_node_ib(graph, k=3, approx=inf)

Get k nodes to attack based on Initial Betweenness (IB) Removal [2].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

  • approx – number of nodes to approximate the betweenness centrality, k=0.1n is a good approximation, where n

is the number of nodes in the graph

Returns

a list of nodes to attack

graph_tiger.attacks.get_node_id(graph, k=3)

Get k nodes to attack based on Initial Degree (ID) Removal [2].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

Returns

a list of nodes to attack

graph_tiger.attacks.get_node_ns(graph, k=3)

Get k nodes to attack based on the Netshield algorithm :cite`tong2010vulnerability`.

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

Returns

a list of nodes to attack

graph_tiger.attacks.get_node_pr(graph, k=3)

Get k nodes to attack based on top PageRank entries :cite`page1999pagerank`.

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

Returns

a list of nodes to attack

graph_tiger.attacks.get_node_rb(graph, k=3, approx=inf)

Get k nodes to attack based on Recalculated Betweenness (RB) Removal [2].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

  • approx – number of nodes to approximate the betweenness centrality, k=0.1n is a good approximation, where n

is the number of nodes in the graph

Returns

a list of nodes to attack

graph_tiger.attacks.get_node_rd(graph, k=3)

Get k nodes to attack based on Recalculated Degree (RD) Removal [2].

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

Returns

a list of nodes to attack

graph_tiger.attacks.get_node_rnd(graph, k=3)

Randomly select k distinct nodes to attack

Parameters
  • graph – an undirected NetworkX graph

  • k – number of nodes to attack

Returns

a list of nodes to attack

graph_tiger.attacks.main()
graph_tiger.attacks.run_attack_method(graph, method, k=3, approx=None, seed=None)

Runs a specified attack on an undirected graph, returning a list of nodes to attack

Parameters
  • graph – an undirected NetworkX graph

  • method – a string representing one of the attack methods

  • k – number of nodes or edges to attack

  • approx – attack approximation parameter (not available for every measure)

  • seed – sets the seed in order to obtain reproducible attacks

Returns

a list of nodes selected for attack