diff --git a/tools/NetWorkManager/NetWorkManager.sln b/tools/NetWorkManager/NetWorkManager.sln
new file mode 100644
index 0000000..e272126
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.11.35327.3
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetWorkManager", "NetWorkManager\NetWorkManager.csproj", "{25900669-2872-4F11-9516-763C420E2B96}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {25900669-2872-4F11-9516-763C420E2B96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {25900669-2872-4F11-9516-763C420E2B96}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {25900669-2872-4F11-9516-763C420E2B96}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {25900669-2872-4F11-9516-763C420E2B96}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/tools/NetWorkManager/NetWorkManager/App.config b/tools/NetWorkManager/NetWorkManager/App.config
new file mode 100644
index 0000000..4450192
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/App.config
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+ System
+
+
+ True
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/FodyWeavers.xml b/tools/NetWorkManager/NetWorkManager/FodyWeavers.xml
new file mode 100644
index 0000000..f1dea8f
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/FodyWeavers.xsd b/tools/NetWorkManager/NetWorkManager/FodyWeavers.xsd
new file mode 100644
index 0000000..ff119f7
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/FodyWeavers.xsd
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ The order of preloaded assemblies, delimited with line breaks.
+
+
+
+
+
+ This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
+
+
+
+
+ Controls if .pdbs for reference assemblies are also embedded.
+
+
+
+
+ Controls if runtime assemblies are also embedded.
+
+
+
+
+ Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.
+
+
+
+
+ Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
+
+
+
+
+ As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
+
+
+
+
+ Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
+
+
+
+
+ Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with |.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with |.
+
+
+
+
+ The order of preloaded assemblies, delimited with |.
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/Form1.Designer.cs b/tools/NetWorkManager/NetWorkManager/Form1.Designer.cs
new file mode 100644
index 0000000..529f74b
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Form1.Designer.cs
@@ -0,0 +1,175 @@
+namespace NetWorkManager
+{
+ partial class Form1
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.gridControl = new DevExpress.XtraGrid.GridControl();
+ this.gridView = new DevExpress.XtraGrid.Views.Grid.GridView();
+ this.ribbonControl = new DevExpress.XtraBars.Ribbon.RibbonControl();
+ this.bsiRecordsCount = new DevExpress.XtraBars.BarStaticItem();
+ this.bbiDelete = new DevExpress.XtraBars.BarButtonItem();
+ this.bbiRefresh = new DevExpress.XtraBars.BarButtonItem();
+ this.ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
+ this.ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+ this.ribbonStatusBar = new DevExpress.XtraBars.Ribbon.RibbonStatusBar();
+ ((System.ComponentModel.ISupportInitialize)(this.gridControl)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.gridView)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.ribbonControl)).BeginInit();
+ this.SuspendLayout();
+ //
+ // gridControl
+ //
+ this.gridControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.gridControl.EmbeddedNavigator.Margin = new System.Windows.Forms.Padding(4);
+ this.gridControl.Location = new System.Drawing.Point(0, 231);
+ this.gridControl.MainView = this.gridView;
+ this.gridControl.Margin = new System.Windows.Forms.Padding(4);
+ this.gridControl.MenuManager = this.ribbonControl;
+ this.gridControl.Name = "gridControl";
+ this.gridControl.Size = new System.Drawing.Size(1448, 839);
+ this.gridControl.TabIndex = 2;
+ this.gridControl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+ this.gridView});
+ this.gridControl.Click += new System.EventHandler(this.gridControl_Click);
+ this.gridControl.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gridControl_MouseClick);
+ //
+ // gridView
+ //
+ this.gridView.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+ this.gridView.DetailHeight = 512;
+ this.gridView.GridControl = this.gridControl;
+ this.gridView.Name = "gridView";
+ this.gridView.OptionsBehavior.Editable = false;
+ this.gridView.OptionsBehavior.ReadOnly = true;
+ this.gridView.OptionsEditForm.PopupEditFormWidth = 1200;
+ this.gridView.Click += new System.EventHandler(this.gridView_Click);
+ //
+ // ribbonControl
+ //
+ this.ribbonControl.EmptyAreaImageOptions.ImagePadding = new System.Windows.Forms.Padding(45, 44, 45, 44);
+ this.ribbonControl.ExpandCollapseItem.Id = 0;
+ this.ribbonControl.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.ribbonControl.ExpandCollapseItem,
+ this.bsiRecordsCount,
+ this.bbiDelete,
+ this.bbiRefresh});
+ this.ribbonControl.Location = new System.Drawing.Point(0, 0);
+ this.ribbonControl.Margin = new System.Windows.Forms.Padding(4);
+ this.ribbonControl.MaxItemId = 20;
+ this.ribbonControl.Name = "ribbonControl";
+ this.ribbonControl.OptionsMenuMinWidth = 495;
+ this.ribbonControl.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] {
+ this.ribbonPage1});
+ this.ribbonControl.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonControlStyle.Office2013;
+ this.ribbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
+ this.ribbonControl.Size = new System.Drawing.Size(1448, 231);
+ this.ribbonControl.StatusBar = this.ribbonStatusBar;
+ this.ribbonControl.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
+ //
+ // bsiRecordsCount
+ //
+ this.bsiRecordsCount.Caption = "RECORDS : 0";
+ this.bsiRecordsCount.Id = 15;
+ this.bsiRecordsCount.Name = "bsiRecordsCount";
+ //
+ // bbiDelete
+ //
+ this.bbiDelete.Caption = "Terminate";
+ this.bbiDelete.Id = 18;
+ this.bbiDelete.ImageOptions.ImageUri.Uri = "Delete";
+ this.bbiDelete.Name = "bbiDelete";
+ this.bbiDelete.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.bbiDelete_ItemClick);
+ //
+ // bbiRefresh
+ //
+ this.bbiRefresh.Caption = "Refresh";
+ this.bbiRefresh.Id = 19;
+ this.bbiRefresh.ImageOptions.ImageUri.Uri = "Refresh";
+ this.bbiRefresh.Name = "bbiRefresh";
+ this.bbiRefresh.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.bbiRefresh_ItemClick);
+ //
+ // ribbonPage1
+ //
+ this.ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] {
+ this.ribbonPageGroup1});
+ this.ribbonPage1.MergeOrder = 0;
+ this.ribbonPage1.Name = "ribbonPage1";
+ this.ribbonPage1.Text = "Home";
+ //
+ // ribbonPageGroup1
+ //
+ this.ribbonPageGroup1.AllowTextClipping = false;
+ this.ribbonPageGroup1.CaptionButtonVisible = DevExpress.Utils.DefaultBoolean.False;
+ this.ribbonPageGroup1.ItemLinks.Add(this.bbiDelete);
+ this.ribbonPageGroup1.ItemLinks.Add(this.bbiRefresh);
+ this.ribbonPageGroup1.Name = "ribbonPageGroup1";
+ this.ribbonPageGroup1.Text = "Tasks";
+ //
+ // ribbonStatusBar
+ //
+ this.ribbonStatusBar.ItemLinks.Add(this.bsiRecordsCount);
+ this.ribbonStatusBar.Location = new System.Drawing.Point(0, 1034);
+ this.ribbonStatusBar.Margin = new System.Windows.Forms.Padding(4);
+ this.ribbonStatusBar.Name = "ribbonStatusBar";
+ this.ribbonStatusBar.Ribbon = this.ribbonControl;
+ this.ribbonStatusBar.Size = new System.Drawing.Size(1448, 36);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 19F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1448, 1070);
+ this.Controls.Add(this.ribbonStatusBar);
+ this.Controls.Add(this.gridControl);
+ this.Controls.Add(this.ribbonControl);
+ this.Margin = new System.Windows.Forms.Padding(4);
+ this.Name = "Form1";
+ this.Ribbon = this.ribbonControl;
+ this.StatusBar = this.ribbonStatusBar;
+ this.Text = "NetWorkManger";
+ ((System.ComponentModel.ISupportInitialize)(this.gridControl)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.gridView)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.ribbonControl)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraGrid.GridControl gridControl;
+ private DevExpress.XtraGrid.Views.Grid.GridView gridView;
+ private DevExpress.XtraBars.Ribbon.RibbonControl ribbonControl;
+ private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
+ private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
+ private DevExpress.XtraBars.Ribbon.RibbonStatusBar ribbonStatusBar;
+ private DevExpress.XtraBars.BarStaticItem bsiRecordsCount;
+ private DevExpress.XtraBars.BarButtonItem bbiDelete;
+ private DevExpress.XtraBars.BarButtonItem bbiRefresh;
+ }
+}
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/Form1.cs b/tools/NetWorkManager/NetWorkManager/Form1.cs
new file mode 100644
index 0000000..d64b475
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Form1.cs
@@ -0,0 +1,123 @@
+using DevExpress.Utils.Design;
+using DevExpress.Utils.Extensions;
+using DevExpress.XtraBars;
+using DevExpress.XtraEditors;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+
+
+namespace NetWorkManager
+{
+ public partial class Form1 : DevExpress.XtraBars.Ribbon.RibbonForm
+ {
+ public Form1()
+ {
+ InitializeComponent();
+
+ BindingList dataSource = GetDataSource();
+ gridControl.DataSource = dataSource;
+ bsiRecordsCount.Caption = "RECORDS : " + dataSource.Count;
+ }
+ void bbiPrintPreview_ItemClick(object sender, ItemClickEventArgs e)
+ {
+ gridControl.ShowRibbonPrintPreview();
+ }
+ public BindingList GetDataSource()
+ {
+ List internet_infolist = PortScanner.GetAllInfo();
+
+ BindingList result = new BindingList();
+
+ int index = 1;
+ foreach(var item in internet_infolist)
+ {
+ result.Add(new Customer()
+ {
+ ID = index++,
+ PID = item.pid,
+ Process = item.process,
+ Local = item.local,
+ Remote = item.remote,
+ State = item.state,
+ Protocal = item.protocal
+ });
+ }
+
+ return result;
+ }
+ public class Customer
+ {
+ [Key, Display(AutoGenerateField = false)]
+ public int ID { get; set; }
+ [Required]
+ public string PID { get; set; }
+ public string Process { get; set; }
+ public string Local { get; set; }
+ public string Remote { get; set; }
+ // [Display(Name = "Zip Code")]
+ public string State { get; set; }
+ public string Protocal { get; set; }
+ }
+
+ private void bbiRefresh_ItemClick(object sender, ItemClickEventArgs e)
+ {
+ BindingList dataSource = GetDataSource();
+ gridControl.DataSource = dataSource;
+ bsiRecordsCount.Caption = "RECORDS : " + dataSource.Count;
+ }
+
+ private void bbiDelete_ItemClick(object sender, ItemClickEventArgs e)
+ {
+ var tRcvrLineID = gridView.GetFocusedRowCellValue("PID").ToString();
+ var processee = gridView.GetFocusedRowCellValue("Process").ToString();
+
+ if (XtraMessageBox.Show("Do you want to terminate" +$" PID:{tRcvrLineID} Process:{processee}", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
+ {
+
+ try
+ {
+ Process process = Process.GetProcessById(Convert.ToInt32(tRcvrLineID));
+ process.Kill();
+ process.WaitForExit();
+
+ XtraMessageBox.Show($" PID:{tRcvrLineID} Process:{processee} Terminated!", "Succuess Execute!");
+ }
+ catch (Exception ex)
+ {
+ XtraMessageBox.Show($" PID:{tRcvrLineID} Process:{processee} {ex.Message}!", "error!");
+ }
+
+
+ BindingList dataSource = GetDataSource();
+ gridControl.DataSource = dataSource;
+ bsiRecordsCount.Caption = "RECORDS : " + dataSource.Count;
+ }
+
+ }
+
+ private void gridControl_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void gridControl_MouseClick(object sender, MouseEventArgs e)
+ {
+
+ }
+
+ private void gridView_Click(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/Form1.resx b/tools/NetWorkManager/NetWorkManager/Form1.resx
new file mode 100644
index 0000000..29dcb1b
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Form1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/NetWorkManager.csproj b/tools/NetWorkManager/NetWorkManager/NetWorkManager.csproj
new file mode 100644
index 0000000..9c0d1b3
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/NetWorkManager.csproj
@@ -0,0 +1,129 @@
+
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {25900669-2872-4F11-9516-763C420E2B96}
+ WinExe
+ Properties
+ NetWorkManager
+ NetWorkManager
+ v4.7.2
+ 512
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ none
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+ Form1.cs
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ False
+ Microsoft .NET Framework 4.7.2 %28x86 and x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/NetWorkManager.csproj.user b/tools/NetWorkManager/NetWorkManager/NetWorkManager.csproj.user
new file mode 100644
index 0000000..337aec9
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/NetWorkManager.csproj.user
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+ en-US
+ false
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/Program.cs b/tools/NetWorkManager/NetWorkManager/Program.cs
new file mode 100644
index 0000000..71f0ea7
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Program.cs
@@ -0,0 +1,24 @@
+using DevExpress.LookAndFeel;
+using DevExpress.Skins;
+using DevExpress.UserSkins;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace NetWorkManager
+{
+ internal static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/tools/NetWorkManager/NetWorkManager/Properties/AssemblyInfo.cs b/tools/NetWorkManager/NetWorkManager/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..617d258
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Properties/AssemblyInfo.cs
@@ -0,0 +1,32 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("NetWorkManager")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NetWorkManager")]
+[assembly: AssemblyCopyright("Copyright © 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9006f149-aa49-4b8e-ba69-386d945fa738")]
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/tools/NetWorkManager/NetWorkManager/Properties/Resources.Designer.cs b/tools/NetWorkManager/NetWorkManager/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..7b28f15
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18034
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace NetWorkManager.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NetWorkManager.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/tools/NetWorkManager/NetWorkManager/Properties/Resources.resx b/tools/NetWorkManager/NetWorkManager/Properties/Resources.resx
new file mode 100644
index 0000000..9ad3961
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/NetWorkManager/Properties/Settings.Designer.cs b/tools/NetWorkManager/NetWorkManager/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..de8d37c
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18034
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace NetWorkManager.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/tools/NetWorkManager/NetWorkManager/Properties/Settings.settings b/tools/NetWorkManager/NetWorkManager/Properties/Settings.settings
new file mode 100644
index 0000000..abf36c5
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/tools/NetWorkManager/NetWorkManager/Properties/licenses.licx b/tools/NetWorkManager/NetWorkManager/Properties/licenses.licx
new file mode 100644
index 0000000..4084563
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/Properties/licenses.licx
@@ -0,0 +1,2 @@
+DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v24.1, Version=24.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v24.1, Version=24.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/tools/NetWorkManager/NetWorkManager/enumInternet.cs b/tools/NetWorkManager/NetWorkManager/enumInternet.cs
new file mode 100644
index 0000000..38120c4
--- /dev/null
+++ b/tools/NetWorkManager/NetWorkManager/enumInternet.cs
@@ -0,0 +1,390 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using System;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Runtime.InteropServices;
+using System.Diagnostics;
+namespace NetWorkManager
+{
+
+
+public class PortScanner
+{
+
+ [DllImport("iphlpapi.dll", SetLastError = true)]
+ private static extern uint GetExtendedTcpTable(
+ IntPtr pTcpTable,
+ ref int dwOutBufLen,
+ bool sort,
+ int ipVersion,
+ TCP_TABLE_CLASS tblClass,
+ uint reserved = 0);
+
+ private enum TCP_TABLE_CLASS
+ {
+ TCP_TABLE_BASIC_LISTENER,
+ TCP_TABLE_BASIC_CONNECTIONS,
+ TCP_TABLE_BASIC_ALL,
+ TCP_TABLE_OWNER_PID_LISTENER,
+ TCP_TABLE_OWNER_PID_CONNECTIONS,
+ TCP_TABLE_OWNER_PID_ALL,
+ TCP_TABLE_OWNER_MODULE_LISTENER,
+ TCP_TABLE_OWNER_MODULE_CONNECTIONS,
+ TCP_TABLE_OWNER_MODULE_ALL
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_TCPROW_OWNER_PID
+ {
+ public uint state;
+ public uint localAddr;
+ public uint localPort;
+ public uint remoteAddr;
+ public uint remotePort;
+ public uint owningPid;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_TCPTABLE_OWNER_PID
+ {
+ public uint dwNumEntries;
+ [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)]
+ public MIB_TCPROW_OWNER_PID[] table;
+ }
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_TCP6ROW_OWNER_PID
+ {
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
+ public byte[] localAddr;
+ public uint localScopeId;
+ public uint localPort;
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
+ public byte[] remoteAddr;
+ public uint remoteScopeId;
+ public uint remotePort;
+ public uint state;
+ public uint owningPid;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_TCP6TABLE_OWNER_PID
+ {
+ public uint dwNumEntries;
+ [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)]
+ public MIB_TCP6ROW_OWNER_PID[] table;
+ }
+ private enum UDP_TABLE_CLASS
+ {
+ UDP_TABLE_BASIC,
+ UDP_TABLE_OWNER_PID,
+ UDP_TABLE_OWNER_MODULE
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_UDP6ROW_OWNER_PID
+ {
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
+ public byte[] localAddr;
+ public uint localScopeId;
+ public uint localPort;
+ public uint owningPid;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_UDP6TABLE_OWNER_PID
+ {
+ public uint dwNumEntries;
+ [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)]
+ public MIB_UDP6ROW_OWNER_PID[] table;
+ }
+
+
+
+
+ [DllImport("iphlpapi.dll", SetLastError = true)]
+ private static extern uint GetExtendedUdpTable(
+ IntPtr pUdpTable,
+ ref int dwOutBufLen,
+ bool sort,
+ int ipVersion,
+ UDP_TABLE_CLASS tblClass,
+ uint reserved = 0);
+
+
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_UDPROW_OWNER_PID
+ {
+ public uint localAddr;
+ public uint localPort;
+ public uint owningPid;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct MIB_UDPTABLE_OWNER_PID
+ {
+ public uint dwNumEntries;
+ [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)]
+ public MIB_UDPROW_OWNER_PID[] table;
+ }
+
+
+ private static string[] TcpStateStrings = new string[] {
+ "CLOSED", "LISTENING", "SYN_SENT", "SYN_RCVD",
+ "ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "CLOSE_WAIT",
+ "CLOSING", "LAST_ACK", "TIME_WAIT", "DELETE_TCB"
+ };
+ private const int AF_INET = 2;
+ private const int AF_INET6 = 23;
+
+ public class internet_info
+ {
+ public string pid;
+ public string process;
+ public string local;
+ public string remote;
+ public string state;
+ public string protocal;
+
+ public internet_info(string pid, string process, string local, string remote, string state, string protocal)
+ {
+ this.pid = pid.Trim();
+ this.process = process.Trim();
+ this.local = local.Trim();
+ this.remote = remote.Trim();
+ this.state = state.Trim();
+ this.protocal = protocal.Trim();
+ }
+ }
+ public static List internet_infolist = new List();
+ public static List GetAllInfo()
+ {
+ internet_infolist.Clear();
+
+ Console.WriteLine("IPv4 TCP Connections:");
+ ScanTcpPorts(AF_INET);
+ Console.WriteLine("\nIPv6 TCP Connections:");
+ ScanTcpPorts(AF_INET6);
+ Console.WriteLine("\nIPv4 UDP Connections:");
+ ScanUdpPorts(AF_INET);
+ Console.WriteLine("\nIPv6 UDP Connections:");
+ ScanUdpPorts(AF_INET6);
+
+ return internet_infolist;
+
+ }
+
+ private static void ScanTcpPorts(int ipVersion)
+ {
+ IntPtr tcpTable = IntPtr.Zero;
+ int tcpTableSize = 0;
+ uint ret = GetExtendedTcpTable(
+ tcpTable,
+ ref tcpTableSize,
+ true,
+ ipVersion,
+ TCP_TABLE_CLASS.TCP_TABLE_OWNER_PID_ALL);
+
+ if (ret != 0 && ret != 122) // ERROR_INSUFFICIENT_BUFFER
+ {
+ Console.WriteLine($"GetExtendedTcpTable failed: {ret}");
+ return;
+ }
+
+ tcpTable = Marshal.AllocHGlobal(tcpTableSize);
+ ret = GetExtendedTcpTable(
+ tcpTable,
+ ref tcpTableSize,
+ true,
+ ipVersion,
+ TCP_TABLE_CLASS.TCP_TABLE_OWNER_PID_ALL);
+
+ if (ret != 0)
+ {
+ Console.WriteLine($"GetExtendedTcpTable failed: {ret}");
+ Marshal.FreeHGlobal(tcpTable);
+ return;
+ }
+
+ if (ipVersion == AF_INET)
+ {
+
+ var table = Marshal.PtrToStructure(tcpTable);
+ IntPtr rowPtr = (IntPtr)((long)tcpTable + Marshal.SizeOf(table.dwNumEntries));
+
+ for (int i = 0; i < table.dwNumEntries; i++)
+ {
+ var row = Marshal.PtrToStructure(rowPtr);
+ string processName = GetProcessName((int)row.owningPid);
+ string localAddr = new IPAddress(row.localAddr).ToString();
+ string remoteAddr = row.remoteAddr != 0 ?
+ new IPAddress(row.remoteAddr).ToString() : "0.0.0.0";
+ ushort localPort = NetworkToHostPort(row.localPort);
+ ushort remotePort = NetworkToHostPort(row.remotePort);
+
+ Console.WriteLine(
+ $"PID: {row.owningPid,6} | " +
+ $"Process: {processName,-20} | " +
+ $"Local: {localAddr}:{localPort,-5} | " +
+ $"Remote: {remoteAddr}:{remotePort,-5} | " +
+ $"State: {TcpStateStrings[row.state]}");
+
+ rowPtr = (IntPtr)((long)rowPtr + Marshal.SizeOf(typeof(MIB_TCPROW_OWNER_PID)));
+
+ internet_info ifo = new internet_info($"{row.owningPid,6}", $"{processName,-20}", $"{localAddr}:{localPort,-5}", $"{remoteAddr}:{remotePort,-5}", $"{TcpStateStrings[row.state]}", "tcpv4");
+
+ internet_infolist.Add(ifo);
+ }
+ }
+ else
+ {
+
+ var table = Marshal.PtrToStructure(tcpTable);
+ IntPtr rowPtr = (IntPtr)((long)tcpTable + Marshal.SizeOf(table.dwNumEntries));
+
+ for (int i = 0; i < table.dwNumEntries; i++)
+ {
+ var row = Marshal.PtrToStructure(rowPtr);
+ string processName = GetProcessName((int)row.owningPid);
+ IPAddress localAddr = new IPAddress(row.localAddr, row.localScopeId);
+ IPAddress remoteAddr = new IPAddress(row.remoteAddr, row.remoteScopeId);
+ ushort localPort = NetworkToHostPort(row.localPort);
+ ushort remotePort = NetworkToHostPort(row.remotePort);
+
+ Console.WriteLine(
+ $"PID: {row.owningPid,6} | " +
+ $"Process: {processName,-20} | " +
+ $"Local: [{localAddr}]:{localPort,-5} | " +
+ $"Remote: [{remoteAddr}]:{remotePort,-5} | " +
+ $"State: {TcpStateStrings[row.state]}");
+
+ rowPtr = (IntPtr)((long)rowPtr + Marshal.SizeOf(typeof(MIB_TCP6ROW_OWNER_PID)));
+
+ internet_info ifo = new internet_info($"{row.owningPid,6}", $"{processName,-20}", $"{localAddr}:{localPort,-5}", $"{remoteAddr}:{remotePort,-5}", $"{TcpStateStrings[row.state]}", "tcpv6");
+
+ internet_infolist.Add(ifo);
+ }
+ }
+
+ Marshal.FreeHGlobal(tcpTable);
+ }
+
+ private static void ScanUdpPorts(int ipVersion)
+ {
+ IntPtr udpTable = IntPtr.Zero;
+ int udpTableSize = 0;
+ uint ret = GetExtendedUdpTable(
+ udpTable,
+ ref udpTableSize,
+ true,
+ ipVersion,
+ UDP_TABLE_CLASS.UDP_TABLE_OWNER_PID);
+
+ if (ret != 0 && ret != 122) // ERROR_INSUFFICIENT_BUFFER
+ {
+ Console.WriteLine($"GetExtendedUdpTable failed: {ret}");
+ return;
+ }
+
+ udpTable = Marshal.AllocHGlobal(udpTableSize);
+ ret = GetExtendedUdpTable(
+ udpTable,
+ ref udpTableSize,
+ true,
+ ipVersion,
+ UDP_TABLE_CLASS.UDP_TABLE_OWNER_PID);
+
+ if (ret != 0)
+ {
+ Console.WriteLine($"GetExtendedUdpTable failed: {ret}");
+ Marshal.FreeHGlobal(udpTable);
+ return;
+ }
+
+ if (ipVersion == AF_INET)
+ {
+
+ var table = Marshal.PtrToStructure(udpTable);
+ IntPtr rowPtr = (IntPtr)((long)udpTable + Marshal.SizeOf(table.dwNumEntries));
+
+ for (int i = 0; i < table.dwNumEntries; i++)
+ {
+ var row = Marshal.PtrToStructure(rowPtr);
+ string processName = GetProcessName((int)row.owningPid);
+ string localAddr = new IPAddress(row.localAddr).ToString();
+ ushort localPort = NetworkToHostPort(row.localPort);
+
+ Console.WriteLine(
+ $"PID: {row.owningPid,6} | " +
+ $"Process: {processName,-20} | " +
+ $"Local: {localAddr}:{localPort} | " +
+ $"State: LISTENING");
+
+ rowPtr = (IntPtr)((long)rowPtr + Marshal.SizeOf(typeof(MIB_UDPROW_OWNER_PID)));
+
+ internet_info ifo = new internet_info($"{row.owningPid,6}", $"{processName,-20}", $"{localAddr}:{localPort,-5}", $"", $"", "udpv4");
+
+ internet_infolist.Add(ifo);
+ }
+ }
+ else
+ {
+
+ var table = Marshal.PtrToStructure(udpTable);
+ IntPtr rowPtr = (IntPtr)((long)udpTable + Marshal.SizeOf(table.dwNumEntries));
+
+ for (int i = 0; i < table.dwNumEntries; i++)
+ {
+ var row = Marshal.PtrToStructure(rowPtr);
+ string processName = GetProcessName((int)row.owningPid);
+ IPAddress localAddr = new IPAddress(row.localAddr, row.localScopeId);
+ ushort localPort = NetworkToHostPort(row.localPort);
+
+ Console.WriteLine(
+ $"PID: {row.owningPid,6} | " +
+ $"Process: {processName,-20} | " +
+ $"Local: [{localAddr}]:{localPort} | " +
+ $"State: LISTENING");
+
+ rowPtr = (IntPtr)((long)rowPtr + Marshal.SizeOf(typeof(MIB_UDP6ROW_OWNER_PID)));
+
+ internet_info ifo = new internet_info($"{row.owningPid,6}", $"{processName,-20}", $"{localAddr}:{localPort,-5}", $"", $"", "udpv6");
+
+ internet_infolist.Add(ifo);
+ }
+ }
+
+ Marshal.FreeHGlobal(udpTable);
+ }
+
+
+ private static ushort NetworkToHostPort(uint port)
+ {
+ byte[] bytes = BitConverter.GetBytes(port);
+ if (BitConverter.IsLittleEndian)
+ {
+ Array.Reverse(bytes, 0, 2);
+ }
+ return BitConverter.ToUInt16(bytes, 0);
+ }
+
+ private static string GetProcessName(int pid)
+ {
+ try
+ {
+ Process process = Process.GetProcessById(pid);
+ return process.ProcessName;
+ }
+ catch
+ {
+ return "N/A";
+ }
+ }
+}
+
+}
\ No newline at end of file
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/Costura.Fody.5.7.0.nupkg b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/Costura.Fody.5.7.0.nupkg
new file mode 100644
index 0000000..a72f637
Binary files /dev/null and b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/Costura.Fody.5.7.0.nupkg differ
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/build/Costura.Fody.props b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/build/Costura.Fody.props
new file mode 100644
index 0000000..ea96788
--- /dev/null
+++ b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/build/Costura.Fody.props
@@ -0,0 +1,15 @@
+
+
+
+ netclassicweaver
+ netstandardweaver
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/build/Costura.Fody.targets b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/build/Costura.Fody.targets
new file mode 100644
index 0000000..e8adf78
--- /dev/null
+++ b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/build/Costura.Fody.targets
@@ -0,0 +1,13 @@
+
+
+
+ true
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/icon.png b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/icon.png
new file mode 100644
index 0000000..e5fdc34
Binary files /dev/null and b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/icon.png differ
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.dll b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.dll
new file mode 100644
index 0000000..dbb5b65
Binary files /dev/null and b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.dll differ
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.pdb b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.pdb
new file mode 100644
index 0000000..2004151
Binary files /dev/null and b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.pdb differ
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.xml b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.xml
new file mode 100644
index 0000000..b08fdcb
--- /dev/null
+++ b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/lib/netstandard1.0/Costura.xml
@@ -0,0 +1,23 @@
+
+
+
+ Costura
+
+
+
+
+ Note: do not rename this class or put it inside a namespace.
+
+
+
+
+ Contains methods for interacting with the Costura system.
+
+
+
+
+ Call this to Initialize the Costura system.
+
+
+
+
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netclassicweaver/Costura.Fody.dll b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netclassicweaver/Costura.Fody.dll
new file mode 100644
index 0000000..b8a451e
Binary files /dev/null and b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netclassicweaver/Costura.Fody.dll differ
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netclassicweaver/Costura.Fody.xcf b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netclassicweaver/Costura.Fody.xcf
new file mode 100644
index 0000000..c518dfe
--- /dev/null
+++ b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netclassicweaver/Costura.Fody.xcf
@@ -0,0 +1,115 @@
+
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ The order of preloaded assemblies, delimited with line breaks.
+
+
+
+
+
+ This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
+
+
+
+
+ Controls if .pdbs for reference assemblies are also embedded.
+
+
+
+
+ Controls if runtime assemblies are also embedded.
+
+
+
+
+ Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.
+
+
+
+
+ Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
+
+
+
+
+ As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
+
+
+
+
+ Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
+
+
+
+
+ Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with |.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with |.
+
+
+
+
+ The order of preloaded assemblies, delimited with |.
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netstandardweaver/Costura.Fody.dll b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netstandardweaver/Costura.Fody.dll
new file mode 100644
index 0000000..b16fc28
Binary files /dev/null and b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netstandardweaver/Costura.Fody.dll differ
diff --git a/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netstandardweaver/Costura.Fody.xcf b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netstandardweaver/Costura.Fody.xcf
new file mode 100644
index 0000000..c518dfe
--- /dev/null
+++ b/tools/NetWorkManager/packages/Costura.Fody.5.7.0/netstandardweaver/Costura.Fody.xcf
@@ -0,0 +1,115 @@
+
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ The order of preloaded assemblies, delimited with line breaks.
+
+
+
+
+
+ This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
+
+
+
+
+ Controls if .pdbs for reference assemblies are also embedded.
+
+
+
+
+ Controls if runtime assemblies are also embedded.
+
+
+
+
+ Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.
+
+
+
+
+ Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
+
+
+
+
+ As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
+
+
+
+
+ Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
+
+
+
+
+ Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with |.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with |.
+
+
+
+
+ The order of preloaded assemblies, delimited with |.
+
+
+
\ No newline at end of file
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/Fody.6.8.2.nupkg b/tools/NetWorkManager/packages/Fody.6.8.2/Fody.6.8.2.nupkg
new file mode 100644
index 0000000..6a2f178
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/Fody.6.8.2.nupkg differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/License.txt b/tools/NetWorkManager/packages/Fody.6.8.2/License.txt
new file mode 100644
index 0000000..e53c1de
--- /dev/null
+++ b/tools/NetWorkManager/packages/Fody.6.8.2/License.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Simon Cropp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/build/Fody.targets b/tools/NetWorkManager/packages/Fody.6.8.2/build/Fody.targets
new file mode 100644
index 0000000..78dc13f
--- /dev/null
+++ b/tools/NetWorkManager/packages/Fody.6.8.2/build/Fody.targets
@@ -0,0 +1,149 @@
+
+
+ $(ProjectDir)FodyWeavers.xml
+ $(MSBuildThisFileDirectory)..\
+ $(FodyPath)netstandardtask
+ $(FodyPath)netclassictask
+ $(FodyAssemblyDirectory)\Fody.dll
+ $(DefaultItemExcludes);FodyWeavers.xsd
+ true
+ 15
+ $([System.Version]::Parse($(MSBuildVersion)).Major)
+ AfterCompile
+ $(TargetsTriggeredByCompilation);FodyTarget
+ true
+ $(TreatWarningsAsErrors)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Fody.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Fody.dll
new file mode 100644
index 0000000..dcc8593
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Fody.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyCommon.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyCommon.dll
new file mode 100644
index 0000000..26afd10
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyCommon.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyHelpers.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyHelpers.dll
new file mode 100644
index 0000000..0e8a2d6
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyHelpers.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyIsolated.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyIsolated.dll
new file mode 100644
index 0000000..7467c4f
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/FodyIsolated.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Pdb.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Pdb.dll
new file mode 100644
index 0000000..5f65753
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Pdb.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Pdb.pdb b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Pdb.pdb
new file mode 100644
index 0000000..716032c
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Pdb.pdb differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Rocks.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Rocks.dll
new file mode 100644
index 0000000..de37dc0
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Rocks.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Rocks.pdb b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Rocks.pdb
new file mode 100644
index 0000000..2604d55
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.Rocks.pdb differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.dll
new file mode 100644
index 0000000..ce0a2f2
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.pdb b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.pdb
new file mode 100644
index 0000000..9fdf309
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netclassictask/Mono.Cecil.pdb differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Fody.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Fody.dll
new file mode 100644
index 0000000..01f5545
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Fody.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyCommon.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyCommon.dll
new file mode 100644
index 0000000..0d5013e
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyCommon.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyHelpers.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyHelpers.dll
new file mode 100644
index 0000000..0e8a2d6
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyHelpers.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyIsolated.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyIsolated.dll
new file mode 100644
index 0000000..c643697
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/FodyIsolated.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Pdb.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Pdb.dll
new file mode 100644
index 0000000..df1c878
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Pdb.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Pdb.pdb b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Pdb.pdb
new file mode 100644
index 0000000..21c0a8e
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Pdb.pdb differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Rocks.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Rocks.dll
new file mode 100644
index 0000000..3d9ca3f
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Rocks.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Rocks.pdb b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Rocks.pdb
new file mode 100644
index 0000000..7ee5bfa
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.Rocks.pdb differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.dll b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.dll
new file mode 100644
index 0000000..7986139
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.dll differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.pdb b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.pdb
new file mode 100644
index 0000000..2bffe4c
Binary files /dev/null and b/tools/NetWorkManager/packages/Fody.6.8.2/netstandardtask/Mono.Cecil.pdb differ
diff --git a/tools/NetWorkManager/packages/Fody.6.8.2/readme.md b/tools/NetWorkManager/packages/Fody.6.8.2/readme.md
new file mode 100644
index 0000000..658c167
--- /dev/null
+++ b/tools/NetWorkManager/packages/Fody.6.8.2/readme.md
@@ -0,0 +1,98 @@
+[](https://ci.appveyor.com/project/SimonCropp/fody/branch/master)
+[](https://gitter.im/Fody/Fody)
+[](https://www.nuget.org/packages/Fody/)
+[](#patrons)
+
+###
Extensible tool for weaving .net assemblies
+
+Manipulating the IL of an assembly as part of a build requires a significant amount of plumbing code. This plumbing code involves knowledge of both the MSBuild and Visual Studio APIs. Fody attempts to eliminate that plumbing code through an extensible add-in model.
+
+**This is the codebase of core Fody engine. For more information on the larger Fody project see https://github.com/Fody/Home.**
+
+**See [Milestones](https://github.com/Fody/Fody/milestones?state=closed) for release notes.**
+
+
+
+
+[Already a Patron? skip past this section](#endofbacking)
+
+
+## Community backed
+
+Fody requires significant effort to maintain. As such it relies on financial support to ensure its long term viability.
+
+**It is expected that all developers using Fody [become a Patron on OpenCollective](https://opencollective.com/fody/contribute/patron-3059).**
+
+[See Licensing/Patron FAQ](https://github.com/Fody/Home/blob/master/pages/licensing-patron-faq.md) for more information.
+
+
+### Gold Sponsors
+
+Support this project by [becoming a Gold Sponsor](https://opencollective.com/fody/contribute/gold-7088). A large company logo will be added here with a link to your website.
+
+
+
+
+### Silver Sponsors
+
+Support this project by [becoming a Silver Sponsor](https://opencollective.com/fody/contribute/silver-7086). A medium company logo will be added here with a link to your website.
+
+
+
+
+### Bronze Sponsors
+
+Support this project by [becoming a Bronze Sponsor](https://opencollective.com/fody/contribute/bronze-7085). The company avatar will show up here with a link to your OpenCollective Profile.
+
+
+
+
+
+### Patrons and sponsors
+
+Thanks to all the backers and sponsors! Support this project by [becoming a patron](https://opencollective.com/fody/contribute/patron-3059).
+
+
+
+
+
+
+
+## Documentation and Further Learning
+
+ * [Licensing and patron FAQ](https://github.com/Fody/Home/tree/master/pages/licensing-patron-faq.md)
+ **It is expected that all developers using Fody [become a Patron on OpenCollective](https://opencollective.com/fody/order/3059).** See [Licensing/Patron FAQ](https://github.com/Fody/Home/tree/master/pages/licensing-patron-faq.md) for more information.
+ * [Usage](https://github.com/Fody/Home/tree/master/pages/usage.md)
+ Introduction to using Fody.
+ * [Configuration](https://github.com/Fody/Home/tree/master/pages/configuration.md)
+ All configuration options for Fody.
+ * [Addin discovery](https://github.com/Fody/Home/tree/master/pages/addin-discovery.md)
+ How addins are resolved.
+ * [List of Fody weavers/addins](https://github.com/Fody/Home/tree/master/pages/addins.md)
+ * [Changelog](https://github.com/Fody/Fody/milestones?state=closed)
+ * [FodyAddinSamples](https://github.com/Fody/FodyAddinSamples)
+ A GitHub repo that contains a working sample of every Fody addin.
+ * [Common errors](https://github.com/Fody/Home/tree/master/pages/common-errors.md)
+ * [In solution weaving](https://github.com/Fody/Home/tree/master/pages/in-solution-weaving.md)
+ Writing an addin that manipulates IL within the same solution.
+ * [ProcessedByFody class](https://github.com/Fody/Home/tree/master/pages/processedbyfody-class.md)
+ Marker class added to target assemblies for diagnostic purposes.
+ * [Strong naming](https://github.com/Fody/Home/tree/master/pages/strong-naming.md)
+ * [Supported runtimes and IDE](https://github.com/Fody/Home/tree/master/pages/supported-runtimes-and-ide.md)
+ * [Addin development](https://github.com/Fody/Home/tree/master/pages/addin-development.md)
+ Building a new Fody addin.
+ * [Addin packaging](https://github.com/Fody/Home/tree/master/pages/addin-packaging.md)
+ Packaging and deployment of Fody weavers.
+ * [BasicFodyAddin](https://github.com/Fody/Home/tree/master/BasicFodyAddin)
+ A simple project meant to illustrate how to build an addin.
+ * [Fody Project Configuration Manager](https://github.com/tom-englert/ProjectConfigurationManager/wiki/6.-Fody)
+ Provides an interactive tool that can support configuring weavers, which is especially helpful in solutions with many projects.
+ * [Backers tracking/info](https://github.com/Fody/Home/tree/master/pages/backers.md)
+ * [Donations](https://github.com/Fody/Home/tree/master/pages/donations.md)
+ Every month the Fody project will donate a portion of funding raised to a charity or other cause.
+
+
+## Contributors
+
+This project exists thanks to all the people who contribute.
+