Exemple #1
0
        public static void Main(string[] args)
        {
            if (IsSingleInstance())
            {
                StringArgument silentArg  = new StringArgument("quiet", "Hide application window", "Run application in background");
                StringArgument logFileArg = new StringArgument("log", "Log File", "Path to log file");
                StringArgument verbArg    = new StringArgument("verbose", "Verbose level", "3 - Debug\r\n2 - Normal\r\n1 - Error");
                ArgumentParser argParser  = new ArgumentParser("Vinisandbox", "Analyze static and dynamically file");
                argParser.Add("\\", "quiet", silentArg);
                argParser.Add("\\", "log", logFileArg);
                argParser.Add("\\", "verbose", verbArg);

                LogManager.VerboseLevel = LogManager.EVerboseLevel.Normal;

                try
                {
                    if (args.Contains("\\quiet"))
                    {
                        var aux = args.ToList();
                        aux.Remove("\\quiet");
                        args = aux.ToArray();
                        HideWindow();
                    }
                    argParser.Parse(args);
                    if (argParser.HelpMode)
                    {
                        argParser.WriteLongArgumentsUsage();
                        Console.Read();
                        return;
                    }
                    if (logFileArg.Defined)
                    {
                        LogManager.LogPath = (string)logFileArg.ObjectValue;
                        try
                        {
                            if (!File.Exists(LogManager.LogPath))
                            {
                                File.Create(LogManager.LogPath).Close();
                            }
                        }
                        catch (Exception)
                        {
                            LogManager.WriteLine("Invalid Log File", LogManager.EVerboseLevel.Error);
                            argParser.WriteShortArgumentsUsage();
                            Console.Read();
                            return;
                        }
                    }
                    if (verbArg.Defined)
                    {
                        try
                        {
                            LogManager.VerboseLevel = (LogManager.EVerboseLevel)Enum.ToObject(typeof(LogManager.EVerboseLevel), Convert.ToInt32((string)verbArg.ObjectValue));
                        }
                        catch (Exception)
                        {
                            LogManager.WriteLine("Invalid Verbose level", LogManager.EVerboseLevel.Error);
                            argParser.WriteShortArgumentsUsage();
                            Console.Read();
                            return;
                        }
                    }
                    LogManager.WriteLine("Arguments Parsed", LogManager.EVerboseLevel.Debug);
                }
                catch (Exception)
                {
                }

                vinisandboxContext cx = null;
                try
                {
                    cx = new vinisandboxContext();
                    LogManager.WriteLine("DbContext created", LogManager.EVerboseLevel.Debug);
                }
                catch (Exception ex)
                {
                    LogManager.WriteLine("Error on create DbContext: " + ex.ToString(), LogManager.EVerboseLevel.Error);
                    return;
                }
                //cx.Configuration.ProxyCreationEnabled = true;
                //cx.Configuration.LazyLoadingEnabled = true;
                Configuration config = null;
                try
                {
                    config = LoadConfiguration();
                    LogManager.WriteLine("Configuration Loaded", LogManager.EVerboseLevel.Debug);
                }
                catch (Exception ex)
                {
                    LogManager.WriteLine("Error on load configurations:" + ex.ToString(), LogManager.EVerboseLevel.Error);
                    return;
                }

                Sandbox sandbox = null;
                try
                {
                    sandbox = new Sandbox(config);
                    LogManager.WriteLine("Sandbox instanciated", LogManager.EVerboseLevel.Debug);
                }
                catch (Exception ex)
                {
                    LogManager.WriteLine("Error on instanciate Sandbox: " + ex.ToString(), LogManager.EVerboseLevel.Error);
                    return;
                }

                try
                {
                    DirectoryInfo di = new DirectoryInfo(config.TempFolder);
                    di.Create();
                    LogManager.WriteLine("Temporary directory created", LogManager.EVerboseLevel.Debug);
                }
                catch (Exception ex)
                {
                    LogManager.WriteLine("Error on create temporary directory: " + ex.ToString(), LogManager.EVerboseLevel.Error);
                    return;
                }

                /*string pat = @"C:\Users\Vinicius\Downloads\sed-4.2.1-setup.exe";
                 * file_detail fd = new file_detail();
                 * fd.data = File.ReadAllBytes(pat);
                 * fd.files = new List<file>();
                 * fd.files.Add(new file() { name = "sed-4.2.1-setup.exe" });
                 * cx.file_detail.Add(fd);
                 * cx.SaveChanges();*/

                LogManager.WriteLine("Waiting for files", LogManager.EVerboseLevel.Normal);
                while (true)
                {
                    foreach (var file_det in cx.file_detail.Where(p => !p.analyzed.HasValue || !p.analyzed.Value).Include("files").ToList())
                    {
                        sandbox.Analyze(file_det);

                        /*foreach (var file in file_det.files)
                         * {
                         *  file.analyzed = true;
                         * }*/
                        file_det.analyzed = true;
                        try
                        {
                            cx.SaveChanges();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
                    }
                    Thread.Sleep(config.CheckFrequence);
                }
            }
            else
            {
                Console.WriteLine("Ja existe outra instancia do programa rodando.");
            }
        }
Exemple #2
0
        //private static bool checkFile(string path)
        //{
        //    return File.Exists(path);
        //}

        public static void Main(string[] args)
        {
            if (IsSingleInstance())
            {
                StringArgument silentArg  = new StringArgument("quiet", "Hide application window", "Run application in background");
                StringArgument logFileArg = new StringArgument("log", "Log File", "Path to log file");
                StringArgument verbArg    = new StringArgument("verbose", "Verbose level", "3 - Debug\r\n2 - Normal\r\n1 - Error");
                ArgumentParser argParser  = new ArgumentParser("Vinisandbox", "Analyze static and dynamically file");
                argParser.Add("\\", "\\quiet", silentArg);
                argParser.Add("\\", "\\log", logFileArg);
                argParser.Add("\\", "\\v", verbArg);

                LogManager.VerboseLevel = LogManager.EVerboseLevel.Normal;

                try
                {
                    argParser.Parse(args);

                    if (silentArg.Defined)
                    {
                        HideWindow();
                    }
                    if (logFileArg.Defined)
                    {
                        LogManager.LogPath = (string)logFileArg.ObjectValue;
                        try
                        {
                            File.Create(LogManager.LogPath);
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Invalid Log File");
                            argParser.WriteShortArgumentsUsage();
                            Console.Read();
                            return;
                        }
                    }
                    if (verbArg.Defined)
                    {
                        try
                        {
                            LogManager.VerboseLevel = (LogManager.EVerboseLevel)Enum.ToObject(typeof(LogManager.EVerboseLevel), (string)verbArg.ObjectValue);
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Invalid Verbose level");
                            argParser.WriteShortArgumentsUsage();
                            Console.Read();
                            return;
                        }
                    }
                }
                catch (Exception)
                {
                }

                vinisandboxContext cx = new vinisandboxContext();
                cx.Configuration.ProxyCreationEnabled = true;
                cx.Configuration.LazyLoadingEnabled   = true;


                Configuration config  = LoadConfiguration();
                Sandbox       sandbox = new Sandbox(config);

                DirectoryInfo di = new DirectoryInfo(config.TempFolder);
                di.Create();

                /*string pat = @"C:\Users\Vinicius\Downloads\sed-4.2.1-setup.exe";
                 * file_detail fd = new file_detail();
                 * fd.data = File.ReadAllBytes(pat);
                 * fd.files = new List<file>();
                 * fd.files.Add(new file() { name = "sed-4.2.1-setup.exe" });
                 * cx.file_detail.Add(fd);
                 * cx.SaveChanges();*/
                while (true)
                {
                    foreach (var file_det in cx.file_detail.Where(p => p.files.Count(j => j.analyzed == false) > 0).Include("files").ToList())
                    {
                        sandbox.Analyze(file_det);
                        foreach (var file in file_det.files)
                        {
                            file.analyzed = true;
                        }
                        try
                        {
                            cx.SaveChanges();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
                    }
                    Thread.Sleep(10000);
                }
            }
            else
            {
                Console.WriteLine("Ja existe outra instancia do programa rodando.");
            }
            //if (args.Length != 1)
            //{
            //    //Erro
            //    Console.WriteLine("Parametros errados.");
            //    return;
            //}
            //if (!checkFile(args[0]))
            //{
            //    Console.WriteLine(args[0] + " não foi encontrado.");
            //    return;
            //}
            //if (IsSingleInstance())
            //{
            //    StartServer();
            //    Sandbox s = new Sandbox(LoadConfiguration());
            //    listMutex.WaitOne();
            //    files.Add(args[0]);
            //    while (files.Count != 0)
            //    {
            //        listMutex.ReleaseMutex();
            //        s.Analyze(files[0]);
            //        files.RemoveAt(0);
            //        //faz analise
            //        listMutex.WaitOne();
            //    }
            //    ServerRunning = false;
            //    programMutex.Close();
            //}
            //else
            //{
            //    SendPath(args[0]);
            //}
        }