Skip to content

Commit

Permalink
Merge pull request #7 from adrenaline96/master
Browse files Browse the repository at this point in the history
Version 2.3
  • Loading branch information
adrenaline96 authored Aug 15, 2020
2 parents 7e90516 + 66a8323 commit 0a62ef0
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 16 deletions.
55 changes: 54 additions & 1 deletion MSClient.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Newtonsoft.Json;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
Expand Down Expand Up @@ -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<List<Hashes>>(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; }
}
}
Binary file not shown.
Binary file modified MalShare.NET.dll
Binary file not shown.
31 changes: 16 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,31 @@ A .NET implementation of the MalShare API


What's currently supported (https://malshare.com/doc.php):
<br>List hashes from the past 24 hours.
<br>List of sample sources from the past 24 hours.
<br>Get stored file details.
<br>List MD5/SHA1/SHA256 hashes of a specific type from the past 24 hours.
<br>Search sample hashes, sources and file names.
<br>Upload using FormData field "upload".
<br>Get list of file types & count from the past 24 hours.
<br>GET allocated number of API key requests per day and remaining.
<br>Download file.
<br>Perform URL download and add result to sample collection.
<br>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

0 comments on commit 0a62ef0

Please sign in to comment.