diff --git a/FraudCapturer/Configuration/BlockConfig.cs b/FraudCapturer/Configuration/BlockConfig.cs new file mode 100644 index 0000000..1255ee9 --- /dev/null +++ b/FraudCapturer/Configuration/BlockConfig.cs @@ -0,0 +1,42 @@ +namespace FraudCapturer.Configuration; + +internal class BlockConfig +{ + public BlockConfigSet LowRiskSet { get; set; } = new BlockConfigSet(false, true, false); + public BlockConfigSet MeduimRiskSet { get; set; } = new BlockConfigSet(false, true, true); + public BlockConfigSet HighRiskSet { get; set; } = new BlockConfigSet(true, true, true); + + public bool CheckIfBlock(IpInfo ipInfo) + { + if (ipInfo.Risk <= 33) + { + return CheckIfBlockSet(ipInfo, LowRiskSet); + } + else if (ipInfo.Risk >= 67) + { + return CheckIfBlockSet(ipInfo, HighRiskSet); + } + else + { + return CheckIfBlockSet(ipInfo, MeduimRiskSet); + } + } + + public bool CheckIfBlockSet(IpInfo ipInfo, BlockConfigSet blockConfigSet) + { + if (ipInfo.Type == "VPN" && blockConfigSet.BlockIfVpn) + { + return true; + } + else if (ipInfo.IsProxy && blockConfigSet.BlockIfProxy) + { + return true; + } + else if (!ipInfo.IsProxy && blockConfigSet.BlockIfNotProxy) + { + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/FraudCapturer/Configuration/BlockConfigSet.cs b/FraudCapturer/Configuration/BlockConfigSet.cs new file mode 100644 index 0000000..4e2b952 --- /dev/null +++ b/FraudCapturer/Configuration/BlockConfigSet.cs @@ -0,0 +1,15 @@ +namespace FraudCapturer.Configuration; + +internal class BlockConfigSet +{ + public BlockConfigSet(bool blockIfNotProxy, bool blockIfProxy, bool blockIfVpn) + { + BlockIfNotProxy = blockIfNotProxy; + BlockIfProxy = blockIfProxy; + BlockIfVpn = blockIfVpn; + } + + public bool BlockIfNotProxy { get; } + public bool BlockIfProxy { get; } + public bool BlockIfVpn { get; } +} \ No newline at end of file diff --git a/FraudCapturer/Configuration/Configurator.cs b/FraudCapturer/Configuration/Configurator.cs new file mode 100644 index 0000000..19ab305 --- /dev/null +++ b/FraudCapturer/Configuration/Configurator.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FraudCapturer.Configuration; + +internal class Configurator +{ +} diff --git a/FraudCapturer/DomainHelper.cs b/FraudCapturer/Helpers/DomainHelper.cs similarity index 99% rename from FraudCapturer/DomainHelper.cs rename to FraudCapturer/Helpers/DomainHelper.cs index 18feb7e..1bb8bc7 100644 --- a/FraudCapturer/DomainHelper.cs +++ b/FraudCapturer/Helpers/DomainHelper.cs @@ -9,7 +9,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Text.RegularExpressions; -namespace FraudCapturer; +namespace FraudCapturer.Helpers; internal class DomainHelper { diff --git a/FraudCapturer/FirewallHelper.cs b/FraudCapturer/Helpers/FirewallHelper.cs similarity index 98% rename from FraudCapturer/FirewallHelper.cs rename to FraudCapturer/Helpers/FirewallHelper.cs index e1bb141..7113eb6 100644 --- a/FraudCapturer/FirewallHelper.cs +++ b/FraudCapturer/Helpers/FirewallHelper.cs @@ -1,6 +1,6 @@ using System.Net; -namespace FraudCapturer; +namespace FraudCapturer.Helpers; internal class FirewallHelper { diff --git a/FraudCapturer/IpHelper.cs b/FraudCapturer/Helpers/IpHelper.cs similarity index 99% rename from FraudCapturer/IpHelper.cs rename to FraudCapturer/Helpers/IpHelper.cs index f507b68..3ee1465 100644 --- a/FraudCapturer/IpHelper.cs +++ b/FraudCapturer/Helpers/IpHelper.cs @@ -3,7 +3,7 @@ using System.Net; using System.Text.Json; -namespace FraudCapturer; +namespace FraudCapturer.Helpers; internal class IpHelper { diff --git a/FraudCapturer/PackageHelper.cs b/FraudCapturer/Helpers/PackageHelper.cs similarity index 96% rename from FraudCapturer/PackageHelper.cs rename to FraudCapturer/Helpers/PackageHelper.cs index b4e824b..a87572d 100644 --- a/FraudCapturer/PackageHelper.cs +++ b/FraudCapturer/Helpers/PackageHelper.cs @@ -2,7 +2,7 @@ using System.Text; -namespace FraudCapturer; +namespace FraudCapturer.Helpers; internal static class PackageHelper { diff --git a/FraudCapturer/Program.cs b/FraudCapturer/Program.cs index 9f7fa90..8c6e509 100644 --- a/FraudCapturer/Program.cs +++ b/FraudCapturer/Program.cs @@ -1,4 +1,6 @@ - +using FraudCapturer.Configuration; +using FraudCapturer.Helpers; + using PacketDotNet; using SharpPcap; @@ -10,9 +12,6 @@ using System.Net; namespace FraudCapturer; -/// -/// Example showing packet manipulation -/// public class Program { public const string AppName = "FraudCapturer"; @@ -25,6 +24,8 @@ public class Program private static readonly ConcurrentBag capturedIpsCache = new(); private static readonly ConcurrentDictionary capturedDomainsCache = new(); + private static BlockConfig blockConfig = new BlockConfig(); + /// /// The main entry point for the application. /// @@ -174,19 +175,19 @@ public class Program bool block = false; ConsoleColor consoleColor; - if (ipInfo.Risk >= 67) + if (ipInfo.Risk >= 67 && blockConfig.CheckIfBlockSet(ipInfo, blockConfig.HighRiskSet)) { FirewallHelper.BlockIp(remoteIpAddress); consoleColor = ConsoleColor.Red; block = true; } - else if (ipInfo.Risk >= 34 && ipInfo.IsProxy) + else if (ipInfo.Risk <= 33 && blockConfig.CheckIfBlockSet(ipInfo, blockConfig.LowRiskSet)) { FirewallHelper.BlockIp(remoteIpAddress); - consoleColor = ConsoleColor.DarkYellow; + consoleColor = ConsoleColor.Yellow; block = true; } - else if (ipInfo.IsProxy && ipInfo.Type != "VPN") + else if (blockConfig.CheckIfBlockSet(ipInfo, blockConfig.MeduimRiskSet)) { FirewallHelper.BlockIp(remoteIpAddress); consoleColor = ConsoleColor.DarkYellow;