more functions preparing to break a network

This commit is contained in:
2017-08-26 08:01:31 -05:00
parent 7a15bbd1ce
commit 75bcd6d0ba
2 changed files with 125 additions and 1 deletions

View File

@ -89,7 +89,7 @@ namespace EduNetworkBuilder
public enum DebugPausePoint { none=0, packet_create=1, packet_kill=2,
packet_in=4, packet_out=8, packet_duplicate=16, all=63,
dump=256, pause=512}
public enum TraversalTechnology { gateway, static_route, vlan, ethernet, wireless, firewall,
public enum TraversalTechnology { any, none, gateway, static_route, vlan, ethernet, wireless, firewall,
vpn, vpn_encryption, vpn_decryption, ip_address, masquerade, forward, arrived}
public enum HowToBreak { PowerOff, EthernetBreak, EthernetCorrupt, LockOutSwitch,
WirelessBreakSSID, WirelessBreakKey, DeviceChangeIP, DeviceChangeGW, StaticRouteClear,
@ -1137,5 +1137,73 @@ namespace EduNetworkBuilder
return dest;
}
/// <summary>
/// return a list of ways to break a given technology
/// </summary>
/// <param name="What"></param>
/// <returns></returns>
public static List<HowToBreak> WaysToBreakATechnology(TraversalTechnology What)
{
switch(What)
{
case TraversalTechnology.ethernet:
return new List<HowToBreak>() { HowToBreak.EthernetBreak, HowToBreak.EthernetCorrupt };
case TraversalTechnology.forward:
return new List<HowToBreak>() { HowToBreak.PowerOff, HowToBreak.LockOutSwitch };
case TraversalTechnology.gateway:
return new List<HowToBreak>() { HowToBreak.DeviceChangeGW };
case TraversalTechnology.firewall:
return new List<HowToBreak>() { };
case TraversalTechnology.ip_address:
return new List<HowToBreak>() { HowToBreak.DeviceChangeIP };
case TraversalTechnology.masquerade:
return new List<HowToBreak>() { };
case TraversalTechnology.static_route:
return new List<HowToBreak>() { HowToBreak.StaticRouteClear, HowToBreak.StaticRouteCorrupt };
case TraversalTechnology.vlan:
return new List<HowToBreak>() { HowToBreak.VLANChange};
case TraversalTechnology.vpn:
return new List<HowToBreak>() { HowToBreak.VPNChangeEndpoint, HowToBreak.VPNChangeKey };
case TraversalTechnology.vpn_decryption:
return new List<HowToBreak>() { HowToBreak.VPNChangeKey };
case TraversalTechnology.vpn_encryption:
return new List<HowToBreak>() { HowToBreak.VPNChangeKey };
case TraversalTechnology.wireless:
return new List<HowToBreak>() { HowToBreak.WirelessBreakKey, HowToBreak.WirelessBreakSSID };
}
return new List<HowToBreak>(); //An empty list
}
public static TraversalTechnology TechnologyNeededToBreak(HowToBreak How)
{
switch(How)
{
case HowToBreak.DeviceChangeGW:
return TraversalTechnology.gateway;
case HowToBreak.DeviceChangeIP:
return TraversalTechnology.ip_address;
case HowToBreak.EthernetBreak:
case HowToBreak.EthernetCorrupt:
return TraversalTechnology.ethernet;
case HowToBreak.LockOutSwitch:
return TraversalTechnology.forward; //we can only lock ourselves out of switchs and hubs
case HowToBreak.PowerOff:
return TraversalTechnology.any; //Any will only return devices
case HowToBreak.StaticRouteClear:
case HowToBreak.StaticRouteCorrupt:
return TraversalTechnology.static_route;
case HowToBreak.VLANChange:
return TraversalTechnology.vlan;
case HowToBreak.VPNChangeEndpoint:
return TraversalTechnology.vpn;
case HowToBreak.VPNChangeKey:
return TraversalTechnology.vpn;
case HowToBreak.WirelessBreakKey:
case HowToBreak.WirelessBreakSSID:
return TraversalTechnology.wireless;
}
return TraversalTechnology.none;
}
}
}