diff --git a/MSClient.cs b/MSClient.cs index 1069175..3b35a1f 100644 --- a/MSClient.cs +++ b/MSClient.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Specialized; @@ -358,6 +358,59 @@ public string CheckGUID(string guid) return $"Status for {guid}: {dynObj.status}"; } + + public string HashLookup(string hash) + { + string url = $@"https://malshare.com/api.php?api_key={key}&action=hashlookup"; + + string responseStr = String.Empty; + + using (WebClient wb = new WebClient()) + { + try + { + + var response = wb.UploadString(url, "POST", hash); + + var result = JsonConvert.DeserializeObject>(response); + + responseStr = $"MD5: {result[0].md5}/SHA1: {result[0].sha1}/SHA256: {result[0].sha256}"; + + + } + catch (WebException ex) + { + if (ex.Response != null) + { + WebResponse response = ex.Response; + Stream dataStream = response.GetResponseStream(); + StreamReader reader = new StreamReader(dataStream); + string details = reader.ReadToEnd(); + + if (details.Contains("error")) + { + dynamic dynObj = JsonConvert.DeserializeObject(details); + + return $"Error for API key {key}: {dynObj.error}"; + } + + return details; + } + } + catch + { + return $"Failed to retrieve data for {hash}. Perhaps it doesn't exist in the database."; + } + + return responseStr; + } + } } + public class Hashes + { + public string md5 { get; set; } + public string sha1 { get; set; } + public string sha256 { get; set; } + } } diff --git a/MalShare.NET.2.2.0.nupkg b/MalShare.NET.2.3.0.nupkg similarity index 55% rename from MalShare.NET.2.2.0.nupkg rename to MalShare.NET.2.3.0.nupkg index 2025f42..0242dea 100644 Binary files a/MalShare.NET.2.2.0.nupkg and b/MalShare.NET.2.3.0.nupkg differ diff --git a/MalShare.NET.dll b/MalShare.NET.dll index b9d176c..59d1a6f 100644 Binary files a/MalShare.NET.dll and b/MalShare.NET.dll differ diff --git a/README.md b/README.md index 4bdceb5..0e558a1 100644 --- a/README.md +++ b/README.md @@ -4,30 +4,31 @@ A .NET implementation of the MalShare API What's currently supported (https://malshare.com/doc.php): -
List hashes from the past 24 hours. -
List of sample sources from the past 24 hours. -
Get stored file details. -
List MD5/SHA1/SHA256 hashes of a specific type from the past 24 hours. -
Search sample hashes, sources and file names. -
Upload using FormData field "upload". -
Get list of file types & count from the past 24 hours. -
GET allocated number of API key requests per day and remaining. -
Download file. -
Perform URL download and add result to sample collection. -
Check status of download task via GUID. +1. List hashes from the past 24 hours. **Endpoint: "getlist"**. +2. List of sample sources from the past 24 hours. **Endpoint: "getsources".** +3. Get stored file details. **Endpoint: "details".** +4. List MD5/SHA1/SHA256 hashes of a specific type from the past 24 hours. **Endpoint: "type".** +5. Search sample hashes, sources and file names. **Endpoint: "search".** +6. Upload using FormData field "upload". **Endpoint: "upload".** +7. Get list of file types & count from the past 24 hours. **Endpoint: "gettypes".** +8. GET allocated number of API key requests per day and remaining. **Endpoint: "getlimit".** +9. Download file. **Endpoint: "getfile".** +10. Perform URL download and add result to sample collection. **Endpoint: "download_url".** +11. Check status of download task via GUID. **Endpoint: "download_url_check".** +12. **NEW in version 2.3**: Partial support for "Supply an array of hex-encoded hashes in a POST field named hashes". Right now you can supply **only 1 hash per call**, you **can't supply an array.** **Endpoint: "hashlookup".** How to install: You have 3 options: -1. Add reference to the .dll file in your project, you will need to add the NewtonSoft.Json dependency yourself +1. Add reference to the .dll file in your project, you will need to add the NewtonSoft.Json dependency **yourself** 2. Install the NuGet Package from nuget.org (https://www.nuget.org/packages/MalShare.NET) 3. Install the .nupkg file manually Dependencies: -1. Microsoft.CSharp (>= 4.6.0) -2. Newtonsoft.Json (>= 12.0.2) +1. Microsoft.CSharp (>= 4.7.0) +2. Newtonsoft.Json (>= 12.0.3) 3. NETStandard.Library (>= 2.0.3) How to use: -You can find usage examples here: https://pastebin.com/8n61zvas +You can find usage examples and explanations for each endpoint here: https://pastebin.com/8n61zvas