├── Main.png ├── Inputs.png ├── README.pdf ├── Source ├── App.ico ├── App.config ├── Functions.cs ├── Properties │ ├── Settings.settings │ ├── Settings.Designer.cs │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── ApiKey.cs ├── Program.cs ├── Global.cs ├── Result.cs ├── FormExtendedInfo.cs ├── FormResponse.cs ├── Input.cs ├── TargetAnalyser.sln ├── FormOptions.cs ├── FormInputs.cs ├── FormAbout.cs ├── ApiKeys.cs ├── FormResponse.Designer.cs ├── FormOptions.Designer.cs ├── FormExtendedInfo.Designer.cs ├── Inputs.cs ├── Settings.cs ├── GzipWebClient.cs ├── FormInputs.Designer.cs ├── Output.cs ├── TargetAnalyser.csproj ├── FormAbout.Designer.cs ├── Analyser.cs ├── FormInputs.resx ├── FormOptions.resx ├── FormResponse.resx ├── FormExtendedInfo.resx ├── FormMain.resx └── FormAbout.resx ├── Dependencies ├── CsvHelper │ ├── Info.txt │ └── CsvHelper.dll ├── woanware │ ├── Network.dll │ └── Utility.dll └── ObjectListView │ └── ObjectListView.dll ├── Help ├── History.pdf └── History.md ├── configuration.pdf ├── .gitignore ├── README.md ├── configuration.md └── Inputs └── Inputs.xml /Main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Main.png -------------------------------------------------------------------------------- /Inputs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Inputs.png -------------------------------------------------------------------------------- /README.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/README.pdf -------------------------------------------------------------------------------- /Source/App.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Source/App.ico -------------------------------------------------------------------------------- /Dependencies/CsvHelper/Info.txt: -------------------------------------------------------------------------------- 1 | URL: https://github.com/JoshClose/CsvHelper 2 | Version: 2.11 -------------------------------------------------------------------------------- /Help/History.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Help/History.pdf -------------------------------------------------------------------------------- /configuration.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/configuration.pdf -------------------------------------------------------------------------------- /Dependencies/woanware/Network.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Dependencies/woanware/Network.dll -------------------------------------------------------------------------------- /Dependencies/woanware/Utility.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Dependencies/woanware/Utility.dll -------------------------------------------------------------------------------- /Dependencies/CsvHelper/CsvHelper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Dependencies/CsvHelper/CsvHelper.dll -------------------------------------------------------------------------------- /Dependencies/ObjectListView/ObjectListView.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/woanware/TargetAnalyser/HEAD/Dependencies/ObjectListView/ObjectListView.dll -------------------------------------------------------------------------------- /Source/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Source/Functions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace TargetAnalyser 7 | { 8 | class Functions 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Source/ApiKey.cs: -------------------------------------------------------------------------------- 1 | namespace TargetAnalyser 2 | { 3 | /// 4 | /// 5 | /// 6 | public class ApiKey 7 | { 8 | #region Properties/Variables 9 | public string Name { get; set; } = string.Empty; 10 | public string Value { get; set; } = string.Empty; 11 | public string Marker { get; set; } = string.Empty; 12 | #endregion 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace TargetAnalyser 5 | { 6 | static class Program 7 | { 8 | /// 9 | /// The main entry point for the application. 10 | /// 11 | [STAThread] 12 | static void Main(string[] args) 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | 17 | Application.Run(new FormMain()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/Global.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | 4 | namespace TargetAnalyser 5 | { 6 | /// 7 | /// 8 | /// 9 | public class Global 10 | { 11 | /// 12 | /// 13 | /// 14 | public enum View 15 | { 16 | Full = 0, 17 | Condensed = 1 18 | } 19 | 20 | /// 21 | /// 22 | /// 23 | public enum OutputMode 24 | { 25 | Csv = 0, 26 | Xml = 1, 27 | Json = 2 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Source/Result.cs: -------------------------------------------------------------------------------- 1 | namespace TargetAnalyser 2 | { 3 | /// 4 | /// 5 | /// 6 | public class Result 7 | { 8 | #region Member Variables 9 | public string Source { get; set; } = string.Empty; 10 | public string Info { get; set; } = string.Empty; 11 | public string ExtendedInfo { get; set; } = string.Empty; 12 | public string FullUrl { get; set; } = string.Empty; 13 | public string Url { get; set; } = string.Empty; 14 | public string Response { get; set; } = string.Empty; 15 | public bool Identified { get; set; } 16 | public bool HasExtended { get; set; } 17 | #endregion 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/FormExtendedInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace TargetAnalyser 4 | { 5 | /// 6 | /// 7 | /// 8 | public partial class FormExtendedInfo : Form 9 | { 10 | #region Constructor 11 | /// 12 | /// 13 | /// 14 | /// 15 | public FormExtendedInfo(string info) 16 | { 17 | InitializeComponent(); 18 | 19 | textExtendedInfo.Text = info; 20 | } 21 | #endregion 22 | 23 | #region Button Event Handlers 24 | /// 25 | /// 26 | /// 27 | /// 28 | /// 29 | private void butClose_Click(object sender, System.EventArgs e) 30 | { 31 | this.DialogResult = DialogResult.OK; 32 | } 33 | #endregion 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Source/FormResponse.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace TargetAnalyser 5 | { 6 | /// 7 | /// 8 | /// 9 | public partial class FormResponse : Form 10 | { 11 | #region Constructor 12 | /// 13 | /// 14 | /// 15 | /// 16 | public FormResponse(string response) 17 | { 18 | InitializeComponent(); 19 | 20 | textResponse.Text = response; 21 | } 22 | #endregion 23 | 24 | #region Button Event Handlers 25 | /// 26 | /// 27 | /// 28 | /// 29 | /// 30 | private void butClose_Click(object sender, EventArgs e) 31 | { 32 | this.DialogResult = DialogResult.OK; 33 | } 34 | #endregion 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Source/Input.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using woanware; 3 | 4 | namespace TargetAnalyser 5 | { 6 | /// 7 | /// 8 | /// 9 | public class Input 10 | { 11 | #region Properties/Member Variables 12 | public string Name { get; set; } 13 | public bool Enabled { get; set; } 14 | public string Url { get; set; } 15 | public string FullUrl { get; set; } 16 | public List DataTypes { get; set; } = new List(); 17 | public List Regexes { get; set; } = new List(); 18 | public List Results { get; set; } = new List(); 19 | public string MultipleMatchRegex { get; set; } 20 | public string LinkRegex { get; set; } 21 | public string HttpMethod { get; set; } 22 | public string HttpBody { get; set; } 23 | public List HttpHeaders { get; set; } = new List(); 24 | public bool StripNewLines { get; set; } 25 | #endregion 26 | } 27 | } -------------------------------------------------------------------------------- /Source/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace TargetAnalyser.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/TargetAnalyser.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TargetAnalyser", "TargetAnalyser.csproj", "{B620E1DA-DF2A-41CB-9181-08FC5363E97C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|x86 = Debug|x86 12 | Release|Any CPU = Release|Any CPU 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Debug|x86.ActiveCfg = Debug|x86 19 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Debug|x86.Build.0 = Debug|x86 20 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Release|x86.ActiveCfg = Release|x86 23 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C}.Release|x86.Build.0 = Release|x86 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /Source/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("TargetAnalyser")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("woanware")] 12 | [assembly: AssemblyProduct("TargetAnalyser")] 13 | [assembly: AssemblyCopyright("Copyright © woanware 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("92b73f09-7966-4cc7-adf7-ca7b41fd82b5")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0")] 37 | -------------------------------------------------------------------------------- /Source/FormOptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace TargetAnalyser 5 | { 6 | /// 7 | /// 8 | /// 9 | public partial class FormOptions : Form 10 | { 11 | #region Member Variables 12 | private Settings _settings; 13 | #endregion 14 | 15 | #region Constructor 16 | /// 17 | /// 18 | /// 19 | public FormOptions(Settings settings) 20 | { 21 | InitializeComponent(); 22 | _settings = settings; 23 | 24 | //chkUrlVoidPassive.Checked = _settings.UrlVoidPassive; 25 | } 26 | #endregion 27 | 28 | #region Button Event Handlers 29 | /// 30 | /// 31 | /// 32 | /// 33 | /// 34 | private void btnOk_Click(object sender, EventArgs e) 35 | { 36 | this.DialogResult = System.Windows.Forms.DialogResult.OK; 37 | } 38 | 39 | /// 40 | /// 41 | /// 42 | /// 43 | /// 44 | private void btnCancel_Click(object sender, EventArgs e) 45 | { 46 | this.DialogResult = System.Windows.Forms.DialogResult.Cancel; 47 | } 48 | #endregion 49 | 50 | #region Properties 51 | public Settings Settings 52 | { 53 | get { return _settings; } 54 | } 55 | #endregion 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Source/FormInputs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace TargetAnalyser 5 | { 6 | /// 7 | /// 8 | /// 9 | public partial class FormInputs : Form 10 | { 11 | public Inputs Inputs { get; private set; } 12 | 13 | #region Constructor 14 | /// 15 | /// 16 | /// 17 | public FormInputs(Inputs i) 18 | { 19 | InitializeComponent(); 20 | 21 | this.Inputs = i; 22 | 23 | this.listProviders.BooleanCheckStateGetter = delegate(Object rowObject) 24 | { 25 | return ((Input)rowObject).Enabled; 26 | }; 27 | 28 | this.olvcDataTypes.AspectGetter = delegate (Object rowObject) 29 | { 30 | return string.Join(", ", ((Input)rowObject).DataTypes); 31 | }; 32 | 33 | this.listProviders.BooleanCheckStatePutter = delegate(Object rowObject, bool newValue) 34 | { 35 | ((Input)rowObject).Enabled = newValue; 36 | return newValue; // return the value that you want the control to use 37 | }; 38 | 39 | LoadProviders(); 40 | } 41 | #endregion 42 | 43 | #region Misc Methods 44 | /// 45 | /// 46 | /// 47 | private void LoadProviders() 48 | { 49 | listProviders.AddObjects(this.Inputs.Data); 50 | olvcInput.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); 51 | olvcDataTypes.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); 52 | } 53 | #endregion 54 | 55 | #region Button Event Handlers 56 | /// 57 | /// 58 | /// 59 | /// 60 | /// 61 | private void btnClose_Click(object sender, EventArgs e) 62 | { 63 | this.DialogResult = DialogResult.OK; 64 | } 65 | #endregion 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs) 2 | [Bb]in/ 3 | [Oo]bj/ 4 | 5 | # mstest test results 6 | TestResults 7 | 8 | ## Ignore Visual Studio temporary files, build results, and 9 | ## files generated by popular Visual Studio add-ons. 10 | 11 | # User-specific files 12 | *.suo 13 | *.user 14 | *.sln.docstates 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Rr]elease/ 19 | x64/ 20 | *_i.c 21 | *_p.c 22 | *.ilk 23 | *.meta 24 | *.obj 25 | *.pch 26 | *.pdb 27 | *.pgc 28 | *.pgd 29 | *.rsp 30 | *.sbr 31 | *.tlb 32 | *.tli 33 | *.tlh 34 | *.tmp 35 | *.log 36 | *.vspscc 37 | *.vssscc 38 | .builds 39 | 40 | # Visual C++ cache files 41 | ipch/ 42 | *.aps 43 | *.ncb 44 | *.opensdf 45 | *.sdf 46 | 47 | # Visual Studio profiler 48 | *.psess 49 | *.vsp 50 | *.vspx 51 | 52 | # Guidance Automation Toolkit 53 | *.gpState 54 | 55 | # ReSharper is a .NET coding add-in 56 | _ReSharper* 57 | 58 | # NCrunch 59 | *.ncrunch* 60 | .*crunch*.local.xml 61 | 62 | # Installshield output folder 63 | [Ee]xpress 64 | 65 | # DocProject is a documentation generator add-in 66 | DocProject/buildhelp/ 67 | DocProject/Help/*.HxT 68 | DocProject/Help/*.HxC 69 | DocProject/Help/*.hhc 70 | DocProject/Help/*.hhk 71 | DocProject/Help/*.hhp 72 | DocProject/Help/Html2 73 | DocProject/Help/html 74 | 75 | # Click-Once directory 76 | publish 77 | 78 | # Publish Web Output 79 | *.Publish.xml 80 | 81 | # NuGet Packages Directory 82 | packages 83 | 84 | # Windows Azure Build Output 85 | csx 86 | *.build.csdef 87 | 88 | # Windows Store app package directory 89 | AppPackages/ 90 | 91 | # Others 92 | [Bb]in 93 | [Oo]bj 94 | sql 95 | TestResults 96 | [Tt]est[Rr]esult* 97 | *.Cache 98 | ClientBin 99 | [Ss]tyle[Cc]op.* 100 | ~$* 101 | *.dbmdl 102 | Generated_Code #added for RIA/Silverlight projects 103 | 104 | # Backup & report files from converting an old project file to a newer 105 | # Visual Studio version. Backup files are not needed, because we have git ;-) 106 | _UpgradeReport_Files/ 107 | Backup*/ 108 | UpgradeLog*.XML 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TargetAnalyser 2 | 3 | ## Info ## 4 | 5 | TargetAnalyser is basically a rip off of [Automater](http://www.tekdefense.com/automater/), which is a python script designed to perform URL/Domain, IP Address, and MD5 Hash OSINT tool aimed at making the analysis process easier for intrusion Analysts. 6 | 7 | The issue for me is that sometimes I want to look at the page that produced the output, so a UI provides an easy way to get all the info and yet still provide a quick method to open the page. I have also added a lot more OSINT. 8 | 9 | All of the input sources are controlled via the **Inputs.xml** file which is located in the application directory. An example of the configured inputs is shown in the **Inputs** screenshot below. 10 | 11 | The inputs use regular expressions to extract information from a HTTP response. There are various options that can be set for the input source; these options are detailed in the **configuration** document. 12 | 13 | ## Features ## 14 | 15 | - Easy to add new sources 16 | - Supports IP, Domain, URL and MD5 lookups 17 | - File input data supported 18 | - Trivially open the web page for the data 19 | - Can show the HTTP response to fix regular expression issues 20 | - Has 20 defined input sources (as of v1.0.0 release) 21 | 22 | ## API Keys 23 | 24 | Each of the **inputs** can use an API key defined in the **ApiKeys.xml** file, located in the application directory. There are two initial defined VirusTotal (VT) and Google SafeBrowsing (GSB), so to use the VT and GSB functionality you need to register with the services and set the API key in the file 25 | 26 | ## Third party libraries ## 27 | 28 | - [CommandLine](https://github.com/gsscoder/commandline): Used for command line parsing 29 | - [CsvHelper](https://github.com/JoshClose/CsvHelper): CSV export 30 | - [DNS](http://www.codeproject.com/Articles/23673/DNS-NET-Resolver-C): DNS lookups 31 | - [ObjectListView](http://objectlistview.sourceforge.net/cs/index.html) : Data viewing via lists 32 | - [VirusTotal.NET](https://github.com/woanware/VirusTotal.NET): Fork from https://github.com/Genbox/VirusTotal.NET 33 | - [Utility](http://www.woanware.co.uk): Misc functions (woanware) 34 | 35 | ## Third Party 36 | 37 | - [Icons8](https://icons8.com): Icons 38 | 39 | ## Requirements ## 40 | 41 | - Microsoft .NET Framework v4.6.1 42 | - Windows x64 43 | 44 | ## Screenshots 45 | 46 | ![Main](./Main.png) 47 | 48 | ![Inputs](./Inputs.png) 49 | 50 | 51 | -------------------------------------------------------------------------------- /Help/History.md: -------------------------------------------------------------------------------- 1 | # TargetAnalyser # 2 | 3 | ## History ## 4 | 5 | **v1.0.0** 6 | 7 | - Rewrote entire processing engine to use a user configurable XML input file (Inputs.xml) 8 | - Can show HTTP response for easier regex debugging 9 | - Can show extended information from source response e.g. MultipleMatchRegex matches 10 | - Removed file input functionality 11 | - Removed console functionality 12 | - Processing is now parallelised 13 | - Can reload the "Inputs.xml" and "ApiKeys.xml" config files whilst the application is loaded 14 | - Removed old dependencies 15 | - Made compatible with .Net v4.6.1 16 | - Made x64 only 17 | - Added update from web functionality 18 | 19 | **v0.0.10** 20 | 21 | - Modified so that the IP void checks display a generic not found message if the IP cannot be identified 22 | - Updated alienvault URL 23 | 24 | **v0.0.9** 25 | 26 | - Added the ability to make UrlVoid/IpVoid checks passive. Thanks MattN 27 | - Modified the UrlVoid processing to remove "www" sub domains as UrlVoid doesn't recognise them as the main domain. Thanks MattN 28 | 29 | **v0.0.8** 30 | 31 | - Added a 10s pause on the Virus Total checks when using an import file 32 | - Fixed bug where the CSV export didn’t do anything. Thanks MartinW 33 | 34 | **v0.0.7** 35 | 36 | - Added the ability to perform a scan from an import file so that lists of IPs, domains or hashes can be performed 37 | - Modified so that the system web proxy is used when performing requests. Thanks DanO 38 | 39 | **v0.0.6** 40 | 41 | - Added Google Diagnostics as an IP/domain provider 42 | - Modifed the robtek processing to stop duplicates 43 | - Added the Parent URL and URL columns to the results list view 44 | 45 | **v0.0.5** 46 | 47 | - Updated the robtex regex as they have modified the HTML 48 | - Added a spoof User-Agent since the Hurricane Electric queries were not working correctly 49 | 50 | **v0.0.4** 51 | 52 | - Modified to allow user selection of sources/providers 53 | - Modified to persist user settings 54 | - Modified to allow command line running 55 | - Improved code layout 56 | - Added ability to export to CSV, XML and JSON 57 | 58 | **v0.0.3** 59 | 60 | - Added status updates 61 | - Added HpHosts 62 | - Added Hurricane Electric 63 | 64 | **v0.0.2** 65 | 66 | - Added threadexpert MD5 lookup 67 | - Added VxVault MD5 lookup 68 | - Added MinotaurAnalysis MD5 lookup 69 | - Added VirusTotal MD5 lookup 70 | - Added BKN passive DNS lookup 71 | - Added VirusTotal passive DNS lookup 72 | - Added retry capability 73 | 74 | **v0.0.1** 75 | 76 | - Initial release 77 | 78 | -------------------------------------------------------------------------------- /Source/FormAbout.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace TargetAnalyser 4 | { 5 | public partial class FormAbout : Form 6 | { 7 | #region Constructor 8 | /// 9 | /// 10 | /// 11 | public FormAbout() 12 | { 13 | InitializeComponent(); 14 | 15 | lblApp.Text = Application.ProductName; 16 | lblVer.Text = "v" + Application.ProductVersion; 17 | } 18 | #endregion 19 | 20 | #region Link Event Handlers 21 | /// 22 | /// 23 | /// 24 | /// 25 | /// 26 | private void linkEmail_LinkClicked(object sender, System.EventArgs e) 27 | { 28 | System.Diagnostics.Process process = new System.Diagnostics.Process(); 29 | process.StartInfo.RedirectStandardOutput = false; 30 | process.StartInfo.FileName = "mailto:" + linkEmail.Text; 31 | process.StartInfo.UseShellExecute = true; 32 | process.Start(); 33 | } 34 | 35 | /// 36 | /// 37 | /// 38 | /// 39 | /// 40 | private void linkWeb_LinkClicked(object sender, System.EventArgs e) 41 | { 42 | System.Diagnostics.Process process = new System.Diagnostics.Process(); 43 | process.StartInfo.RedirectStandardOutput = false; 44 | process.StartInfo.FileName = "http://" + linkWeb.Text; 45 | process.StartInfo.UseShellExecute = true; 46 | process.Start(); 47 | } 48 | 49 | /// 50 | /// 51 | /// 52 | /// 53 | /// 54 | private void linkIcons8_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 55 | { 56 | System.Diagnostics.Process process = new System.Diagnostics.Process(); 57 | process.StartInfo.RedirectStandardOutput = false; 58 | process.StartInfo.FileName = "https://" + linkIcons8.Text; 59 | process.StartInfo.UseShellExecute = true; 60 | process.Start(); 61 | } 62 | #endregion 63 | 64 | #region Button Event Handlers 65 | /// 66 | /// 67 | /// 68 | /// 69 | /// 70 | private void btnClose_Click(object sender, System.EventArgs e) 71 | { 72 | this.DialogResult = DialogResult.OK; 73 | } 74 | #endregion 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Source/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace TargetAnalyser.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TargetAnalyser.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /configuration.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | 3 | This **configuration** document details the XML config files used to configure the inputs and API keys. 4 | 5 | ## Inputs.xml 6 | 7 | The following details the XML for the **Inputs.xml** file, which is located in the application directory. 8 | 9 | - **Name**: Name of the input e.g. VirusTotal (MD5) 10 | - **Url**: The URL of the main page for the input e.g. https://www.virustotal.com/vtapi/v2/file/report 11 | - **FullUrl**: The full URL used to retrieve the data from the source. Can include the **#DATA#** marker and also API key markers e.g. 12 | 13 | ``` 14 | https://www.virustotal.com/vtapi/v2/file/report?resource=#DATA#&apikey=#VT_API_KEY# 15 | ``` 16 | 17 | - **DataTypes**: A list of the supported data types that can be extracted from the input (MD5, IP, Domain, URL) 18 | 19 | ``` 20 | 21 | MD5 22 | IP 23 | 24 | ``` 25 | 26 | - **Regexes**: A list of regular expressions that are used to extract data from the page retrieved from the FullUrl location. Each regular expression should include a group e.g. \"response_code\":\s(.*?), 27 | 28 | 29 | ``` 30 | 31 | \"response_code\":\s(.*?), 32 | \"scan_date\":\s"(.*?)", 33 | \"positives\":\s(.*?), 34 | \"total\":\s(.*?), 35 | \"result\":\s"(.*?)", 36 | 37 | ``` 38 | 39 | - **Results**: A list of names/titles/values that relate one to one with the **Regexes** defined 40 | 41 | ``` 42 | 43 | Response Code 44 | Scan Date 45 | Positives 46 | Total 47 | Result 48 | 49 | ``` 50 | 51 | - **MultipleMatchRegex**: A single regular expression that can identify multiple values from a page. The first result is displayed, and the rest are stored as extended information 52 | - **LinkRegex**: A single regular expression used to extract a URL that provides an easy way to reference back to the page e.g.\"permalink\":\s"(.*?)", 53 | - **HttpMethod**: The HTTP method used for the request (GET, POST) 54 | - **HttpBody**: The HTTP body to be sent. Can include the **#DATA#** marker and also API key markers 55 | - **HttpHeaders**: A list of the HTTP headers to be sent with the request: 56 | 57 | ``` 58 | 59 | 60 | Content-Type 61 | application/x-www-form-urlencoded 62 | 63 | 64 | ``` 65 | 66 | - **StringNewLines**: This option removes new lines from the HTTP response, with the aim to aid the parsing. Defaults to false 67 | 68 | ``` 69 | true 70 | ``` 71 | 72 | ## API Keys 73 | 74 | The following details the XML for the **ApiKeys.xml** file, which is located in the application directory. The API keys file can contain as many API keys as is required. 75 | 76 | The application will transpose the matching **Marker** value that is located in the **FullUrl** and/or **HttpBody** properties within the Input. 77 | 78 | ``` 79 | 80 | 81 | 82 | VT 83 | ABC1272djdjdjd 84 | #VT_API_KEY# 85 | 86 | 87 | GSB 88 | ABDBDBre3rewrewrewr 89 | #GSB_API_KEY# 90 | 91 | 92 | 93 | ``` 94 | 95 | -------------------------------------------------------------------------------- /Source/ApiKeys.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Xml.Serialization; 5 | using woanware; 6 | 7 | namespace TargetAnalyser 8 | { 9 | /// 10 | /// 11 | /// 12 | public class ApiKeys 13 | { 14 | #region Constants 15 | private const string FILENAME = "ApiKeys.xml"; 16 | #endregion 17 | 18 | #region Properties/Variables 19 | public List Data = new List(); 20 | #endregion 21 | 22 | #region Public Methods 23 | /// 24 | /// 25 | /// 26 | /// 27 | public string Load() 28 | { 29 | try 30 | { 31 | string path = GetPath(); 32 | 33 | if (File.Exists(path) == false) 34 | { 35 | return string.Empty; 36 | } 37 | 38 | XmlSerializer serializer = new XmlSerializer(typeof(ApiKeys)); 39 | 40 | FileInfo info = new FileInfo(path); 41 | using (FileStream stream = info.OpenRead()) 42 | { 43 | ApiKeys ak = (ApiKeys)serializer.Deserialize(stream); 44 | this.Data = ak.Data; 45 | return string.Empty; 46 | } 47 | } 48 | catch (FileNotFoundException fileNotFoundEx) 49 | { 50 | return fileNotFoundEx.Message; 51 | } 52 | catch (UnauthorizedAccessException unauthAccessEx) 53 | { 54 | return unauthAccessEx.Message; 55 | } 56 | catch (IOException ioEx) 57 | { 58 | return ioEx.Message; 59 | } 60 | catch (Exception ex) 61 | { 62 | if (ex.InnerException != null) 63 | { 64 | return ex.InnerException.Message; 65 | } 66 | 67 | return ex.Message; 68 | } 69 | } 70 | 71 | /// 72 | /// 73 | /// 74 | /// 75 | public string Save() 76 | { 77 | try 78 | { 79 | XmlSerializer serializer = new XmlSerializer(typeof(ApiKeys)); 80 | using (StreamWriter writer = new StreamWriter(GetPath(), false)) 81 | { 82 | serializer.Serialize((TextWriter)writer, this); 83 | return string.Empty; 84 | } 85 | } 86 | catch (FileNotFoundException fileNotFoundEx) 87 | { 88 | return fileNotFoundEx.Message; 89 | } 90 | catch (UnauthorizedAccessException unauthAccessEx) 91 | { 92 | return unauthAccessEx.Message; 93 | } 94 | catch (IOException ioEx) 95 | { 96 | return ioEx.Message; 97 | } 98 | catch (Exception ex) 99 | { 100 | return ex.Message; 101 | } 102 | } 103 | #endregion 104 | 105 | #region Misc Methods 106 | /// 107 | /// 108 | /// 109 | /// 110 | private string GetPath() 111 | { 112 | return System.IO.Path.Combine(Misc.GetApplicationDirectory(), FILENAME); 113 | } 114 | 115 | /// 116 | /// 117 | /// 118 | public bool FileExists 119 | { 120 | get 121 | { 122 | return File.Exists(GetPath()); 123 | } 124 | } 125 | #endregion 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /Source/FormResponse.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TargetAnalyser 2 | { 3 | partial class FormResponse 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormResponse)); 32 | this.butClose = new System.Windows.Forms.Button(); 33 | this.textResponse = new System.Windows.Forms.RichTextBox(); 34 | this.SuspendLayout(); 35 | // 36 | // butClose 37 | // 38 | this.butClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 39 | this.butClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; 40 | this.butClose.Location = new System.Drawing.Point(641, 509); 41 | this.butClose.Name = "butClose"; 42 | this.butClose.Size = new System.Drawing.Size(100, 35); 43 | this.butClose.TabIndex = 3; 44 | this.butClose.Text = "Close"; 45 | this.butClose.UseVisualStyleBackColor = true; 46 | this.butClose.Click += new System.EventHandler(this.butClose_Click); 47 | // 48 | // textResponse 49 | // 50 | this.textResponse.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 51 | | System.Windows.Forms.AnchorStyles.Left) 52 | | System.Windows.Forms.AnchorStyles.Right))); 53 | this.textResponse.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 54 | this.textResponse.Location = new System.Drawing.Point(13, 12); 55 | this.textResponse.Name = "textResponse"; 56 | this.textResponse.ReadOnly = true; 57 | this.textResponse.Size = new System.Drawing.Size(727, 484); 58 | this.textResponse.TabIndex = 2; 59 | this.textResponse.Text = ""; 60 | // 61 | // FormResponse 62 | // 63 | this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); 64 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 65 | this.ClientSize = new System.Drawing.Size(756, 558); 66 | this.Controls.Add(this.butClose); 67 | this.Controls.Add(this.textResponse); 68 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 69 | this.MinimumSize = new System.Drawing.Size(300, 300); 70 | this.Name = "FormResponse"; 71 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 72 | this.Text = "Response"; 73 | this.ResumeLayout(false); 74 | 75 | } 76 | 77 | #endregion 78 | 79 | private System.Windows.Forms.Button butClose; 80 | private System.Windows.Forms.RichTextBox textResponse; 81 | } 82 | } -------------------------------------------------------------------------------- /Source/FormOptions.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TargetAnalyser 2 | { 3 | partial class FormOptions 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormOptions)); 32 | this.btnCancel = new System.Windows.Forms.Button(); 33 | this.btnOk = new System.Windows.Forms.Button(); 34 | this.SuspendLayout(); 35 | // 36 | // btnCancel 37 | // 38 | this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 39 | this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; 40 | this.btnCancel.Location = new System.Drawing.Point(178, 8); 41 | this.btnCancel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 42 | this.btnCancel.Name = "btnCancel"; 43 | this.btnCancel.Size = new System.Drawing.Size(100, 35); 44 | this.btnCancel.TabIndex = 7; 45 | this.btnCancel.Text = "Cancel"; 46 | this.btnCancel.UseVisualStyleBackColor = true; 47 | this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); 48 | // 49 | // btnOk 50 | // 51 | this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 52 | this.btnOk.Location = new System.Drawing.Point(65, 20); 53 | this.btnOk.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 54 | this.btnOk.Name = "btnOk"; 55 | this.btnOk.Size = new System.Drawing.Size(100, 35); 56 | this.btnOk.TabIndex = 6; 57 | this.btnOk.Text = "OK"; 58 | this.btnOk.UseVisualStyleBackColor = true; 59 | this.btnOk.Click += new System.EventHandler(this.btnOk_Click); 60 | // 61 | // FormOptions 62 | // 63 | this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); 64 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 65 | this.ClientSize = new System.Drawing.Size(298, 68); 66 | this.Controls.Add(this.btnCancel); 67 | this.Controls.Add(this.btnOk); 68 | this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F); 69 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 70 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 71 | this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 72 | this.MaximizeBox = false; 73 | this.MinimizeBox = false; 74 | this.Name = "FormOptions"; 75 | this.ShowInTaskbar = false; 76 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 77 | this.Text = "Options"; 78 | this.ResumeLayout(false); 79 | 80 | } 81 | 82 | #endregion 83 | 84 | private System.Windows.Forms.Button btnCancel; 85 | private System.Windows.Forms.Button btnOk; 86 | } 87 | } -------------------------------------------------------------------------------- /Source/FormExtendedInfo.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TargetAnalyser 2 | { 3 | partial class FormExtendedInfo 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormExtendedInfo)); 32 | this.textExtendedInfo = new System.Windows.Forms.RichTextBox(); 33 | this.butClose = new System.Windows.Forms.Button(); 34 | this.SuspendLayout(); 35 | // 36 | // textExtendedInfo 37 | // 38 | this.textExtendedInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 39 | | System.Windows.Forms.AnchorStyles.Left) 40 | | System.Windows.Forms.AnchorStyles.Right))); 41 | this.textExtendedInfo.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 42 | this.textExtendedInfo.Location = new System.Drawing.Point(14, 12); 43 | this.textExtendedInfo.Name = "textExtendedInfo"; 44 | this.textExtendedInfo.ReadOnly = true; 45 | this.textExtendedInfo.Size = new System.Drawing.Size(621, 408); 46 | this.textExtendedInfo.TabIndex = 0; 47 | this.textExtendedInfo.Text = ""; 48 | // 49 | // butClose 50 | // 51 | this.butClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 52 | this.butClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; 53 | this.butClose.Location = new System.Drawing.Point(535, 434); 54 | this.butClose.Name = "butClose"; 55 | this.butClose.Size = new System.Drawing.Size(100, 35); 56 | this.butClose.TabIndex = 1; 57 | this.butClose.Text = "Close"; 58 | this.butClose.UseVisualStyleBackColor = true; 59 | this.butClose.Click += new System.EventHandler(this.butClose_Click); 60 | // 61 | // FormExtendedInfo 62 | // 63 | this.AcceptButton = this.butClose; 64 | this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); 65 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 66 | this.CancelButton = this.butClose; 67 | this.ClientSize = new System.Drawing.Size(650, 481); 68 | this.Controls.Add(this.butClose); 69 | this.Controls.Add(this.textExtendedInfo); 70 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 71 | this.MinimumSize = new System.Drawing.Size(400, 400); 72 | this.Name = "FormExtendedInfo"; 73 | this.ShowInTaskbar = false; 74 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 75 | this.Text = "Extended Information"; 76 | this.ResumeLayout(false); 77 | 78 | } 79 | 80 | #endregion 81 | 82 | private System.Windows.Forms.RichTextBox textExtendedInfo; 83 | private System.Windows.Forms.Button butClose; 84 | } 85 | } -------------------------------------------------------------------------------- /Source/Inputs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Xml.Serialization; 5 | using woanware; 6 | 7 | namespace TargetAnalyser 8 | { 9 | /// 10 | /// 11 | /// 12 | public class Inputs 13 | { 14 | #region Constants 15 | private const string FILENAME = "Inputs.xml"; 16 | #endregion 17 | 18 | #region Properties/Variables 19 | public int Version { get; set; } = 1; 20 | public List Data { get; set; } = new List(); 21 | #endregion 22 | 23 | #region Public Methods 24 | /// 25 | /// 26 | /// 27 | /// 28 | public string Load() 29 | { 30 | return LoadFromFile(GetPath()); 31 | } 32 | 33 | /// 34 | /// 35 | /// 36 | /// 37 | /// 38 | public string LoadFromFile(string path) 39 | { 40 | try 41 | { 42 | if (File.Exists(path) == false) 43 | { 44 | return string.Empty; 45 | } 46 | 47 | XmlSerializer serializer = new XmlSerializer(typeof(Inputs)); 48 | 49 | FileInfo info = new FileInfo(path); 50 | using (FileStream stream = info.OpenRead()) 51 | { 52 | Inputs i = (Inputs)serializer.Deserialize(stream); 53 | this.Version = i.Version; 54 | this.Data = i.Data; 55 | return string.Empty; 56 | } 57 | } 58 | catch (FileNotFoundException fileNotFoundEx) 59 | { 60 | return fileNotFoundEx.Message; 61 | } 62 | catch (UnauthorizedAccessException unauthAccessEx) 63 | { 64 | return unauthAccessEx.Message; 65 | } 66 | catch (IOException ioEx) 67 | { 68 | return ioEx.Message; 69 | } 70 | catch (Exception ex) 71 | { 72 | if (ex.InnerException != null) 73 | { 74 | return ex.InnerException.Message; 75 | } 76 | 77 | return ex.Message; 78 | } 79 | } 80 | 81 | /// 82 | /// 83 | /// 84 | /// 85 | public string Save() 86 | { 87 | try 88 | { 89 | XmlSerializer serializer = new XmlSerializer(typeof(Inputs)); 90 | using (StreamWriter writer = new StreamWriter(GetPath(), false)) 91 | { 92 | serializer.Serialize((TextWriter)writer, this); 93 | return string.Empty; 94 | } 95 | } 96 | catch (FileNotFoundException fileNotFoundEx) 97 | { 98 | return fileNotFoundEx.Message; 99 | } 100 | catch (UnauthorizedAccessException unauthAccessEx) 101 | { 102 | return unauthAccessEx.Message; 103 | } 104 | catch (IOException ioEx) 105 | { 106 | return ioEx.Message; 107 | } 108 | catch (Exception ex) 109 | { 110 | return ex.Message; 111 | } 112 | } 113 | #endregion 114 | 115 | #region Misc Methods 116 | /// 117 | /// 118 | /// 119 | /// 120 | private string GetPath() 121 | { 122 | return System.IO.Path.Combine(Misc.GetApplicationDirectory(), FILENAME); 123 | } 124 | 125 | /// 126 | /// 127 | /// 128 | public bool FileExists 129 | { 130 | get 131 | { 132 | //string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"woanware\" + Application.ProductName + @"\"); 133 | return File.Exists(GetPath()); 134 | } 135 | } 136 | #endregion 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /Source/Settings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.IO; 4 | using System.Windows.Forms; 5 | using System.Xml.Serialization; 6 | using woanware; 7 | 8 | namespace TargetAnalyser 9 | { 10 | /// 11 | /// Allows us to save/load the configuration file to/from XML 12 | /// 13 | public class Settings 14 | { 15 | #region Constants 16 | private const string FILENAME = "Settings.xml"; 17 | #endregion 18 | 19 | #region Member Variables 20 | public Point FormLocation { get; set; } 21 | public Size FormSize { get; set; } 22 | public FormWindowState FormState { get; set; } 23 | public int Retries { get; set; } = 3; 24 | #endregion 25 | 26 | #region Public Methods 27 | /// 28 | /// 29 | /// 30 | /// 31 | public string Load() 32 | { 33 | try 34 | { 35 | string path = GetPath(); 36 | 37 | if (File.Exists(path) == false) 38 | { 39 | return string.Empty; 40 | } 41 | 42 | XmlSerializer serializer = new XmlSerializer(typeof(Settings)); 43 | 44 | FileInfo info = new FileInfo(path); 45 | using (FileStream stream = info.OpenRead()) 46 | { 47 | Settings settings = (Settings)serializer.Deserialize(stream); 48 | FormLocation = settings.FormLocation; 49 | FormSize = settings.FormSize; 50 | FormState = settings.FormState; 51 | return string.Empty; 52 | } 53 | } 54 | catch (FileNotFoundException fileNotFoundEx) 55 | { 56 | return fileNotFoundEx.Message; 57 | } 58 | catch (UnauthorizedAccessException unauthAccessEx) 59 | { 60 | return unauthAccessEx.Message; 61 | } 62 | catch (IOException ioEx) 63 | { 64 | return ioEx.Message; 65 | } 66 | catch (Exception ex) 67 | { 68 | return ex.Message; 69 | } 70 | } 71 | 72 | /// 73 | /// 74 | /// 75 | /// 76 | public string Save() 77 | { 78 | try 79 | { 80 | if (System.IO.Directory.Exists(Misc.GetUserDataDirectory()) == false) 81 | { 82 | IO.CreateDirectory(Misc.GetUserDataDirectory()); 83 | } 84 | 85 | XmlSerializer serializer = new XmlSerializer(typeof(Settings)); 86 | using (StreamWriter writer = new StreamWriter(GetPath(), false)) 87 | { 88 | serializer.Serialize((TextWriter)writer, this); 89 | return string.Empty; 90 | } 91 | } 92 | catch (FileNotFoundException fileNotFoundEx) 93 | { 94 | return fileNotFoundEx.Message; 95 | } 96 | catch (UnauthorizedAccessException unauthAccessEx) 97 | { 98 | return unauthAccessEx.Message; 99 | } 100 | catch (IOException ioEx) 101 | { 102 | return ioEx.Message; 103 | } 104 | catch (Exception ex) 105 | { 106 | return ex.Message; 107 | } 108 | } 109 | #endregion 110 | 111 | #region Misc Methods 112 | /// 113 | /// 114 | /// 115 | /// 116 | private string GetPath() 117 | { 118 | return System.IO.Path.Combine(Misc.GetUserDataDirectory(), FILENAME); 119 | } 120 | 121 | /// 122 | /// 123 | /// 124 | public bool FileExists 125 | { 126 | get 127 | { 128 | //string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"woanware\" + Application.ProductName + @"\"); 129 | return File.Exists(GetPath()); 130 | } 131 | } 132 | #endregion 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /Source/GzipWebClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Net; 4 | using woanware; 5 | 6 | namespace TargetAnalyser 7 | { 8 | /// 9 | /// 10 | /// 11 | public class WebClientResult 12 | { 13 | public string Response { get; set; } 14 | public bool IsError { get; set; } 15 | 16 | /// 17 | /// 18 | /// 19 | /// 20 | /// 21 | public WebClientResult(string response, 22 | bool isError) 23 | { 24 | Response = response; 25 | IsError = isError; 26 | } 27 | } 28 | 29 | /// 30 | /// 31 | /// 32 | public class GZipWebClient : WebClient 33 | { 34 | /// 35 | /// 36 | /// 37 | /// 38 | /// 39 | protected override WebRequest GetWebRequest(Uri address) 40 | { 41 | HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 42 | request.AutomaticDecompression = DecompressionMethods.GZip | 43 | DecompressionMethods.Deflate; 44 | request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36"; 45 | 46 | IWebProxy defaultProxy = WebRequest.GetSystemWebProxy(); 47 | Uri uriProxy = defaultProxy.GetProxy(address); 48 | if (uriProxy.AbsoluteUri != string.Empty) 49 | { 50 | request.Proxy = defaultProxy; 51 | } 52 | return request; 53 | } 54 | 55 | /// 56 | /// 57 | /// 58 | /// 59 | /// 60 | /// 61 | public WebClientResult Download(string url, int retries, List httpHeaders) 62 | { 63 | string lastException = string.Empty; 64 | int counter = 0; 65 | while (true) 66 | { 67 | try 68 | { 69 | foreach (var nv in httpHeaders) 70 | { 71 | this.Headers[nv.Name] = nv.Value; 72 | } 73 | 74 | string response = DownloadString(url); 75 | 76 | return new WebClientResult(response, false); 77 | } 78 | catch (WebException webEx) 79 | { 80 | counter++; 81 | if (webEx.Response == null) 82 | { 83 | if (webEx.InnerException == null) 84 | { 85 | lastException = webEx.Message; 86 | } 87 | else 88 | { 89 | lastException = webEx.InnerException.Message; 90 | } 91 | } 92 | else 93 | { 94 | lastException = ((HttpWebResponse)webEx.Response).StatusCode.ToString(); 95 | if (((HttpWebResponse)webEx.Response).StatusCode == HttpStatusCode.NotFound) 96 | { 97 | return new WebClientResult(lastException, true); 98 | } 99 | } 100 | } 101 | catch (Exception ex) 102 | { 103 | counter++; 104 | lastException = ex.Message; 105 | } 106 | 107 | if (counter == retries) 108 | { 109 | break; 110 | } 111 | } 112 | 113 | return new WebClientResult(lastException, true); 114 | } 115 | 116 | /// 117 | /// 118 | /// 119 | /// 120 | /// 121 | /// 122 | public WebClientResult Post(string url, int retries, List httpHeaders, string body) 123 | { 124 | string lastException = string.Empty; 125 | int counter = 0; 126 | while (true) 127 | { 128 | try 129 | { 130 | foreach (var nv in httpHeaders) 131 | { 132 | this.Headers[nv.Name] = nv.Value; 133 | } 134 | 135 | string response = UploadString(url, body); 136 | return new WebClientResult(response, false); 137 | } 138 | catch (WebException webEx) 139 | { 140 | counter++; 141 | lastException = ((HttpWebResponse)webEx.Response).StatusCode.ToString(); 142 | 143 | if (((HttpWebResponse)webEx.Response).StatusCode == HttpStatusCode.NotFound) 144 | { 145 | return new WebClientResult(lastException, true); 146 | } 147 | } 148 | catch (Exception ex) 149 | { 150 | counter++; 151 | lastException = ex.Message; 152 | } 153 | 154 | if (counter == retries) 155 | { 156 | break; 157 | } 158 | } 159 | 160 | return new WebClientResult(lastException, true); 161 | } 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /Source/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Source/FormInputs.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TargetAnalyser 2 | { 3 | partial class FormInputs 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormInputs)); 32 | this.listProviders = new BrightIdeasSoftware.ObjectListView(); 33 | this.olvcInput = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 34 | this.olvcDataTypes = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 35 | this.btnClose = new System.Windows.Forms.Button(); 36 | ((System.ComponentModel.ISupportInitialize)(this.listProviders)).BeginInit(); 37 | this.SuspendLayout(); 38 | // 39 | // listProviders 40 | // 41 | this.listProviders.AllColumns.Add(this.olvcInput); 42 | this.listProviders.AllColumns.Add(this.olvcDataTypes); 43 | this.listProviders.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 44 | | System.Windows.Forms.AnchorStyles.Left) 45 | | System.Windows.Forms.AnchorStyles.Right))); 46 | this.listProviders.CellEditUseWholeCell = false; 47 | this.listProviders.CheckBoxes = true; 48 | this.listProviders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 49 | this.olvcInput, 50 | this.olvcDataTypes}); 51 | this.listProviders.Cursor = System.Windows.Forms.Cursors.Default; 52 | this.listProviders.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F); 53 | this.listProviders.FullRowSelect = true; 54 | this.listProviders.HideSelection = false; 55 | this.listProviders.Location = new System.Drawing.Point(13, 12); 56 | this.listProviders.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 57 | this.listProviders.MultiSelect = false; 58 | this.listProviders.Name = "listProviders"; 59 | this.listProviders.ShowGroups = false; 60 | this.listProviders.Size = new System.Drawing.Size(393, 397); 61 | this.listProviders.TabIndex = 3; 62 | this.listProviders.UseCompatibleStateImageBehavior = false; 63 | this.listProviders.View = System.Windows.Forms.View.Details; 64 | // 65 | // olvcInput 66 | // 67 | this.olvcInput.AspectName = "Name"; 68 | this.olvcInput.Text = "Input"; 69 | this.olvcInput.Width = 133; 70 | // 71 | // olvcDataTypes 72 | // 73 | this.olvcDataTypes.Text = "Data Types"; 74 | // 75 | // btnClose 76 | // 77 | this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 78 | this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; 79 | this.btnClose.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F); 80 | this.btnClose.Location = new System.Drawing.Point(307, 421); 81 | this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 82 | this.btnClose.Name = "btnClose"; 83 | this.btnClose.Size = new System.Drawing.Size(100, 35); 84 | this.btnClose.TabIndex = 5; 85 | this.btnClose.Text = "Close"; 86 | this.btnClose.UseVisualStyleBackColor = true; 87 | this.btnClose.Click += new System.EventHandler(this.btnClose_Click); 88 | // 89 | // FormInputs 90 | // 91 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 92 | this.CancelButton = this.btnClose; 93 | this.ClientSize = new System.Drawing.Size(421, 470); 94 | this.Controls.Add(this.btnClose); 95 | this.Controls.Add(this.listProviders); 96 | this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F); 97 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 98 | this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 99 | this.MaximizeBox = false; 100 | this.MinimumSize = new System.Drawing.Size(300, 300); 101 | this.Name = "FormInputs"; 102 | this.ShowInTaskbar = false; 103 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 104 | this.Text = "Inputs"; 105 | ((System.ComponentModel.ISupportInitialize)(this.listProviders)).EndInit(); 106 | this.ResumeLayout(false); 107 | 108 | } 109 | 110 | #endregion 111 | 112 | private BrightIdeasSoftware.ObjectListView listProviders; 113 | private System.Windows.Forms.Button btnClose; 114 | private BrightIdeasSoftware.OLVColumn olvcInput; 115 | private BrightIdeasSoftware.OLVColumn olvcDataTypes; 116 | } 117 | } -------------------------------------------------------------------------------- /Source/Output.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Web.Script.Serialization; 7 | using System.Xml.Serialization; 8 | using CsvHelper.Configuration; 9 | using woanware; 10 | 11 | namespace TargetAnalyser 12 | { 13 | /// 14 | /// Object used for clean XML serialisation 15 | /// 16 | [XmlRoot("Data")] 17 | public class Results 18 | { 19 | /// 20 | /// 21 | /// 22 | [XmlElement("Result")] 23 | public List Items { get; set; } 24 | 25 | /// 26 | /// 27 | /// 28 | public Results() 29 | { 30 | Items = new List(); 31 | } 32 | } 33 | 34 | /// 35 | /// 36 | /// 37 | public static class Output 38 | { 39 | /// 40 | /// 41 | /// 42 | /// 43 | public static string Process(List results, 44 | Global.OutputMode outputMode, 45 | string file, 46 | bool outputHeaders) 47 | { 48 | //Func, Global.OutputMode, string, string> outputResults = delegate(List a, Global.OutputMode b, string c) 49 | //{ 50 | // try 51 | // { 52 | // switch (outputMode) 53 | // { 54 | // case Global.OutputMode.Csv: 55 | // return string.Empty; 56 | // case Global.OutputMode.Json: 57 | // StringBuilder json = new StringBuilder(); 58 | // JavaScriptSerializer serializer = new JavaScriptSerializer(); 59 | // serializer.Serialize(results, json); 60 | 61 | // string ret = IO.WriteTextToFile(json.ToString(), file, false); 62 | // if (ret.Length > 0) 63 | // { 64 | // return ret; 65 | // } 66 | 67 | // return string.Empty; 68 | // case Global.OutputMode.Xml: 69 | 70 | // Results tempResults = new Results(); 71 | // tempResults.Items.AddRange(results); 72 | 73 | // XmlSerializer serializerXml = new XmlSerializer(typeof(Results)); 74 | // using (FileStream fs = new FileStream(file, FileMode.Create)) 75 | // { 76 | // serializerXml.Serialize(fs, tempResults); 77 | // } 78 | 79 | // return string.Empty; 80 | // } 81 | 82 | // return string.Empty; 83 | // } 84 | // catch (Exception ex) 85 | // { 86 | // return ex.Message; 87 | // } 88 | 89 | //}; 90 | 91 | Task task = Task.Factory.StartNew(() => 92 | { 93 | try 94 | { 95 | switch (outputMode) 96 | { 97 | case Global.OutputMode.Csv: 98 | CsvConfiguration csvConfiguration = new CsvConfiguration(); 99 | csvConfiguration.Delimiter = "\t"; 100 | 101 | using (FileStream fileStream = new FileStream(file, FileMode.Append, FileAccess.Write)) 102 | using (StreamWriter streamWriter = new StreamWriter(fileStream)) 103 | using (CsvHelper.CsvWriter csvWriter = new CsvHelper.CsvWriter(streamWriter, csvConfiguration)) 104 | { 105 | if (outputHeaders == true) 106 | { 107 | csvWriter.WriteField("Source"); 108 | csvWriter.WriteField("Info"); 109 | csvWriter.WriteField("ParentUrl"); 110 | csvWriter.WriteField("Url"); 111 | csvWriter.NextRecord(); 112 | } 113 | 114 | foreach (var result in results) 115 | { 116 | csvWriter.WriteField(result.Source); 117 | csvWriter.WriteField(result.Info); 118 | csvWriter.WriteField(result.FullUrl); 119 | csvWriter.WriteField(result.Url); 120 | csvWriter.NextRecord(); 121 | } 122 | } 123 | 124 | return string.Empty; 125 | case Global.OutputMode.Json: 126 | StringBuilder json = new StringBuilder(); 127 | JavaScriptSerializer serializer = new JavaScriptSerializer(); 128 | serializer.Serialize(results, json); 129 | 130 | string ret = IO.WriteTextToFile(json.ToString(), file, false); 131 | if (ret.Length > 0) 132 | { 133 | return ret; 134 | } 135 | 136 | return string.Empty; 137 | case Global.OutputMode.Xml: 138 | 139 | Results tempResults = new Results(); 140 | tempResults.Items.AddRange(results); 141 | 142 | XmlSerializer serializerXml = new XmlSerializer(typeof(Results)); 143 | using (FileStream fs = new FileStream(file, FileMode.Create)) 144 | { 145 | serializerXml.Serialize(fs, tempResults); 146 | } 147 | 148 | return string.Empty; 149 | } 150 | 151 | return string.Empty; 152 | } 153 | catch (Exception ex) 154 | { 155 | return ex.Message; 156 | } 157 | 158 | }); 159 | 160 | return task.Result; 161 | } 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /Source/TargetAnalyser.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {B620E1DA-DF2A-41CB-9181-08FC5363E97C} 8 | WinExe 9 | Properties 10 | TargetAnalyser 11 | TargetAnalyser 12 | v4.6.1 13 | 512 14 | 15 | publish\ 16 | true 17 | Disk 18 | false 19 | Foreground 20 | 7 21 | Days 22 | false 23 | false 24 | true 25 | 0 26 | 1.0.0.%2a 27 | false 28 | false 29 | true 30 | 31 | 32 | x64 33 | true 34 | full 35 | false 36 | bin\Debug\ 37 | DEBUG;TRACE 38 | prompt 39 | 4 40 | false 41 | 42 | 43 | x64 44 | pdbonly 45 | true 46 | bin\Release\ 47 | TRACE 48 | prompt 49 | 4 50 | false 51 | 52 | 53 | App.ico 54 | 55 | 56 | x86 57 | bin\x86\Debug\ 58 | false 59 | 60 | 61 | x86 62 | bin\x86\Release\ 63 | false 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | ..\Dependencies\CsvHelper\CsvHelper.dll 72 | 73 | 74 | ..\Dependencies\ObjectListView\ObjectListView.dll 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | ..\Dependencies\woanware\Utility.dll 86 | 87 | 88 | 89 | 90 | 91 | Form 92 | 93 | 94 | FormAbout.cs 95 | 96 | 97 | Form 98 | 99 | 100 | FormExtendedInfo.cs 101 | 102 | 103 | Form 104 | 105 | 106 | FormMain.cs 107 | 108 | 109 | Form 110 | 111 | 112 | FormOptions.cs 113 | 114 | 115 | Form 116 | 117 | 118 | FormInputs.cs 119 | 120 | 121 | Form 122 | 123 | 124 | FormResponse.cs 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | FormAbout.cs 140 | 141 | 142 | FormExtendedInfo.cs 143 | 144 | 145 | FormMain.cs 146 | 147 | 148 | FormOptions.cs 149 | 150 | 151 | FormInputs.cs 152 | 153 | 154 | FormResponse.cs 155 | 156 | 157 | ResXFileCodeGenerator 158 | Resources.Designer.cs 159 | Designer 160 | 161 | 162 | True 163 | Resources.resx 164 | True 165 | 166 | 167 | SettingsSingleFileGenerator 168 | Settings.Designer.cs 169 | 170 | 171 | True 172 | Settings.settings 173 | True 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | False 182 | Microsoft .NET Framework 4.6.1 %28x86 and x64%29 183 | true 184 | 185 | 186 | False 187 | .NET Framework 3.5 SP1 188 | false 189 | 190 | 191 | 192 | 193 | 194 | 195 | 202 | -------------------------------------------------------------------------------- /Source/FormAbout.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TargetAnalyser 2 | { 3 | partial class FormAbout 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout)); 32 | this.pictureBox2 = new System.Windows.Forms.PictureBox(); 33 | this.linkEmail = new System.Windows.Forms.LinkLabel(); 34 | this.linkWeb = new System.Windows.Forms.LinkLabel(); 35 | this.btnClose = new System.Windows.Forms.Button(); 36 | this.lblVer = new System.Windows.Forms.Label(); 37 | this.lblApp = new System.Windows.Forms.Label(); 38 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 39 | this.linkIcons8 = new System.Windows.Forms.LinkLabel(); 40 | this.labelIconsBy = new System.Windows.Forms.Label(); 41 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); 42 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 43 | this.SuspendLayout(); 44 | // 45 | // pictureBox2 46 | // 47 | this.pictureBox2.BackColor = System.Drawing.Color.White; 48 | this.pictureBox2.Dock = System.Windows.Forms.DockStyle.Top; 49 | this.pictureBox2.Location = new System.Drawing.Point(0, 0); 50 | this.pictureBox2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 51 | this.pictureBox2.Name = "pictureBox2"; 52 | this.pictureBox2.Size = new System.Drawing.Size(543, 137); 53 | this.pictureBox2.TabIndex = 26; 54 | this.pictureBox2.TabStop = false; 55 | // 56 | // linkEmail 57 | // 58 | this.linkEmail.AutoSize = true; 59 | this.linkEmail.Location = new System.Drawing.Point(187, 174); 60 | this.linkEmail.Name = "linkEmail"; 61 | this.linkEmail.Size = new System.Drawing.Size(169, 20); 62 | this.linkEmail.TabIndex = 25; 63 | this.linkEmail.TabStop = true; 64 | this.linkEmail.Text = "markwoan@gmail.com"; 65 | this.linkEmail.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkEmail_LinkClicked); 66 | // 67 | // linkWeb 68 | // 69 | this.linkWeb.AutoSize = true; 70 | this.linkWeb.Location = new System.Drawing.Point(187, 154); 71 | this.linkWeb.Name = "linkWeb"; 72 | this.linkWeb.Size = new System.Drawing.Size(163, 20); 73 | this.linkWeb.TabIndex = 24; 74 | this.linkWeb.TabStop = true; 75 | this.linkWeb.Text = "github.com/woanware"; 76 | this.linkWeb.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkWeb_LinkClicked); 77 | // 78 | // btnClose 79 | // 80 | this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; 81 | this.btnClose.Location = new System.Drawing.Point(422, 257); 82 | this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 83 | this.btnClose.Name = "btnClose"; 84 | this.btnClose.Size = new System.Drawing.Size(108, 32); 85 | this.btnClose.TabIndex = 23; 86 | this.btnClose.Text = "Close"; 87 | this.btnClose.UseVisualStyleBackColor = true; 88 | this.btnClose.Click += new System.EventHandler(this.btnClose_Click); 89 | // 90 | // lblVer 91 | // 92 | this.lblVer.AutoSize = true; 93 | this.lblVer.BackColor = System.Drawing.Color.White; 94 | this.lblVer.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 95 | this.lblVer.Location = new System.Drawing.Point(446, 58); 96 | this.lblVer.Name = "lblVer"; 97 | this.lblVer.Size = new System.Drawing.Size(81, 25); 98 | this.lblVer.TabIndex = 29; 99 | this.lblVer.Text = "v1.0.0"; 100 | // 101 | // lblApp 102 | // 103 | this.lblApp.AutoSize = true; 104 | this.lblApp.BackColor = System.Drawing.Color.White; 105 | this.lblApp.Font = new System.Drawing.Font("Verdana", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 106 | this.lblApp.Location = new System.Drawing.Point(117, 44); 107 | this.lblApp.Name = "lblApp"; 108 | this.lblApp.Size = new System.Drawing.Size(328, 44); 109 | this.lblApp.TabIndex = 28; 110 | this.lblApp.Text = "TargetAnalyser"; 111 | // 112 | // pictureBox1 113 | // 114 | this.pictureBox1.BackColor = System.Drawing.Color.White; 115 | this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); 116 | this.pictureBox1.Location = new System.Drawing.Point(13, 23); 117 | this.pictureBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 118 | this.pictureBox1.Name = "pictureBox1"; 119 | this.pictureBox1.Size = new System.Drawing.Size(111, 91); 120 | this.pictureBox1.TabIndex = 27; 121 | this.pictureBox1.TabStop = false; 122 | // 123 | // linkIcons8 124 | // 125 | this.linkIcons8.AutoSize = true; 126 | this.linkIcons8.Location = new System.Drawing.Point(258, 227); 127 | this.linkIcons8.Name = "linkIcons8"; 128 | this.linkIcons8.Size = new System.Drawing.Size(89, 20); 129 | this.linkIcons8.TabIndex = 30; 130 | this.linkIcons8.TabStop = true; 131 | this.linkIcons8.Text = "icons8.com"; 132 | this.linkIcons8.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkIcons8_LinkClicked); 133 | // 134 | // labelIconsBy 135 | // 136 | this.labelIconsBy.AutoSize = true; 137 | this.labelIconsBy.Location = new System.Drawing.Point(187, 227); 138 | this.labelIconsBy.Name = "labelIconsBy"; 139 | this.labelIconsBy.Size = new System.Drawing.Size(68, 20); 140 | this.labelIconsBy.TabIndex = 31; 141 | this.labelIconsBy.Text = "Icons by"; 142 | // 143 | // FormAbout 144 | // 145 | this.AcceptButton = this.btnClose; 146 | this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); 147 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 148 | this.CancelButton = this.btnClose; 149 | this.ClientSize = new System.Drawing.Size(543, 299); 150 | this.Controls.Add(this.labelIconsBy); 151 | this.Controls.Add(this.linkIcons8); 152 | this.Controls.Add(this.lblVer); 153 | this.Controls.Add(this.lblApp); 154 | this.Controls.Add(this.pictureBox1); 155 | this.Controls.Add(this.pictureBox2); 156 | this.Controls.Add(this.linkEmail); 157 | this.Controls.Add(this.linkWeb); 158 | this.Controls.Add(this.btnClose); 159 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 160 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 161 | this.MaximizeBox = false; 162 | this.MinimizeBox = false; 163 | this.Name = "FormAbout"; 164 | this.ShowInTaskbar = false; 165 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 166 | this.Text = "About"; 167 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); 168 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 169 | this.ResumeLayout(false); 170 | this.PerformLayout(); 171 | 172 | } 173 | 174 | #endregion 175 | 176 | private System.Windows.Forms.PictureBox pictureBox2; 177 | private System.Windows.Forms.LinkLabel linkEmail; 178 | private System.Windows.Forms.LinkLabel linkWeb; 179 | private System.Windows.Forms.Button btnClose; 180 | private System.Windows.Forms.Label lblVer; 181 | private System.Windows.Forms.Label lblApp; 182 | private System.Windows.Forms.PictureBox pictureBox1; 183 | private System.Windows.Forms.LinkLabel linkIcons8; 184 | private System.Windows.Forms.Label labelIconsBy; 185 | } 186 | } -------------------------------------------------------------------------------- /Source/Analyser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Net; 4 | using System.Text.RegularExpressions; 5 | using System.Threading; 6 | using System.Threading.Tasks; 7 | 8 | namespace TargetAnalyser 9 | { 10 | /// 11 | /// 12 | /// 13 | public class Analyser 14 | { 15 | public delegate void ResultEvent(List results); 16 | 17 | public event woanware.Events.MessageEvent Message; 18 | public event ResultEvent ResultsIdentified; 19 | public event woanware.Events.DefaultEvent Complete; 20 | 21 | private CountdownEvent cde; 22 | public Inputs Inputs { get; set; } 23 | public ApiKeys ApiKeys { get; set; } 24 | private int _retries; 25 | public string OutputFile { get; private set; } 26 | 27 | /// 28 | /// 29 | /// 30 | /// 31 | /// 32 | public Analyser(int retries) 33 | { 34 | _retries = retries; 35 | } 36 | 37 | /// 38 | /// 39 | /// 40 | /// 41 | /// 42 | /// 43 | /// 44 | public void Analyse(string[] dataTypes, 45 | string data) 46 | { 47 | (new Thread(() => 48 | { 49 | cde = new CountdownEvent(this.Inputs.Data.Count); 50 | Parallel.ForEach(this.Inputs.Data, item => Analyse(dataTypes, item, data)); 51 | cde.Wait(); 52 | 53 | OnComplete(); 54 | 55 | })).Start(); 56 | } 57 | 58 | /// 59 | /// 60 | /// 61 | /// 62 | /// 63 | /// 64 | private void Analyse(string[] dataTypes, Input input, string data) 65 | { 66 | try 67 | { 68 | if (input.Enabled == false) 69 | { 70 | return; 71 | } 72 | 73 | foreach (var d in input.DataTypes) 74 | foreach (var dt in dataTypes) 75 | { 76 | if (d.ToLower() != dt.ToLower()) 77 | { 78 | continue; 79 | } 80 | 81 | // DNS is a special case since it needs to use the .Net 82 | // DNS system objects rather than the WebClient 83 | if (input.Name.ToLower() == "dns") 84 | { 85 | PerformDns(input, data); 86 | continue; 87 | } 88 | 89 | PerformAnalysis(input, data); 90 | } 91 | } 92 | finally 93 | { 94 | this.cde.Signal(); 95 | } 96 | 97 | } 98 | 99 | /// 100 | /// 101 | /// 102 | /// 103 | /// 104 | private void PerformAnalysis(Input i, string data) 105 | { 106 | var tempUrl = i.FullUrl; 107 | string response = string.Empty; 108 | try 109 | { 110 | OnMessage("Analysing via " + i.Name); 111 | 112 | if (tempUrl.Contains("#DATA#")) 113 | { 114 | tempUrl = tempUrl.Replace("#DATA#", data); 115 | } 116 | 117 | foreach (var ak in this.ApiKeys.Data) 118 | { 119 | if (tempUrl.Contains(ak.Marker)) 120 | { 121 | tempUrl = tempUrl.Replace(ak.Marker, ak.Value); 122 | } 123 | } 124 | 125 | string httpBody = i.HttpBody; 126 | if (httpBody.Contains("#DATA#")) 127 | { 128 | httpBody = httpBody.Replace("#DATA#", data); 129 | } 130 | 131 | foreach (var ak in this.ApiKeys.Data) 132 | { 133 | if (httpBody.Contains(ak.Marker)) 134 | { 135 | httpBody = httpBody.Replace(ak.Marker, ak.Value); 136 | } 137 | } 138 | 139 | GZipWebClient wc = new GZipWebClient(); 140 | WebClientResult wcr = null; 141 | if (i.HttpMethod == "POST") 142 | { 143 | wcr = wc.Post(tempUrl, _retries, i.HttpHeaders, httpBody); 144 | } 145 | else 146 | { 147 | wcr = wc.Download(tempUrl, _retries, i.HttpHeaders); 148 | } 149 | 150 | if (wcr.IsError == true) 151 | { 152 | SendDefaultResult(i.Name, 153 | i.Url, 154 | tempUrl, 155 | wcr.Response, 156 | "Error: " + wcr.Response); 157 | return; 158 | } 159 | 160 | response = wcr.Response; 161 | if (i.StripNewLines == true) 162 | { 163 | response = wcr.Response.Replace("\n", ""); 164 | response = response.Replace("\r", ""); 165 | } 166 | 167 | Result result = ProcessResults(i, response, i.Url, tempUrl); 168 | if (result == null) 169 | { 170 | SendDefaultResult(i.Name, i.Url, tempUrl, response, "Not Found"); 171 | return; 172 | } 173 | 174 | List results = new List() { result }; 175 | OnResultIdentified(results); 176 | return; 177 | } 178 | catch (Exception ex) 179 | { 180 | SendDefaultResult(i.Name, i.Url, tempUrl, response, "Error: " + ex.Message); 181 | } 182 | } 183 | 184 | /// 185 | /// 186 | /// 187 | /// 188 | /// 189 | /// 190 | /// 191 | private Result ProcessResults(Input i, string response, string url, string fullUrl) 192 | { 193 | bool hasMatches = false; 194 | List temp = new List(); 195 | Regex reg; 196 | 197 | Result result = new Result(); 198 | result.Source = i.Name; 199 | result.Identified = true; 200 | result.Url = url; 201 | result.FullUrl = fullUrl; 202 | result.Response = response; 203 | 204 | if (i.MultipleMatchRegex.Length > 0) 205 | { 206 | reg = new Regex(i.MultipleMatchRegex); 207 | MatchCollection mc = reg.Matches(response); 208 | if (mc.Count == 0) 209 | { 210 | return null; 211 | } 212 | 213 | hasMatches = true; 214 | 215 | bool first = true; 216 | List tempExtended = new List(); 217 | string[] groupNames = reg.GetGroupNames(); 218 | foreach (Match m in mc) 219 | { 220 | temp = new List(); 221 | foreach (string gn in groupNames) 222 | { 223 | if (gn == "0") 224 | { 225 | continue; 226 | } 227 | 228 | temp.Add(gn + ": " + ScrubHtml(m.Groups[gn].Value.Trim())); 229 | } 230 | 231 | tempExtended.Add(string.Join(", ", temp)); 232 | 233 | if (first == true) 234 | { 235 | result.Info = string.Join(", ", temp); 236 | first = false; 237 | } 238 | } 239 | 240 | result.ExtendedInfo = string.Join(Environment.NewLine, tempExtended); 241 | result.HasExtended = true; 242 | } 243 | else 244 | { 245 | for (int index = 0; index < i.Regexes.Count; index++) 246 | { 247 | reg = new Regex(i.Regexes[index]); 248 | 249 | Match m = reg.Match(response); 250 | if (m.Success == true) 251 | { 252 | if (i.Results[index].Length == 0) 253 | { 254 | temp.Add("Found"); 255 | } 256 | else 257 | { 258 | temp.Add(i.Results[index] + ": " + m.Groups[1].Value); 259 | } 260 | 261 | hasMatches = true; 262 | } 263 | } 264 | 265 | result.Info = string.Join(", ", temp); 266 | result.ExtendedInfo = string.Join(", ", temp); 267 | } 268 | 269 | if (hasMatches == false) 270 | { 271 | return null; 272 | } 273 | 274 | if (i.LinkRegex.Length > 0) 275 | { 276 | reg = new Regex(i.LinkRegex); 277 | Match m = reg.Match(response); 278 | if (m.Success == true) 279 | { 280 | result.Url = m.Groups[1].Value; 281 | } 282 | else 283 | { 284 | result.Url = url; 285 | } 286 | } 287 | 288 | return result; 289 | } 290 | 291 | /// 292 | /// 293 | /// 294 | /// 295 | /// 296 | private void PerformDns(Input i, string data) 297 | { 298 | try 299 | { 300 | OnMessage("Analysing via " + i.Name); 301 | 302 | var hostName = Dns.GetHostEntry(data).HostName; 303 | if (hostName.Length == 0) 304 | { 305 | SendDefaultResult(i.Name, "N/A", "N/A", "", "Not Found"); 306 | return; 307 | } 308 | 309 | Result result = new Result(); 310 | result.Source = i.Name; 311 | result.Identified = true; 312 | result.Info = hostName; 313 | result.FullUrl = "N/A"; 314 | result.Url = "N/A"; 315 | 316 | List results = new List() { result }; 317 | OnResultIdentified(results); 318 | return; 319 | } 320 | catch (Exception ex) 321 | { 322 | SendDefaultResult(i.Name, "N/A", "N/A", "", "Error: " + ex.Message); 323 | } 324 | } 325 | 326 | #region Misc Methods 327 | /// 328 | /// 329 | /// 330 | /// 331 | /// 332 | private string ScrubHtml(string value) 333 | { 334 | var step1 = Regex.Replace(value, @"<[^>]+>| ", "").Trim(); 335 | var step2 = Regex.Replace(step1, @"\s{2,}", " "); 336 | return step2; 337 | } 338 | 339 | /// 340 | /// 341 | /// 342 | /// 343 | /// 344 | /// 345 | /// 346 | private void SendDefaultResult(string source, 347 | string url, 348 | string fullUrl, 349 | string response, 350 | string message) 351 | { 352 | Result result = new Result(); 353 | result.Source = source; 354 | result.Info = message; 355 | result.FullUrl = fullUrl; 356 | result.Url = url; 357 | result.Response = response; 358 | 359 | OnResultIdentified(new List { result }); 360 | } 361 | #endregion 362 | 363 | #region Event Handler Methods 364 | /// 365 | /// 366 | /// 367 | /// 368 | private void OnResultIdentified(List result) 369 | { 370 | ResultsIdentified?.Invoke(result); 371 | } 372 | 373 | /// 374 | /// 375 | /// 376 | /// 377 | private void OnMessage(string message) 378 | { 379 | Message?.Invoke(message); 380 | } 381 | 382 | /// 383 | /// 384 | /// 385 | private void OnComplete() 386 | { 387 | Complete?.Invoke(); 388 | } 389 | #endregion 390 | } 391 | } 392 | -------------------------------------------------------------------------------- /Source/FormInputs.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE 124 | AAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 125 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 126 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz2Xb18+f29fPn9vXz5/b18+f29fPn9vX 127 | z5/b18+f29fPn9vXz5/b18+f29fPn////wH///8B////Af///wHb18+f////Af///wH///8B////Af// 128 | /wH///8B////Af///wHXvwAJ07sASdS7AB3///8B////Af///wH///8B29fPn////wHUuwCN1LsAHdS7 129 | AHXTuwDn1LsAJdS8AFXUvABR07sAkdS8AP/TuwDj////Af///wH///8B////AdvXz5////8B1LwAi9S7 130 | AB3UuwB107wA59S7ACXUuwBZ1LwAVdO7AI/UvAD/07wA4////wH///8B////Af///wHb18+f////Af// 131 | /wH///8B////Af///wH///8B////Af///wHXvwAJ07wAS9S8ACH///8B////Af///wH///8B29fPn/// 132 | /wH///8B////Af///wH///8B////Ad+/AAXUvAA907sAEf///wH///8B////Af///wH///8B////AdvX 133 | z5////8B07sA3dS8ADn///8B////Af///wHUvAA91LwA/9S7AJPUuwCJ1LsAif///wH///8B////Af// 134 | /wHb18+f////AdS7ADnVugAN////Af///wH///8B07sAEdS8AJPTvAA91LwAJdS7ACX///8B////Af// 135 | /wH///8B29fPn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 136 | /wH///8B////AdvXz5////8B1LwAOdW6AA3UvABh1LwA99O7AK3///8B1LwAOdW6AA3UuwAd1LsAHf// 137 | /wH///8B////Af///wHb18+f////AdO7ANvUvAA507sAn9S8AP/UvAD3////AdO7ANvUvAA51LsAi9S7 138 | AIv///8B////Af///wH///8B29fPn////wH///8B////AdS7AC3UvACf1LwAYf///wH///8B////Af// 139 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 140 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 141 | /wH///8B////Af///wH///8B////AQAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA 142 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA 143 | AAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 144 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 145 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 146 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 147 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 148 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 149 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 150 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 151 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B39/PEdvX 152 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvX 153 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B////Af///wH///8B////Af///wH///8B////Af// 154 | /wHb189B3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zY 155 | z//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz/////8B////Af///wH///8B////Af// 156 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 157 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 158 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af// 159 | /wH///8B////Af///wH///8B////Af///wH///8B////Ade/ACHTuwCB1LwAodS7AHH///8B////Af// 160 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B378AEdO7AEH///8B////Af// 161 | /wHUvACh07sA8dS7ALHXvwAh////Af///wHXvwAh178AIf///wHfvwAR07sA8dS8AP/UvAD/1LwA/9S8 162 | AKH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHUvADh1LwA/9S7 163 | AHH///8B1boAMdS8AP/UvAD/1LwA/9S7AHH///8B1boAMdS8AP/UvAD/178AIdO7AEHUvAD/1LwA/9S8 164 | AP/UvAD/07sA8f///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 165 | AOHUvAD/1LsAcf///wHVugAx1LwA/9S8AP/UvAD/1LsAcf///wHVugAx1LwA/9S8AP/XvwAh07sAQdS8 166 | AP/UvAD/1LwA/9S8AP/TvADv////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 167 | /wH///8B378AEde+AD////8B////Af///wHUvACh07wA79O8AK/XvwAh////Af///wHVugAx1boAMf// 168 | /wHfvwAR07wA79S8AP/UvAD/1LwA/9S8AKH///8B////Af///wH///8B////Af///wH///8B////AdvX 169 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 170 | /wH///8B////Af///wHXvwAh1b0Af9O8AK/TvABv378AEf///wH///8B////Af///wH///8B////Af// 171 | /wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 172 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 173 | /wH///8B////Af///wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af// 174 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 175 | /wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af// 176 | /wH///8B////Af///wH///8B////Ad+/ABHVvQBh1LwAkdO7AEH///8B////Af///wH///8B////Af// 177 | /wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8AJHTuwDx1rwAUf// 178 | /wH///8B////Af///wH///8B////Af///wH///8B1b0AYdS8AP/UvAD/1LwA/9+/ABHfvwAR1LwA0dS8 179 | ANHfvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B07sA8dS8 180 | AP/UvACR////Af///wH///8B////Af///wH///8B////Af///wHUvACR1LwA/9S8AP/UvAD/07sAQdO7 181 | AEHUvAD/1LwA/9O7AEH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af// 182 | /wHWvABR1LsAj9W6ADH///8B////Af///wH///8B////Af///wH///8B////AdO7AEHUvAD/1LwA/9O8 183 | AO////8B////AdS8AJHUuwCP////Af///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzY 184 | z/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Ad+/ 185 | ABHXvgA/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 186 | /wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 187 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 188 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 189 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 190 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B1b0AYdS8 191 | AOHUvAD/07sAwdW6ADH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 192 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B1rwAUdS8AJHVugAx////Ade/ 193 | ACHUvAD/1LwA/9S8AP/UvAD/07sAwf///wH///8B1rwAUdS8AJHVugAx////Af///wHUuwBx1LsAcf// 194 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHTuwDx1LwA/9S8 195 | AJH///8B07sAQdS8AP/UvAD/1LwA/9S8AP/UvAD/////Af///wHTuwDx1LwA/9S8AJH///8B07sAQdS8 196 | AP/UvAD/07sAQf///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 197 | AJHTvADv1rwAUf///wHTuwBB1LwA/9S8AP/UvAD/1LwA/9S8AN////8B////AdS8AJHTvADv1rwAUf// 198 | /wHfvwAR1LwA39S8AN/fvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 199 | /wH///8B////Af///wH///8B////Af///wHUuwCx1LwA/9S8AP/UvAD/1b0AYf///wH///8B////Af// 200 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AdvX 201 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wHTuwBB174AP9e/ACH///8B////Af// 202 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 203 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 204 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 205 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 206 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 207 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 208 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 209 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 210 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 211 | /wH///8B////Af///wH///8B////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 212 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 213 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 214 | 215 | 216 | -------------------------------------------------------------------------------- /Source/FormOptions.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE 124 | AAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 125 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 126 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz2Xb18+f29fPn9vXz5/b18+f29fPn9vX 127 | z5/b18+f29fPn9vXz5/b18+f29fPn////wH///8B////Af///wHb18+f////Af///wH///8B////Af// 128 | /wH///8B////Af///wHXvwAJ07sASdS7AB3///8B////Af///wH///8B29fPn////wHUuwCN1LsAHdS7 129 | AHXTuwDn1LsAJdS8AFXUvABR07sAkdS8AP/TuwDj////Af///wH///8B////AdvXz5////8B1LwAi9S7 130 | AB3UuwB107wA59S7ACXUuwBZ1LwAVdO7AI/UvAD/07wA4////wH///8B////Af///wHb18+f////Af// 131 | /wH///8B////Af///wH///8B////Af///wHXvwAJ07wAS9S8ACH///8B////Af///wH///8B29fPn/// 132 | /wH///8B////Af///wH///8B////Ad+/AAXUvAA907sAEf///wH///8B////Af///wH///8B////AdvX 133 | z5////8B07sA3dS8ADn///8B////Af///wHUvAA91LwA/9S7AJPUuwCJ1LsAif///wH///8B////Af// 134 | /wHb18+f////AdS7ADnVugAN////Af///wH///8B07sAEdS8AJPTvAA91LwAJdS7ACX///8B////Af// 135 | /wH///8B29fPn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 136 | /wH///8B////AdvXz5////8B1LwAOdW6AA3UvABh1LwA99O7AK3///8B1LwAOdW6AA3UuwAd1LsAHf// 137 | /wH///8B////Af///wHb18+f////AdO7ANvUvAA507sAn9S8AP/UvAD3////AdO7ANvUvAA51LsAi9S7 138 | AIv///8B////Af///wH///8B29fPn////wH///8B////AdS7AC3UvACf1LwAYf///wH///8B////Af// 139 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 140 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 141 | /wH///8B////Af///wH///8B////AQAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA 142 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA 143 | AAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 144 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 145 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 146 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 147 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 148 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 149 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 150 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 151 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B39/PEdvX 152 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvX 153 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B////Af///wH///8B////Af///wH///8B////Af// 154 | /wHb189B3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zY 155 | z//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz/////8B////Af///wH///8B////Af// 156 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 157 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 158 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af// 159 | /wH///8B////Af///wH///8B////Af///wH///8B////Ade/ACHTuwCB1LwAodS7AHH///8B////Af// 160 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B378AEdO7AEH///8B////Af// 161 | /wHUvACh07sA8dS7ALHXvwAh////Af///wHXvwAh178AIf///wHfvwAR07sA8dS8AP/UvAD/1LwA/9S8 162 | AKH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHUvADh1LwA/9S7 163 | AHH///8B1boAMdS8AP/UvAD/1LwA/9S7AHH///8B1boAMdS8AP/UvAD/178AIdO7AEHUvAD/1LwA/9S8 164 | AP/UvAD/07sA8f///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 165 | AOHUvAD/1LsAcf///wHVugAx1LwA/9S8AP/UvAD/1LsAcf///wHVugAx1LwA/9S8AP/XvwAh07sAQdS8 166 | AP/UvAD/1LwA/9S8AP/TvADv////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 167 | /wH///8B378AEde+AD////8B////Af///wHUvACh07wA79O8AK/XvwAh////Af///wHVugAx1boAMf// 168 | /wHfvwAR07wA79S8AP/UvAD/1LwA/9S8AKH///8B////Af///wH///8B////Af///wH///8B////AdvX 169 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 170 | /wH///8B////Af///wHXvwAh1b0Af9O8AK/TvABv378AEf///wH///8B////Af///wH///8B////Af// 171 | /wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 172 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 173 | /wH///8B////Af///wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af// 174 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 175 | /wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af// 176 | /wH///8B////Af///wH///8B////Ad+/ABHVvQBh1LwAkdO7AEH///8B////Af///wH///8B////Af// 177 | /wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8AJHTuwDx1rwAUf// 178 | /wH///8B////Af///wH///8B////Af///wH///8B1b0AYdS8AP/UvAD/1LwA/9+/ABHfvwAR1LwA0dS8 179 | ANHfvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B07sA8dS8 180 | AP/UvACR////Af///wH///8B////Af///wH///8B////Af///wHUvACR1LwA/9S8AP/UvAD/07sAQdO7 181 | AEHUvAD/1LwA/9O7AEH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af// 182 | /wHWvABR1LsAj9W6ADH///8B////Af///wH///8B////Af///wH///8B////AdO7AEHUvAD/1LwA/9O8 183 | AO////8B////AdS8AJHUuwCP////Af///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzY 184 | z/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Ad+/ 185 | ABHXvgA/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 186 | /wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 187 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 188 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 189 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 190 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B1b0AYdS8 191 | AOHUvAD/07sAwdW6ADH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 192 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B1rwAUdS8AJHVugAx////Ade/ 193 | ACHUvAD/1LwA/9S8AP/UvAD/07sAwf///wH///8B1rwAUdS8AJHVugAx////Af///wHUuwBx1LsAcf// 194 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHTuwDx1LwA/9S8 195 | AJH///8B07sAQdS8AP/UvAD/1LwA/9S8AP/UvAD/////Af///wHTuwDx1LwA/9S8AJH///8B07sAQdS8 196 | AP/UvAD/07sAQf///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 197 | AJHTvADv1rwAUf///wHTuwBB1LwA/9S8AP/UvAD/1LwA/9S8AN////8B////AdS8AJHTvADv1rwAUf// 198 | /wHfvwAR1LwA39S8AN/fvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 199 | /wH///8B////Af///wH///8B////Af///wHUuwCx1LwA/9S8AP/UvAD/1b0AYf///wH///8B////Af// 200 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AdvX 201 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wHTuwBB174AP9e/ACH///8B////Af// 202 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 203 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 204 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 205 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 206 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 207 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 208 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 209 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 210 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 211 | /wH///8B////Af///wH///8B////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 212 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 213 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 214 | 215 | 216 | -------------------------------------------------------------------------------- /Source/FormResponse.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE 124 | AAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 125 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 126 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz2Xb18+f29fPn9vXz5/b18+f29fPn9vX 127 | z5/b18+f29fPn9vXz5/b18+f29fPn////wH///8B////Af///wHb18+f////Af///wH///8B////Af// 128 | /wH///8B////Af///wHXvwAJ07sASdS7AB3///8B////Af///wH///8B29fPn////wHUuwCN1LsAHdS7 129 | AHXTuwDn1LsAJdS8AFXUvABR07sAkdS8AP/TuwDj////Af///wH///8B////AdvXz5////8B1LwAi9S7 130 | AB3UuwB107wA59S7ACXUuwBZ1LwAVdO7AI/UvAD/07wA4////wH///8B////Af///wHb18+f////Af// 131 | /wH///8B////Af///wH///8B////Af///wHXvwAJ07wAS9S8ACH///8B////Af///wH///8B29fPn/// 132 | /wH///8B////Af///wH///8B////Ad+/AAXUvAA907sAEf///wH///8B////Af///wH///8B////AdvX 133 | z5////8B07sA3dS8ADn///8B////Af///wHUvAA91LwA/9S7AJPUuwCJ1LsAif///wH///8B////Af// 134 | /wHb18+f////AdS7ADnVugAN////Af///wH///8B07sAEdS8AJPTvAA91LwAJdS7ACX///8B////Af// 135 | /wH///8B29fPn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 136 | /wH///8B////AdvXz5////8B1LwAOdW6AA3UvABh1LwA99O7AK3///8B1LwAOdW6AA3UuwAd1LsAHf// 137 | /wH///8B////Af///wHb18+f////AdO7ANvUvAA507sAn9S8AP/UvAD3////AdO7ANvUvAA51LsAi9S7 138 | AIv///8B////Af///wH///8B29fPn////wH///8B////AdS7AC3UvACf1LwAYf///wH///8B////Af// 139 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 140 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 141 | /wH///8B////Af///wH///8B////AQAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA 142 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA 143 | AAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 144 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 145 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 146 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 147 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 148 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 149 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 150 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 151 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B39/PEdvX 152 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvX 153 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B////Af///wH///8B////Af///wH///8B////Af// 154 | /wHb189B3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zY 155 | z//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz/////8B////Af///wH///8B////Af// 156 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 157 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 158 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af// 159 | /wH///8B////Af///wH///8B////Af///wH///8B////Ade/ACHTuwCB1LwAodS7AHH///8B////Af// 160 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B378AEdO7AEH///8B////Af// 161 | /wHUvACh07sA8dS7ALHXvwAh////Af///wHXvwAh178AIf///wHfvwAR07sA8dS8AP/UvAD/1LwA/9S8 162 | AKH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHUvADh1LwA/9S7 163 | AHH///8B1boAMdS8AP/UvAD/1LwA/9S7AHH///8B1boAMdS8AP/UvAD/178AIdO7AEHUvAD/1LwA/9S8 164 | AP/UvAD/07sA8f///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 165 | AOHUvAD/1LsAcf///wHVugAx1LwA/9S8AP/UvAD/1LsAcf///wHVugAx1LwA/9S8AP/XvwAh07sAQdS8 166 | AP/UvAD/1LwA/9S8AP/TvADv////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 167 | /wH///8B378AEde+AD////8B////Af///wHUvACh07wA79O8AK/XvwAh////Af///wHVugAx1boAMf// 168 | /wHfvwAR07wA79S8AP/UvAD/1LwA/9S8AKH///8B////Af///wH///8B////Af///wH///8B////AdvX 169 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 170 | /wH///8B////Af///wHXvwAh1b0Af9O8AK/TvABv378AEf///wH///8B////Af///wH///8B////Af// 171 | /wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 172 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 173 | /wH///8B////Af///wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af// 174 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 175 | /wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af// 176 | /wH///8B////Af///wH///8B////Ad+/ABHVvQBh1LwAkdO7AEH///8B////Af///wH///8B////Af// 177 | /wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8AJHTuwDx1rwAUf// 178 | /wH///8B////Af///wH///8B////Af///wH///8B1b0AYdS8AP/UvAD/1LwA/9+/ABHfvwAR1LwA0dS8 179 | ANHfvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B07sA8dS8 180 | AP/UvACR////Af///wH///8B////Af///wH///8B////Af///wHUvACR1LwA/9S8AP/UvAD/07sAQdO7 181 | AEHUvAD/1LwA/9O7AEH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af// 182 | /wHWvABR1LsAj9W6ADH///8B////Af///wH///8B////Af///wH///8B////AdO7AEHUvAD/1LwA/9O8 183 | AO////8B////AdS8AJHUuwCP////Af///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzY 184 | z/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Ad+/ 185 | ABHXvgA/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 186 | /wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 187 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 188 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 189 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 190 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B1b0AYdS8 191 | AOHUvAD/07sAwdW6ADH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 192 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B1rwAUdS8AJHVugAx////Ade/ 193 | ACHUvAD/1LwA/9S8AP/UvAD/07sAwf///wH///8B1rwAUdS8AJHVugAx////Af///wHUuwBx1LsAcf// 194 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHTuwDx1LwA/9S8 195 | AJH///8B07sAQdS8AP/UvAD/1LwA/9S8AP/UvAD/////Af///wHTuwDx1LwA/9S8AJH///8B07sAQdS8 196 | AP/UvAD/07sAQf///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 197 | AJHTvADv1rwAUf///wHTuwBB1LwA/9S8AP/UvAD/1LwA/9S8AN////8B////AdS8AJHTvADv1rwAUf// 198 | /wHfvwAR1LwA39S8AN/fvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 199 | /wH///8B////Af///wH///8B////Af///wHUuwCx1LwA/9S8AP/UvAD/1b0AYf///wH///8B////Af// 200 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AdvX 201 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wHTuwBB174AP9e/ACH///8B////Af// 202 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 203 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 204 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 205 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 206 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 207 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 208 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 209 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 210 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 211 | /wH///8B////Af///wH///8B////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 212 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 213 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 214 | 215 | 216 | -------------------------------------------------------------------------------- /Source/FormExtendedInfo.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE 124 | AAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 125 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 126 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz2Xb18+f29fPn9vXz5/b18+f29fPn9vX 127 | z5/b18+f29fPn9vXz5/b18+f29fPn////wH///8B////Af///wHb18+f////Af///wH///8B////Af// 128 | /wH///8B////Af///wHXvwAJ07sASdS7AB3///8B////Af///wH///8B29fPn////wHUuwCN1LsAHdS7 129 | AHXTuwDn1LsAJdS8AFXUvABR07sAkdS8AP/TuwDj////Af///wH///8B////AdvXz5////8B1LwAi9S7 130 | AB3UuwB107wA59S7ACXUuwBZ1LwAVdO7AI/UvAD/07wA4////wH///8B////Af///wHb18+f////Af// 131 | /wH///8B////Af///wH///8B////Af///wHXvwAJ07wAS9S8ACH///8B////Af///wH///8B29fPn/// 132 | /wH///8B////Af///wH///8B////Ad+/AAXUvAA907sAEf///wH///8B////Af///wH///8B////AdvX 133 | z5////8B07sA3dS8ADn///8B////Af///wHUvAA91LwA/9S7AJPUuwCJ1LsAif///wH///8B////Af// 134 | /wHb18+f////AdS7ADnVugAN////Af///wH///8B07sAEdS8AJPTvAA91LwAJdS7ACX///8B////Af// 135 | /wH///8B29fPn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 136 | /wH///8B////AdvXz5////8B1LwAOdW6AA3UvABh1LwA99O7AK3///8B1LwAOdW6AA3UuwAd1LsAHf// 137 | /wH///8B////Af///wHb18+f////AdO7ANvUvAA507sAn9S8AP/UvAD3////AdO7ANvUvAA51LsAi9S7 138 | AIv///8B////Af///wH///8B29fPn////wH///8B////AdS7AC3UvACf1LwAYf///wH///8B////Af// 139 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 140 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 141 | /wH///8B////Af///wH///8B////AQAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA 142 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA 143 | AAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 144 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 145 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 146 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 147 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 148 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 149 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 150 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 151 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B39/PEdvX 152 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvX 153 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B////Af///wH///8B////Af///wH///8B////Af// 154 | /wHb189B3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zY 155 | z//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz/////8B////Af///wH///8B////Af// 156 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 157 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 158 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af// 159 | /wH///8B////Af///wH///8B////Af///wH///8B////Ade/ACHTuwCB1LwAodS7AHH///8B////Af// 160 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B378AEdO7AEH///8B////Af// 161 | /wHUvACh07sA8dS7ALHXvwAh////Af///wHXvwAh178AIf///wHfvwAR07sA8dS8AP/UvAD/1LwA/9S8 162 | AKH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHUvADh1LwA/9S7 163 | AHH///8B1boAMdS8AP/UvAD/1LwA/9S7AHH///8B1boAMdS8AP/UvAD/178AIdO7AEHUvAD/1LwA/9S8 164 | AP/UvAD/07sA8f///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 165 | AOHUvAD/1LsAcf///wHVugAx1LwA/9S8AP/UvAD/1LsAcf///wHVugAx1LwA/9S8AP/XvwAh07sAQdS8 166 | AP/UvAD/1LwA/9S8AP/TvADv////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 167 | /wH///8B378AEde+AD////8B////Af///wHUvACh07wA79O8AK/XvwAh////Af///wHVugAx1boAMf// 168 | /wHfvwAR07wA79S8AP/UvAD/1LwA/9S8AKH///8B////Af///wH///8B////Af///wH///8B////AdvX 169 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 170 | /wH///8B////Af///wHXvwAh1b0Af9O8AK/TvABv378AEf///wH///8B////Af///wH///8B////Af// 171 | /wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 172 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 173 | /wH///8B////Af///wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af// 174 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 175 | /wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af// 176 | /wH///8B////Af///wH///8B////Ad+/ABHVvQBh1LwAkdO7AEH///8B////Af///wH///8B////Af// 177 | /wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8AJHTuwDx1rwAUf// 178 | /wH///8B////Af///wH///8B////Af///wH///8B1b0AYdS8AP/UvAD/1LwA/9+/ABHfvwAR1LwA0dS8 179 | ANHfvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B07sA8dS8 180 | AP/UvACR////Af///wH///8B////Af///wH///8B////Af///wHUvACR1LwA/9S8AP/UvAD/07sAQdO7 181 | AEHUvAD/1LwA/9O7AEH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af// 182 | /wHWvABR1LsAj9W6ADH///8B////Af///wH///8B////Af///wH///8B////AdO7AEHUvAD/1LwA/9O8 183 | AO////8B////AdS8AJHUuwCP////Af///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzY 184 | z/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Ad+/ 185 | ABHXvgA/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 186 | /wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 187 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 188 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 189 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 190 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B1b0AYdS8 191 | AOHUvAD/07sAwdW6ADH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 192 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B1rwAUdS8AJHVugAx////Ade/ 193 | ACHUvAD/1LwA/9S8AP/UvAD/07sAwf///wH///8B1rwAUdS8AJHVugAx////Af///wHUuwBx1LsAcf// 194 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHTuwDx1LwA/9S8 195 | AJH///8B07sAQdS8AP/UvAD/1LwA/9S8AP/UvAD/////Af///wHTuwDx1LwA/9S8AJH///8B07sAQdS8 196 | AP/UvAD/07sAQf///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 197 | AJHTvADv1rwAUf///wHTuwBB1LwA/9S8AP/UvAD/1LwA/9S8AN////8B////AdS8AJHTvADv1rwAUf// 198 | /wHfvwAR1LwA39S8AN/fvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 199 | /wH///8B////Af///wH///8B////Af///wHUuwCx1LwA/9S8AP/UvAD/1b0AYf///wH///8B////Af// 200 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AdvX 201 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wHTuwBB174AP9e/ACH///8B////Af// 202 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 203 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 204 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 205 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 206 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 207 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 208 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 209 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 210 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 211 | /wH///8B////Af///wH///8B////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 212 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 213 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 214 | 215 | 216 | -------------------------------------------------------------------------------- /Source/FormMain.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 109, 17 122 | 123 | 124 | 217, 17 125 | 126 | 127 | 128 | 129 | iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 130 | YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAEKSURBVFhH7ZexCoJQGIV9pN6gZitpMmjqEZqKrtVQ1NIj 131 | 9AANjZrWltADNLXU0tBc4NRkHlIIu6ap3B/CDw7odD7k/vdepYK/QWZGyX+kQWH6vs6Mtv8qHmW4PShs 132 | 7ZJJQKCzOLpy13qQSEBAW17c0epKIxEIzK07jcS7AIlEWOAniWpPr9T6ZjlLGppxCgsklsD4qGPLaU7t 133 | W9q0ZraDsrBAIgkI8OzzzFcJEQJIpIQoAYQrIV7ApBHglgNxi5BTDiCgTjbeGO68kUqX+DGMKAfYiLKm 134 | NrDOvK8YW54X0VuxgHLAP4wElYPP41hgOQgESMoBBF5XMoJyAAGMM0k5IL+Wk/+YFKRDkp7o9M3KHEnP 135 | KwAAAABJRU5ErkJggg== 136 | 137 | 138 | 139 | 315, 17 140 | 141 | 142 | 17, 17 143 | 144 | 145 | 146 | AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE 147 | AAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 148 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 149 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz2Xb18+f29fPn9vXz5/b18+f29fPn9vX 150 | z5/b18+f29fPn9vXz5/b18+f29fPn////wH///8B////Af///wHb18+f////Af///wH///8B////Af// 151 | /wH///8B////Af///wHXvwAJ07sASdS7AB3///8B////Af///wH///8B29fPn////wHUuwCN1LsAHdS7 152 | AHXTuwDn1LsAJdS8AFXUvABR07sAkdS8AP/TuwDj////Af///wH///8B////AdvXz5////8B1LwAi9S7 153 | AB3UuwB107wA59S7ACXUuwBZ1LwAVdO7AI/UvAD/07wA4////wH///8B////Af///wHb18+f////Af// 154 | /wH///8B////Af///wH///8B////Af///wHXvwAJ07wAS9S8ACH///8B////Af///wH///8B29fPn/// 155 | /wH///8B////Af///wH///8B////Ad+/AAXUvAA907sAEf///wH///8B////Af///wH///8B////AdvX 156 | z5////8B07sA3dS8ADn///8B////Af///wHUvAA91LwA/9S7AJPUuwCJ1LsAif///wH///8B////Af// 157 | /wHb18+f////AdS7ADnVugAN////Af///wH///8B07sAEdS8AJPTvAA91LwAJdS7ACX///8B////Af// 158 | /wH///8B29fPn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 159 | /wH///8B////AdvXz5////8B1LwAOdW6AA3UvABh1LwA99O7AK3///8B1LwAOdW6AA3UuwAd1LsAHf// 160 | /wH///8B////Af///wHb18+f////AdO7ANvUvAA507sAn9S8AP/UvAD3////AdO7ANvUvAA51LsAi9S7 161 | AIv///8B////Af///wH///8B29fPn////wH///8B////AdS7AC3UvACf1LwAYf///wH///8B////Af// 162 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 163 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 164 | /wH///8B////Af///wH///8B////AQAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA 165 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA 166 | AAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 167 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 168 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 169 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 170 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 171 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 172 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 173 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 174 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B39/PEdvX 175 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvX 176 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B////Af///wH///8B////Af///wH///8B////Af// 177 | /wHb189B3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zY 178 | z//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz/////8B////Af///wH///8B////Af// 179 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 180 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 181 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af// 182 | /wH///8B////Af///wH///8B////Af///wH///8B////Ade/ACHTuwCB1LwAodS7AHH///8B////Af// 183 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B378AEdO7AEH///8B////Af// 184 | /wHUvACh07sA8dS7ALHXvwAh////Af///wHXvwAh178AIf///wHfvwAR07sA8dS8AP/UvAD/1LwA/9S8 185 | AKH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHUvADh1LwA/9S7 186 | AHH///8B1boAMdS8AP/UvAD/1LwA/9S7AHH///8B1boAMdS8AP/UvAD/178AIdO7AEHUvAD/1LwA/9S8 187 | AP/UvAD/07sA8f///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 188 | AOHUvAD/1LsAcf///wHVugAx1LwA/9S8AP/UvAD/1LsAcf///wHVugAx1LwA/9S8AP/XvwAh07sAQdS8 189 | AP/UvAD/1LwA/9S8AP/TvADv////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 190 | /wH///8B378AEde+AD////8B////Af///wHUvACh07wA79O8AK/XvwAh////Af///wHVugAx1boAMf// 191 | /wHfvwAR07wA79S8AP/UvAD/1LwA/9S8AKH///8B////Af///wH///8B////Af///wH///8B////AdvX 192 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 193 | /wH///8B////Af///wHXvwAh1b0Af9O8AK/TvABv378AEf///wH///8B////Af///wH///8B////Af// 194 | /wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 195 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 196 | /wH///8B////Af///wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af// 197 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 198 | /wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af// 199 | /wH///8B////Af///wH///8B////Ad+/ABHVvQBh1LwAkdO7AEH///8B////Af///wH///8B////Af// 200 | /wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8AJHTuwDx1rwAUf// 201 | /wH///8B////Af///wH///8B////Af///wH///8B1b0AYdS8AP/UvAD/1LwA/9+/ABHfvwAR1LwA0dS8 202 | ANHfvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B07sA8dS8 203 | AP/UvACR////Af///wH///8B////Af///wH///8B////Af///wHUvACR1LwA/9S8AP/UvAD/07sAQdO7 204 | AEHUvAD/1LwA/9O7AEH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af// 205 | /wHWvABR1LsAj9W6ADH///8B////Af///wH///8B////Af///wH///8B////AdO7AEHUvAD/1LwA/9O8 206 | AO////8B////AdS8AJHUuwCP////Af///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzY 207 | z/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Ad+/ 208 | ABHXvgA/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 209 | /wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 210 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 211 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 212 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 213 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B1b0AYdS8 214 | AOHUvAD/07sAwdW6ADH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 215 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B1rwAUdS8AJHVugAx////Ade/ 216 | ACHUvAD/1LwA/9S8AP/UvAD/07sAwf///wH///8B1rwAUdS8AJHVugAx////Af///wHUuwBx1LsAcf// 217 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHTuwDx1LwA/9S8 218 | AJH///8B07sAQdS8AP/UvAD/1LwA/9S8AP/UvAD/////Af///wHTuwDx1LwA/9S8AJH///8B07sAQdS8 219 | AP/UvAD/07sAQf///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 220 | AJHTvADv1rwAUf///wHTuwBB1LwA/9S8AP/UvAD/1LwA/9S8AN////8B////AdS8AJHTvADv1rwAUf// 221 | /wHfvwAR1LwA39S8AN/fvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 222 | /wH///8B////Af///wH///8B////Af///wHUuwCx1LwA/9S8AP/UvAD/1b0AYf///wH///8B////Af// 223 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AdvX 224 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wHTuwBB174AP9e/ACH///8B////Af// 225 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 226 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 227 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 228 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 229 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 230 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 231 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 232 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 233 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 234 | /wH///8B////Af///wH///8B////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 235 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 236 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 237 | 238 | 239 | -------------------------------------------------------------------------------- /Source/FormAbout.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 124 | YQUAAAOpSURBVHhe7ZzfkdMwEMZdAiVQwpVACXQAHUAHpCN4xrnJdcCDE+CBGUqADu68kTaXOGt5pVha 125 | Of5+M9+MJ9aftb61HDuKGwAAAAAAAAAAAAAApvjx+8/zufzHoBQwwJjiBnw/PDSPhy/Ndr9rtt0/p36b 126 | PqN9a6OoAe3+cz/Yz+M6GvLJl14HxQxo99/kQZfUffW17p8iBkxmviCqswaiDNj+fN8Pjp+7jwO1a9ru 127 | nd8rQ/P6cHBV6vuYuiakxEOk1suB2gAX9NkAnSkUfNttxDoaUd0xUuNJrZcLtQFt9yQGTaJ9Y4TqTSm1 128 | 3Rz1cqE2QAr4pP5UHqPt/st1NAq0K5ZnZaiXi1kMoEEe4xYDQu1K5Vk56uVCbUCOU35Kqe3mqJcLtQG4 129 | COdBbQBBwVOW8LTitsNB01fJlGmI6ux+vfWtyKTEQ6TWy0GUAangRmycIgYQMY8iqOxaKGYAQVkdmo5o 130 | 31oynylqAOGuCRs/7/YDfhRtbybn/HukuAHgEhhgDAwwBgYYAwOMgQHGwABjYIAxizbg8fCxv4O+XF+0 131 | 3X/we5fBIg3Y/X3jB1t+pEH7qMwSiDLAPUu3X01Ajy6uB32onS99TS3HQagNcEEPD9KpZPBu2pHjGIrK 132 | DqnlOBi1AaGso32l0GW/kxRXLcfBqA2QAj6p4GqC0OPsKwlxieVYBY+DmcUAGpRSxBggxSWVY5U8DkZt 133 | QC2nbiiOoaS4ajkORm0ALsJ5UBtAUPCUJTwNuO3yQYeymBXK5lqOg4gyoBboJitkAu27yxux2qAphjPZ 134 | 6Umcdmpm0QbcAzDAGBhgDAwwBgYYAwOMgQHGwABjVmMALQqu8R0VqzBg8g8iR0Ns3lFR1AD3JPMyA3Ov 135 | Yqj9HRVFDLBaxbCEv0ZFGeCepcevJgg9uXzV+CoGJqZ/mtev+1Cob7vkNUFtQOoPGbf+gMLE9p/r77Fz 136 | ozZg6vn7GLrsd0ptR6oX0+9QoTjmRm2AFOhJ/Wk7Bv/qpFKgHbE8S6gX1e9QgTjmZhYD6GDHiBmIUDtS 137 | eZZU7xYDQnHMjdqA2CmAiZkKUtuR6sX0O1QojrlRG4CLcB7UBhA0CJQdfHq77fHBZzTZqMm6mP7d/5Hj 138 | pyGqU+XX0FuwWsVwdzdit0JTDGewU/5VDLW/o6KoAVZQVoemo2MyFM58ZhUGEO6aUN87KlZjQK3AAGNg 139 | gDEwwJihAZCTH578SJ1DMMBcfnjyI3UO4VoIAAAAAAAAAAAAAAAAEk3zAmoR+xcKX89QAAAAAElFTkSu 140 | QmCC 141 | 142 | 143 | 144 | 145 | AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE 146 | AAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 147 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 148 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz2Xb18+f29fPn9vXz5/b18+f29fPn9vX 149 | z5/b18+f29fPn9vXz5/b18+f29fPn////wH///8B////Af///wHb18+f////Af///wH///8B////Af// 150 | /wH///8B////Af///wHXvwAJ07sASdS7AB3///8B////Af///wH///8B29fPn////wHUuwCN1LsAHdS7 151 | AHXTuwDn1LsAJdS8AFXUvABR07sAkdS8AP/TuwDj////Af///wH///8B////AdvXz5////8B1LwAi9S7 152 | AB3UuwB107wA59S7ACXUuwBZ1LwAVdO7AI/UvAD/07wA4////wH///8B////Af///wHb18+f////Af// 153 | /wH///8B////Af///wH///8B////Af///wHXvwAJ07wAS9S8ACH///8B////Af///wH///8B29fPn/// 154 | /wH///8B////Af///wH///8B////Ad+/AAXUvAA907sAEf///wH///8B////Af///wH///8B////AdvX 155 | z5////8B07sA3dS8ADn///8B////Af///wHUvAA91LwA/9S7AJPUuwCJ1LsAif///wH///8B////Af// 156 | /wHb18+f////AdS7ADnVugAN////Af///wH///8B07sAEdS8AJPTvAA91LwAJdS7ACX///8B////Af// 157 | /wH///8B29fPn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 158 | /wH///8B////AdvXz5////8B1LwAOdW6AA3UvABh1LwA99O7AK3///8B1LwAOdW6AA3UuwAd1LsAHf// 159 | /wH///8B////Af///wHb18+f////AdO7ANvUvAA507sAn9S8AP/UvAD3////AdO7ANvUvAA51LsAi9S7 160 | AIv///8B////Af///wH///8B29fPn////wH///8B////AdS7AC3UvACf1LwAYf///wH///8B////Af// 161 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 162 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 163 | /wH///8B////Af///wH///8B////AQAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA 164 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA 165 | AAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 166 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 167 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 168 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 169 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 170 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 171 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 172 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 173 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B39/PEdvX 174 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B29fPQdvX 175 | z0Hb189B29fPQdvXz0Hb189B29fPQdvXz0Hb189B////Af///wH///8B////Af///wH///8B////Af// 176 | /wHb189B3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zY 177 | z//c2M//3NjP/9zYz//c2M//3NjP/9zYz//c2M//3NjP/9zYz/////8B////Af///wH///8B////Af// 178 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 179 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 180 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af// 181 | /wH///8B////Af///wH///8B////Af///wH///8B////Ade/ACHTuwCB1LwAodS7AHH///8B////Af// 182 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B378AEdO7AEH///8B////Af// 183 | /wHUvACh07sA8dS7ALHXvwAh////Af///wHXvwAh178AIf///wHfvwAR07sA8dS8AP/UvAD/1LwA/9S8 184 | AKH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHUvADh1LwA/9S7 185 | AHH///8B1boAMdS8AP/UvAD/1LwA/9S7AHH///8B1boAMdS8AP/UvAD/178AIdO7AEHUvAD/1LwA/9S8 186 | AP/UvAD/07sA8f///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 187 | AOHUvAD/1LsAcf///wHVugAx1LwA/9S8AP/UvAD/1LsAcf///wHVugAx1LwA/9S8AP/XvwAh07sAQdS8 188 | AP/UvAD/1LwA/9S8AP/TvADv////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 189 | /wH///8B378AEde+AD////8B////Af///wHUvACh07wA79O8AK/XvwAh////Af///wHVugAx1boAMf// 190 | /wHfvwAR07wA79S8AP/UvAD/1LwA/9S8AKH///8B////Af///wH///8B////Af///wH///8B////AdvX 191 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 192 | /wH///8B////Af///wHXvwAh1b0Af9O8AK/TvABv378AEf///wH///8B////Af///wH///8B////Af// 193 | /wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 194 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 195 | /wH///8B////Af///wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af// 196 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 197 | /wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af// 198 | /wH///8B////Af///wH///8B////Ad+/ABHVvQBh1LwAkdO7AEH///8B////Af///wH///8B////Af// 199 | /wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8AJHTuwDx1rwAUf// 200 | /wH///8B////Af///wH///8B////Af///wH///8B1b0AYdS8AP/UvAD/1LwA/9+/ABHfvwAR1LwA0dS8 201 | ANHfvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B07sA8dS8 202 | AP/UvACR////Af///wH///8B////Af///wH///8B////Af///wHUvACR1LwA/9S8AP/UvAD/07sAQdO7 203 | AEHUvAD/1LwA/9O7AEH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af// 204 | /wHWvABR1LsAj9W6ADH///8B////Af///wH///8B////Af///wH///8B////AdO7AEHUvAD/1LwA/9O8 205 | AO////8B////AdS8AJHUuwCP////Af///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzY 206 | z/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Ad+/ 207 | ABHXvgA/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 208 | /wHb189B3NjP/////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 209 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 210 | /wH///8B////AdvXz0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 211 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 212 | /wH///8B////Af///wH///8B29fPQdzYz/////8B////Af///wH///8B////Af///wH///8B1b0AYdS8 213 | AOHUvAD/07sAwdW6ADH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 214 | /wH///8B////Af///wH///8B////Af///wHb189B3NjP/////wH///8B1rwAUdS8AJHVugAx////Ade/ 215 | ACHUvAD/1LwA/9S8AP/UvAD/07sAwf///wH///8B1rwAUdS8AJHVugAx////Af///wHUuwBx1LsAcf// 216 | /wH///8B////Af///wH///8B////Af///wH///8B////AdvXz0Hc2M//////Af///wHTuwDx1LwA/9S8 217 | AJH///8B07sAQdS8AP/UvAD/1LwA/9S8AP/UvAD/////Af///wHTuwDx1LwA/9S8AJH///8B07sAQdS8 218 | AP/UvAD/07sAQf///wH///8B////Af///wH///8B////Af///wH///8B29fPQdzYz/////8B////AdS8 219 | AJHTvADv1rwAUf///wHTuwBB1LwA/9S8AP/UvAD/1LwA/9S8AN////8B////AdS8AJHTvADv1rwAUf// 220 | /wHfvwAR1LwA39S8AN/fvwAR////Af///wH///8B////Af///wH///8B////Af///wHb189B3NjP//// 221 | /wH///8B////Af///wH///8B////Af///wHUuwCx1LwA/9S8AP/UvAD/1b0AYf///wH///8B////Af// 222 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AdvX 223 | z0Hc2M//////Af///wH///8B////Af///wH///8B////Af///wHTuwBB174AP9e/ACH///8B////Af// 224 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 225 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 226 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 227 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 228 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 229 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 230 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 231 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 232 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 233 | /wH///8B////Af///wH///8B////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 234 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 235 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 236 | 237 | 238 | -------------------------------------------------------------------------------- /Inputs/Inputs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 6 | VirusTotal (MD5) 7 | true 8 | https://www.virustotal.com/vtapi/v2/file/report 9 | https://www.virustotal.com/vtapi/v2/file/report?resource=#DATA#&apikey=#VT_API_KEY# 10 | 11 | MD5 12 | 13 | 14 | \"response_code\":\s(.*?), 15 | \"scan_date\":\s"(.*?)", 16 | \"positives\":\s(.*?), 17 | \"total\":\s(.*?), 18 | \"result\":\s"(.*?)", 19 | 20 | 21 | Response Code 22 | Scan Date 23 | Positives 24 | Total 25 | Result 26 | 27 | 28 | \"permalink\":\s"(.*?)", 29 | GET 30 | 31 | 32 | false 33 | 34 | 35 | VirusTotal (IP) 36 | true 37 | https://www.virustotal.com/vtapi/v2/ip-address/report 38 | https://www.virustotal.com/vtapi/v2/ip-address/report?ip=#DATA#&apikey=#VT_API_KEY# 39 | 40 | IP 41 | 42 | 43 | \"asn\":\s"(.*?)", 44 | \"country\":\s"(.*?)", 45 | \"owner\":\s(.*?), 46 | \"last_resolved\":\s"(.*?)", 47 | \"date\":\s"(.*?)", 48 | \"url\":\s"(.*?)", 49 | 50 | 51 | ASN 52 | Country 53 | Owner 54 | Last Resolved 55 | Date 56 | URL 57 | 58 | 59 | \"permalink\":\s"(.*?)", 60 | GET 61 | 62 | 63 | false 64 | 65 | 66 | VirusTotal (DNS) 67 | true 68 | https://www.virustotal.com/vtapi/v2/domain/report 69 | https://www.virustotal.com/vtapi/v2/domain/report?domains=#DATA#&apikey=#VT_API_KEY# 70 | 71 | Domain 72 | 73 | 74 | \"response_code\":\s(.*?), 75 | \"scan_date\":\s"(.*?)" 76 | \"positives\":\s(.*?), 77 | \"total\":\s(.*?), 78 | \"last_resolved\":\s"(.*?)", 79 | 80 | 81 | Response Code 82 | Scan Date 83 | Positives 84 | Total 85 | Last Resolved 86 | 87 | 88 | 89 | GET 90 | 91 | 92 | false 93 | 94 | 95 | VirusTotal (URL) 96 | true 97 | https://www.virustotal.com/vtapi/v2/url/report 98 | https://www.virustotal.com/vtapi/v2/url/report?resource=#DATA#&apikey=#VT_API_KEY# 99 | 100 | Domain 101 | 102 | 103 | \"response_code\":\s(.*?), 104 | \"scan_date\":\s"(.*?)", 105 | \"positives\":\s(.*?), 106 | \"total\":\s(.*?), 107 | 108 | 109 | Response Code 110 | Scan Date 111 | Positives 112 | Total 113 | 114 | 115 | \"permalink\":\s"(.*?)", 116 | GET 117 | 118 | 119 | false 120 | 121 | 122 | Fortiguard 123 | true 124 | https://www.fortiguard.com 125 | https://www.fortiguard.com/iprep?data=#DATA# 126 | 127 | IP 128 | Domain 129 | 130 | 131 | Category:\s(.*?)< 132 | 133 | 134 | Category 135 | 136 | 137 | 138 | GET 139 | 140 | 141 | false 142 | 143 | 144 | IP Void 145 | true 146 | http://www.ipvoid.com/ip-blacklist-check/ 147 | http://www.ipvoid.com/ip-blacklist-check/ 148 | 149 | IP 150 | 151 | 152 | Blacklist Status<\/td><td><span\sclass=\"label\slabel-.*?\">(.*?)</span> 153 | ISP<\/td><td>(.*?)<\/td> 154 | Country\sCode<\/td><td><img src=\".*?\salt=\"Flag\"\s\/>(.*?)<\/td> 155 | 156 | 157 | Blacklist Status 158 | ISP 159 | Country 160 | 161 | 162 | 163 | POST 164 | ip=#DATA# 165 | 166 | 167 | Content-Type 168 | application/x-www-form-urlencoded 169 | 170 | 171 | false 172 | 173 | 174 | ThreatExpert 175 | true 176 | http://www.threatexpert.com 177 | http://www.threatexpert.com/report.aspx?md5=#DATA# 178 | 179 | MD5 180 | 181 | 182 | content=\"ThreatExpert Report:(.*?)\"> 183 | Submission received:(.*?)<\/li> 184 | 185 | 186 | Threat 187 | Submission Received 188 | 189 | 190 | 191 | GET 192 | 193 | 194 | false 195 | 196 | 197 | VxVault 198 | true 199 | http://vxvault.net 200 | http://vxvault.net/ViriList.php?MD5=#DATA# 201 | 202 | MD5 203 | 204 | 205 | ViriFiche\.php\?ID=\d* 206 | 207 | 208 | 209 | 210 | 211 | 212 | GET 213 | 214 | 215 | false 216 | 217 | 218 | unshorten 219 | true 220 | https://unshorten.me 221 | https://unshorten.me/s/#DATA# 222 | 223 | URL 224 | 225 | 226 | \b(http:\/\/.*|https:\/\/.*) 227 | 228 | 229 | URL 230 | 231 | 232 | 233 | GET 234 | 235 | 236 | false 237 | 238 | 239 | URL Void 240 | true 241 | http://www.urlvoid.com 242 | http://www.urlvoid.com/scan/#DATA# 243 | 244 | URL 245 | 246 | 247 | Safety Reputation<\/td><td><span\sclass=\"label\slabel-.*?">(\d+\/\d+)</span> 248 | Analysis\sDate<\/td><td>(.*?)<\/td> 249 | Server\sLocation<\/td><td><img\ssrc=".*?"\salt="Flag"\s\/>([\s\w]*)<\/td> 250 | Domain\s1st\sRegistered<\/td><td>(.*?)<\/td> 251 | 252 | 253 | Blacklist Status 254 | Analysis Date 255 | Server Location 256 | Domain 1st Registered 257 | 258 | 259 | 260 | GET 261 | 262 | 263 | true 264 | 265 | 266 | malc0de 267 | true 268 | https://malc0de.com 269 | https://malc0de.com/database/index.php?search=#DATA# 270 | 271 | IP 272 | MD5 273 | Domain 274 | 275 | 276 | www.virustotal.com/latest-scan/ 277 | 278 | 279 | 280 | 281 | 282 | 283 | GET 284 | 285 | 286 | false 287 | 288 | 289 | freegeoip.net 290 | true 291 | https://freegeoip.net 292 | https://freegeoip.net/json/#DATA# 293 | 294 | IP 295 | 296 | 297 | "country_code":"(.*?)" 298 | "country_name":"(.*?)" 299 | "region_code":"(.*?)" 300 | "region_name":"(.*?)" 301 | "city":"(.*?)" 302 | "zip_code":"(.*?)" 303 | "time_zone":"(.*?)" 304 | "latitude":"(.*?)" 305 | "longitude":"(.*?)" 306 | 307 | 308 | Country Code 309 | Country Name 310 | Region Code 311 | Region Name 312 | City 313 | Post Code 314 | Timezone 315 | Latitude 316 | Longitude 317 | 318 | 319 | 320 | GET 321 | 322 | 323 | false 324 | 325 | 326 | SANS 327 | true 328 | https://isc.sans.edu/api/#ip 329 | https://isc.sans.edu/api/ip/#DATA# 330 | 331 | IP 332 | 333 | 334 | <count>(\d+)<\/count> 335 | <attacks>(\d+)<\/attacks> 336 | 337 | 338 | Total Blocked Packets 339 | Total Unique Dest IP's 340 | 341 | 342 | 343 | GET 344 | 345 | 346 | false 347 | 348 | 349 | DNS 350 | true 351 | N/A 352 | N/A 353 | 354 | IP 355 | 356 | 357 | 358 | 359 | 360 | GET 361 | 362 | 363 | false 364 | 365 | 366 | MalwareDomainList 367 | true 368 | https://www.malwaredomainlist.com 369 | https://www.malwaredomainlist.com/mdl.php?search=#DATA#&colsearch=All&quantity=50 370 | 371 | IP 372 | 373 | 374 | <td><nobr>(\d\d\d\d\/\d\d\/\d\d_\d\d:\d\d)<\/nobr><\/td><td>.*<\/td><td>\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b<\/td><td>.*?<\/td><td>.*?<\/td><td>.*?<\/td> 375 | <td><nobr>\d\d\d\d\/\d\d\/\d\d_\d\d:\d\d<\/nobr><\/td><td>.*<\/td><td>\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b<\/td><td>.*?<\/td><td>(.*?)<\/td><td>.*?<\/td> 376 | 377 | 378 | Date 379 | Malware 380 | 381 | 382 | 383 | GET 384 | 385 | 386 | false 387 | 388 | 389 | www.bfk.de 390 | true 391 | http://www.bfk.de/bfk_dnslogger_en.html 392 | http://www.bfk.de/bfk_dnslogger_en.html?query=#DATA# 393 | 394 | Domain 395 | IP 396 | 397 | 398 | 399 | <tr><td><tt><a href.*?>(?<Domain>.*?)<\/a><\/tt><\/td><td><tt>(?<Type>.*?)<\/tt><\/td><td><tt><a href.*?>(?<IP>.*?)<\/a><\/tt><\/td><\/tr> 400 | 401 | GET 402 | 403 | 404 | false 405 | 406 | 407 | AlienVault 408 | true 409 | https://www.alienvault.com/open-threat-exchange/dashboard#/my/reputation-monitor 410 | https://www.alienvault.com/apps/api/threat/ip/#DATA#?format=json 411 | 412 | IP 413 | 414 | 415 | "reputation_score":(\d), 416 | "activity_types":\[(.*?)\], 417 | "country_name":"(.*?)"}, 418 | "org_name":"(.*?)", 419 | 420 | 421 | Reputation Score 422 | Activity Types 423 | Country Name 424 | Org Name 425 | 426 | 427 | 428 | GET 429 | 430 | 431 | false 432 | 433 | 434 | Reputation Authority 435 | true 436 | http://www.reputationauthority.org 437 | http://www.reputationauthority.org/lookup.php?ip=#DATA#&ipvalid=&Submit.x=10&Submit.y=13&Submit=Search 438 | 439 | IP 440 | 441 | 442 | >(\d{1,2}\/\d{1,3}) 443 | 444 | 445 | Reputation Score 446 | 447 | 448 | 449 | GET 450 | 451 | 452 | false 453 | 454 | 455 | HpHosts 456 | true 457 | https://hosts-file.net 458 | https://hosts-file.net/?s=#DATA# 459 | 460 | Domain 461 | 462 | 463 | This\ssite\sis\scurrently\slisted 464 | 465 | 466 | 467 | 468 | 469 | 470 | GET 471 | 472 | 473 | false 474 | 475 | 476 | Google Safe Browsing 477 | true 478 | https://www.google.com/transparencyreport/safebrowsing/diagnostic/ 479 | https://safebrowsing.googleapis.com/v4/threatMatches:find?key=#GSB_API_KEY# 480 | 481 | IP 482 | Domain 483 | 484 | 485 | "threatType": "(.*?)" 486 | 487 | 488 | Threat Type 489 | 490 | 491 | 492 | POST 493 | { 494 | "client": { 495 | "clientId": "woanware", 496 | "clientVersion": "1.0.0" 497 | }, 498 | "threatInfo": { 499 | "threatTypes": ["THREAT_TYPE_UNSPECIFIED","MALWARE", "SOCIAL_ENGINEERING", "UNWANTED_SOFTWARE", "POTENTIALLY_HARMFUL_APPLICATION"], 500 | "platformTypes": ["ANY_PLATFORM"], 501 | "threatEntryTypes": ["URL"], 502 | "threatEntries": [{"url": "#DATA#"}] 503 | }} 504 | 505 | 506 | 507 | Content-Type 508 | application/json 509 | 510 | 511 | false 512 | 513 | 514 | --------------------------------------------------------------------------------