Skip to content

Commit c71887d

Browse files
committed
clamav
1 parent e25fb59 commit c71887d

File tree

7 files changed

+53
-38
lines changed

7 files changed

+53
-38
lines changed

GrayHatCsharp.userprefs

+11-12
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
<Properties StartupConfiguration="{26A8091A-68C1-4636-931C-CB4538338572}|Default" GitUserInfo="UsingGIT">
22
<MonoDevelop.Ide.ItemProperties.ch14__reading__offline__hives PreferredExecutionTarget="MonoDevelop.Default" />
3-
<MonoDevelop.Ide.Workbench ActiveDocument="gray_hat_csharp_code Status">
3+
<MonoDevelop.Ide.Workbench ActiveDocument="ch10_automating_clamav/clam-sharp/ClamResult.cs">
44
<Files>
5-
<File FileName="README.md" Line="11" Column="77" />
6-
<File FileName="ch10_automating_clamav/Main.cs" Line="1" Column="1" />
7-
<File FileName="ch10_automating_clamav_clamd/Program.cs" Line="20" Column="1" />
8-
<File FileName="ch14_reading_offline_hives/Program.cs" Line="62" Column="34" />
9-
<File FileName="ch8_automating_cuckoo/Program.cs" Line="28" Column="6" />
10-
<File FileName="ch8_automating_cuckoo/cuckoo-sharp/CuckooSession.cs" Line="1" Column="1" />
11-
<File FileName="ch8_automating_cuckoo/cuckoo-sharp/FileTask.cs" Line="1" Column="1" />
12-
<File FileName="ch8_automating_cuckoo/cuckoo-sharp/Task.cs" Line="1" Column="1" />
13-
<File FileName="ch8_automating_cuckoo/cuckoo-sharp/TaskFactory.cs" Line="1" Column="1" />
14-
<File FileName="ch8_automating_cuckoo/cuckoo-sharp/CuckooManager.cs" Line="30" Column="18" />
15-
<File FileName="gray_hat_csharp_code Status" />
5+
<File FileName="ch4_connect_back_binds/Main.cs" Line="68" Column="2" />
6+
<File FileName="ch4_bind_udp/Program.cs" Line="20" Column="50" />
7+
<File FileName="ch7_automating_openvas/OpenVASSession.cs" Line="91" Column="5" />
8+
<File FileName="ch7_automating_openvas/Program.cs" Line="22" Column="16" />
9+
<File FileName="ch10_automating_clamav/clam-sharp/ClamResult.cs" Line="1" Column="1" />
10+
<File FileName="ch10_automating_clamav/clam-sharp/ClamEngineOptions.cs" Line="5" Column="9" />
11+
<File FileName="ch10_automating_clamav/clam-sharp/ClamEngine.cs" Line="1" Column="1" />
12+
<File FileName="ch10_automating_clamav/clam-sharp/ClamBindings.cs" Line="1" Column="1" />
13+
<File FileName="ch10_automating_clamav/clam-sharp/ClamScanOptions.cs" Line="5" Column="9" />
14+
<File FileName="ch10_automating_clamav/clam-sharp/ClamReturnCode.cs" Line="1" Column="1" />
1615
</Files>
1716
</MonoDevelop.Ide.Workbench>
1817
<MonoDevelop.Ide.ItemProperties.ch6__automating__nexpose PreferredExecutionTarget="MonoDevelop.Default" />

