using System.Collections.Generic;
using System.Runtime.InteropServices;
public static void Main()
List<int> statii = new List<int> {401664, 397568, 393472, 266240, 262144, 262160, 266256, 393216, 393232, 393488, 397312, 397328, 397584};
foreach (var status in statii)
private static void Decode(int value)
string bin = Binary(value);
string reversed = Reverse(bin);
bool enabled = GetBit(reversed, 18);
bool scanning = GetBit(reversed, 12);
bool outdated = GetBit(reversed, 4);
Console.WriteLine("Status: " + value.ToString() + " [" + hex + " . " + bin + "] "
+ " Enabled: " + enabled.ToString().PadRight(5, ' ')
+ "; Scanning: " + scanning.ToString().PadRight(5, ' ')
+ "; Outdated: " + outdated.ToString().PadRight(5, ' ') + "");
private static string Binary(int value)
return Convert.ToString(value, 2).PadLeft(24, '0');
private static string Hex(int value)
return Convert.ToString(value, 16).PadLeft(6, '0');
private static string GetByte(string value, int index)
return value.Substring(index*2, 2);
private static bool GetBit(string value, int index)
return value.Substring(index, 1).Equals("1");
private static string Reverse(string value)
return new string(value.Reverse().ToArray());
public enum SignatureStatusFlags : byte {
public enum AVStatusFlags : byte {
public enum ProviderFlags : byte {
USER_ACCOUNT_CONTROL = 32,
[StructLayout(LayoutKind.Sequential)]
public struct ProviderStatus {
public SignatureStatusFlags SignatureStatus;
public AVStatusFlags AVStatus;
public ProviderFlags SecurityProvider;