From e9147ff2b7d66ce216ac951a352e14bffeb5ed37 Mon Sep 17 00:00:00 2001
From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com>
Date: Tue, 11 Jan 2022 23:30:54 +0100
Subject: [PATCH] - Add Block config class
---
FraudCapturer/Configuration/BlockConfig.cs | 42 +++++++++++++++++++
FraudCapturer/Configuration/BlockConfigSet.cs | 15 +++++++
FraudCapturer/Configuration/Configurator.cs | 11 +++++
FraudCapturer/{ => Helpers}/DomainHelper.cs | 2 +-
FraudCapturer/{ => Helpers}/FirewallHelper.cs | 2 +-
FraudCapturer/{ => Helpers}/IpHelper.cs | 2 +-
FraudCapturer/{ => Helpers}/PackageHelper.cs | 2 +-
FraudCapturer/Program.cs | 17 ++++----
8 files changed, 81 insertions(+), 12 deletions(-)
create mode 100644 FraudCapturer/Configuration/BlockConfig.cs
create mode 100644 FraudCapturer/Configuration/BlockConfigSet.cs
create mode 100644 FraudCapturer/Configuration/Configurator.cs
rename FraudCapturer/{ => Helpers}/DomainHelper.cs (99%)
rename FraudCapturer/{ => Helpers}/FirewallHelper.cs (98%)
rename FraudCapturer/{ => Helpers}/IpHelper.cs (99%)
rename FraudCapturer/{ => Helpers}/PackageHelper.cs (96%)
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;