ch10_automating_clamav/clam-sharp/ClamBindings.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace ch13_automating_clamav_filesystem
55
{
6-
public static class ClamBindings
6+
static class ClamBindings
77
{
88
const string _clamLibPath = "/Users/bperry/tmp/clamav-0.99/libclamav/.libs/libclamav.7.dylib";
99

ch10_automating_clamav/clam-sharp/ClamEngine.cs

+34-22
Original file line numberDiff line numberDiff line change
@@ -15,38 +15,50 @@ public ClamEngine ()
1515
throw new Exception("Expected CL_SUCCESS, got " + ret);
1616

1717
engine = ClamBindings.cl_engine_new();
18-
19-
string dbDir = Marshal.PtrToStringAnsi(ClamBindings.cl_retdbdir());
20-
uint signo = 0;
21-
22-
ret = ClamBindings.cl_load(dbDir, engine, ref signo,(uint)ClamScanOptions.CL_SCAN_STDOPT);
23-
24-
if (ret != ClamReturnCode.CL_SUCCESS)
25-
throw new Exception("Expected CL_SUCCESS, got " + ret);
26-
27-
ret = (ClamReturnCode)ClamBindings.cl_engine_compile(engine);
28-
29-
if (ret != ClamReturnCode.CL_SUCCESS)
30-
throw new Exception("Expected CL_SUCCESS, got " + ret);
18+
19+
try
20+
{
21+
string dbDir = Marshal.PtrToStringAnsi(ClamBindings.cl_retdbdir());
22+
uint signo = 0;
23+
24+
ret = ClamBindings.cl_load(dbDir, engine, ref signo, (uint)ClamScanOptions.CL_SCAN_STDOPT);
25+
26+
if (ret != ClamReturnCode.CL_SUCCESS)
27+
throw new Exception("Expected CL_SUCCESS, got " + ret);
28+
29+
ret = (ClamReturnCode)ClamBindings.cl_engine_compile(engine);
30+
31+
if (ret != ClamReturnCode.CL_SUCCESS)
32+
throw new Exception("Expected CL_SUCCESS, got " + ret);
33+
}
34+
catch
35+
{
36+
ret = ClamBindings.cl_engine_free(engine);
37+
38+
if (ret != ClamReturnCode.CL_SUCCESS)
39+
Console.Error.WriteLine("Freeing allocated engine failed");
40+
}
3141
}
3242

3343
public ClamResult ScanFile(string filepath, uint options = (uint)ClamScanOptions.CL_SCAN_STDOPT)
3444
{
3545
ulong scanned = 0;
3646
IntPtr vname = (IntPtr)null;
3747
ClamReturnCode ret = ClamBindings.cl_scanfile(filepath, ref vname, ref scanned, engine, options);
38-
39-
if (ret == ClamReturnCode.CL_VIRUS) {
40-
string virus = Marshal.PtrToStringAnsi (vname);
41-
42-
ClamResult result = new ClamResult ();
48+
49+
if (ret == ClamReturnCode.CL_VIRUS)
50+
{
51+
string virus = Marshal.PtrToStringAnsi(vname);
52+
53+
ClamResult result = new ClamResult();
4354
result.ReturnCode = ret;
4455
result.VirusName = virus;
4556
result.FullPath = filepath;
46-
57+
4758
return result;
48-
} else if (ret == ClamReturnCode.CL_CLEAN)
49-
return null;
59+
}
60+
else if (ret == ClamReturnCode.CL_CLEAN)
61+
return new ClamResult() { ReturnCode = ret };
5062
else
5163
throw new Exception ("Expected either CL_CLEAN or CL_VIRUS, got: " + ret);
5264
}
@@ -56,7 +68,7 @@ public void Dispose()
5668
ClamReturnCode ret = ClamBindings.cl_engine_free(engine);
5769

5870
if (ret != ClamReturnCode.CL_SUCCESS)
59-
throw new Exception("Expected CL_SUCCESS, got " + ret);
71+
Console.Error.WriteLine("Freeing allocated engine failed");
6072
}
6173
}
6274
}

ch10_automating_clamav/clam-sharp/ClamEngineOptions.cs

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace ch13_automating_clamav_filesystem
44
{
5+
[Flags]
56
public enum ClamDatabaseOptions
67
{
78
CL_DB_PHISHING = 0x2,

ch10_automating_clamav/clam-sharp/ClamScanOptions.cs

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace ch13_automating_clamav_filesystem
44
{
5+
[Flags]
56
public enum ClamScanOptions
67
{
78
CL_SCAN_ARCHIVE = 0x1,

ch4_bind_udp/Program.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ static void Main(string[] args)
1515
string output;
1616
byte[] bytes;
1717

18-
using (Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Dgram,
19-
ProtocolType.Udp)) {
18+
using (Socket sock = new Socket (AddressFamily.InterNetwork,
19+
SocketType.Dgram,
20+
ProtocolType.Udp)) {
2021

2122
IPAddress addr = IPAddress.Parse (args [0]);
2223
IPEndPoint addrEP = new IPEndPoint (addr, lport);

ch7_automating_openvas/OpenVASSession.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ private void GetStream ()
9898
if (_stream == null || !_stream.CanRead) {
9999
TcpClient client = new TcpClient (this.ServerIPAddress.ToString (), this.ServerPort);
100100

101-
_stream = new SslStream (client.GetStream (), false, new RemoteCertificateValidationCallback (ValidateServerCertificate),
101+
_stream = new SslStream (client.GetStream (), false,
102+
new RemoteCertificateValidationCallback (ValidateServerCertificate),
102103
(sender, targetHost, localCertificates, remoteCertificate, acceptableIssuers) => null);
103104

104105
_stream.AuthenticateAsClient ("OpenVAS", null, SslProtocols.Tls, false);

0 commit comments

Comments
 (0)