Example #1
0
        public static void sendInfo(object x)
        {
            Message mess = new Message();

            mess.messageType = 4; //тип сообщения
            mess.key         = (string)x;
            mess.screenSize  = new Size(0, 0);
            MemoryStream mem = new MemoryStream();

            bin.Serialize(mem, mess);
            bytes = mem.ToArray();
            Console.WriteLine("Send  to client " + bytes.Length);
            try
            {
                Send(handler, bytes);
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine(e.ToString()); //buffer — null.
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.ToString()); //Произошла ошибка при попытке доступа к сокету.
            }
            catch (ObjectDisposedException e)
            {
                Console.WriteLine(e.ToString()); //Socket был закрыт.
            }
        }
Example #2
0
        public static void sendFiles(object x)
        {
            Message mess = new Message();

            mess.messageType = 11;          //тип сообщения
            mess.info        = (string[])x; //запишем список файлов суда, чтобы не создавать новый атрибут
            mess.screenSize  = new Size(0, 0);
            MemoryStream mem = new MemoryStream();

            bin.Serialize(mem, mess);
            bytes = mem.ToArray();
            Console.WriteLine("Send  to client " + bytes.Length);
            try
            {
                Send(handler, bytes);
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine(e.ToString()); //buffer — null.
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.ToString()); //Произошла ошибка при попытке доступа к сокету.
            }
            catch (ObjectDisposedException e)
            {
                Console.WriteLine(e.ToString()); //Socket был закрыт.
            }
        }
Example #3
0
        public static void sendScreenShot(int index)
        {
            Message mess = new Message();

            data             = GetScreenShot(); //получили скриншот в байтах
            mess.bytes       = data;            //записали в обьект
            mess.index       = index;
            mess.messageType = 0;               //тип сообщения
            mess.screenSize  = new Size(0, 0);
            MemoryStream mem = new MemoryStream();

            bin.Serialize(mem, mess);
            bytes = mem.ToArray();
            Console.WriteLine("Send  to client " + bytes.Length);
            try
            {
                Send(handler, bytes);
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine(e.ToString()); //buffer — null.
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.ToString()); //Произошла ошибка при попытке доступа к сокету.
            }
            catch (ObjectDisposedException e)
            {
                Console.WriteLine(e.ToString()); //Socket был закрыт.
            }
        }
Example #4
0
        public static void sendInfo()
        {
            Message mess = new Message();

            mess.messageType = 5; //тип сообщения
            mess.screenSize  = new Size(0, 0);
            mess.info        = new string[5];
            TryLocate();
            mess.info[0] = getIP();
            mess.info[1] = getUser();
            mess.info[2] = GeoInfo.Country;
            mess.info[3] = getOS();
            mess.info[4] = "user";
            MemoryStream mem = new MemoryStream();

            bin.Serialize(mem, mess);
            bytes = mem.ToArray();
            Console.WriteLine("Send  to client " + bytes.Length);
            try
            {
                Send(handler, bytes);
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine(e.ToString()); //buffer — null.
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.ToString()); //Произошла ошибка при попытке доступа к сокету.
            }
            catch (ObjectDisposedException e)
            {
                Console.WriteLine(e.ToString()); //Socket был закрыт.
            }
        }
Example #5
0
        public void sendGetLocDir()
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.screenSize  = new Size(0, 0);
            mes.messageType = 9;
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            Send(sender, bytes);
        }
Example #6
0
        public static void requestRermission()
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.screenSize  = new Size(0, 0);
            mes.messageType = 18;
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            Send(sender, bytes);
        }
Example #7
0
        public static void sendMessage(string s)
        {
            Message mess = new Message();

            mess.messageType = 15; //тип сообщения
            mess.key         = s;
            mess.screenSize  = new Size(0, 0);
            MemoryStream mem = new MemoryStream();

            bin.Serialize(mem, mess);
            bytes = mem.ToArray();
            Console.WriteLine("Send  to client " + bytes.Length);
            Send(handler, bytes);
        }
Example #8
0
        public void Receive(Message message)
        {
            Console.WriteLine($"Receive {message.messageType} {message.index}");

            switch (message.messageType)
            {
            case 0:
                mes = message;
                break;

            case 1:
                break;

            case 2:
                break;

            case 3:
                Shell.change_text(message.key + "\n");
                break;

            case 4:
                SystemInformation.change_text(message.key + "\n");
                break;

            case 5:
                Console.WriteLine("Message 5");
                break;

            case 6:
                var test = new TaskManager();
                test.addInformation(message.proc);

                break;

            case 15:
                if (message.key != "Okey.")
                {
                    MessageBox.Show(message.key);
                }
                else if (message.key == "Okey.")
                {
                    show = true;
                }
                break;
            }

            onMainMessage?.Invoke(message);
            onMessage?.Invoke(message);
            onFrmMessage?.Invoke(message);
        }
Example #9
0
        public static void sendDeleteFile(string delete, int i)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.screenSize  = new Size(0, 0);
            mes.messageType = 15;
            mes.key         = i + delete; //опять путь до файла запишем суда, чтобы не создавать новый атрибут
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            Send(sender, bytes);
        }
Example #10
0
        public static void sendExecute2(Point p, Size size)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.cursor      = p;  //положение курсора
            mes.screenSize  = size;
            mes.messageType = 12; //тип собщения - нажатие левой кнопки мыши
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            Send(sender, bytes);
        }
Example #11
0
        public static void sendCreateFile(string path)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.screenSize  = new Size(0, 0);
            mes.messageType = 17;
            mes.key         = path;
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            Send(sender, bytes);
        }
Example #12
0
        public static void sendGetSubdirAndFiles(string fpath)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.screenSize  = new Size(0, 0);
            mes.messageType = 10;
            mes.key         = fpath; //опять путь до файла запишем суда, чтобы не создавать новый атрибут
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            Send(sender, bytes);
        }
Example #13
0
        public static void sendGetInfo()
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.screenSize  = new Size(0, 0);
            mes.messageType = 4; //тип собщения
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            if (sender != null)
            {
                Send(sender, bytes);
            }
        }
Example #14
0
        internal static void sendPosCursur(Point p, Size size)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();
            //p = GetCursorPosition();
            var mes = new Message();

            mes.messageType = 1;
            mes.cursor      = p; //положение курсора
            mes.screenSize  = size;
            bin.Serialize(mem, mes);
            byte[] bytes = new Byte[10000000];
            bytes = mem.ToArray();
            if (sender != null)
            {
                Send(sender, bytes);
            }
        }
Example #15
0
        public static void sendPressKey(string key)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.key         = key;
            mes.screenSize  = new Size(0, 0);
            mes.messageType = 1; //тип собщения - команада нажатия клавиши
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            if (sender != null)
            {
                Send(sender, bytes);
            }
        }
Example #16
0
        public static void sendCmd(string cmd)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.key         = cmd; //!!!чтобы не создавать новый атрибут, запишем команду в  key
            mes.screenSize  = new Size(0, 0);
            mes.messageType = 3;   //тип собщения
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            if (sender != null)
            {
                Send(sender, bytes);
            }
        }
Example #17
0
        public static void sendProcess()
        {
            Message mess = new Message();

            mess.messageType = 6; //тип сообщения
            mess.screenSize  = new Size(0, 0);
            int len = System.Diagnostics.Process.GetProcesses().Length;

            mess.proc = new string[len, 2];
            int i = 0;

            foreach (System.Diagnostics.Process winProc in System.Diagnostics.Process.GetProcesses())
            {
                mess.proc[i, 0] = winProc.Id.ToString();
                mess.proc[i, 1] = winProc.ProcessName;
                i++;
            }

            MemoryStream mem = new MemoryStream();

            bin.Serialize(mem, mess);
            bytes = mem.ToArray();
            Console.WriteLine("Send  to client " + bytes.Length);
            try
            {
                Send(handler, bytes);
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine(e.ToString()); //buffer — null.
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.ToString()); //Произошла ошибка при попытке доступа к сокету.
            }
            catch (ObjectDisposedException e)
            {
                Console.WriteLine(e.ToString()); //Socket был закрыт.
            }
        }
        public void onMessage(Message message)
        {
            switch (message.messageType)
            {
            case 9:
                addLocDir(message.info);
                break;

            case 10:
                listView1.Invoke((MethodInvoker) delegate
                {
                    this.listView1.Items.Clear();
                });
                addSubdir(message.info);
                addFiles(message.files);
                Thread.Sleep(200);
                break;

            case 13:
                uploadFile(message.bytes);
                break;
            }
        }
Example #19
0
        public static void sendFile(string file, byte[] b, string dir)
        {
            BinaryFormatter bin = new BinaryFormatter();
            MemoryStream    mem = new MemoryStream();

            byte[] bytes = new Byte[10000000];
            var    mes   = new Message();

            mes.screenSize  = new Size(0, 0);
            mes.messageType = 14;
            if (dir[dir.Length - 1] != '\\')
            {
                mes.key = dir + "\\" + file; //опять путь до файла запишем суда, чтобы не создавать новый атрибут
            }
            else
            {
                mes.key = dir + file;
            }
            mes.bytes = b;
            bin.Serialize(mem, mes);
            bytes = mem.ToArray();
            Send(sender, bytes);
        }
Example #20
0
        private static void ReceiveCallback(IAsyncResult ar)
        {
            try
            {
                // Retrieve the state object and the client socket
                // from the asynchronous state object.
                StateObject state  = (StateObject)ar.AsyncState;
                Socket      client = state.workSocket;
                // Read data from the remote device.
                int bytesRead = client.EndReceive(ar);
                if (bytesRead > 0)
                {
                    // There might be more data, so store the data received so far.
                    state.stream.Write(state.buffer, 0, bytesRead);
                    //  state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));
                    // Get the rest of the data.
                    try
                    {
                        Console.WriteLine($"Receive bytes {state.stream.Length}");
                        state.stream.Seek(0, 0); //переместили указатель на начало потока
                        var bin = new BinaryFormatter();

                        var deserialize = bin.Deserialize(state.stream);
                        var mess        = (Message)deserialize;
                        Receive(mess);
                        state.stream = new MemoryStream();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        if (e.ToString() == "Удаленный хост принудительно разорвал существующее подключение")
                        {
                            handler.Shutdown(SocketShutdown.Both);
                            handler.Close();
                            Listening(port, localEndPoint, ipAddress);
                            Console.WriteLine("Удаленный хост принудительно разорвал существующее подключение");
                            return;
                        }
                    }

                    client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                                        new AsyncCallback(ReceiveCallback), state);
                }
                else
                {
                    // All the data has arrived; put it in response.
                    if (state.stream.Length > 1)
                    {
                        //    response = Encoding.ASCII.GetBytes(state.sb.ToString());
                    }
                    // Signal that all bytes have been received.
                    receiveDone.Set();

                    //TODO
                    state.stream.Seek(0, 0); //переместили указатель на начало потока
                    var deserialize = bin.Deserialize(state.stream);

                    mess = (Message)deserialize;
                    Receive(mess);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                string s = "Удаленный хост принудительно разорвал существующее подключение";
                if (String.Equals(e.ToString(), s))
                {
                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                    Listening(port, localEndPoint, ipAddress);
                    Console.WriteLine("Удаленный хост принудительно разорвал существующее подключение");
                    return;
                }
            }
        }
Example #21
0
        private static void Receive(Message mess)
        {
            Console.WriteLine("Recive Message " + mess.messageType);
            //проверяем какое сообщение пришло от клиента

            /*
             *  if (mess.messageType == 1) //если положение курсора, то меняем позицию курсора на экране
             *  {
             *      var remotePosition = mess.cursor;
             *      var remoteRemoteSize = mess.screenSize;
             *      Console.WriteLine("Receive Cursor " + remotePosition.X + " " + remotePosition.Y);
             *      //var cursorPostition = new Point(cursor.X-5,cursor.Y-5);
             *
             *      var virtualScreenSize = SystemInformation.VirtualScreen.Size;
             *      var localX = (remotePosition.X * virtualScreenSize.Width / remoteRemoteSize.Width);
             *      var localY = (remotePosition.Y * virtualScreenSize.Height / remoteRemoteSize.Height);
             *      Cursor.Position = new Point(localX, localY);
             *      mess.messageType = -1;
             *  }*/
            if (mess.messageType == 1)
            {
                if (currentUser.rights[2])
                {
                    var Key = mess.key;
                    Console.WriteLine("Receive PresKey " + Key);
                    SendKeys.SendWait(Key);
                    mess.messageType = -1;
                }
                else
                {
                    sendMessage("Нет разрешения на запись в файлы.");
                }
            }
            if (mess.messageType == 2) //если команда запуска файла, то делаем двойной щелчок мыши
            {
                if (currentUser.rights[1])
                {
                    var remotePosition   = mess.cursor;
                    var remoteRemoteSize = mess.screenSize;
                    Console.WriteLine("Receive Cursor " + remotePosition.X + " " + remotePosition.Y);
                    var virtualScreenSize = SystemInformation.VirtualScreen.Size;
                    var localX            = (remotePosition.X * virtualScreenSize.Width / remoteRemoteSize.Width);
                    var localY            = (remotePosition.Y * virtualScreenSize.Height / remoteRemoteSize.Height);
                    Cursor.Position = new Point(localX, localY);
                    Point p = GetCursorPosition();
                    Console.WriteLine(p.X + ";" + p.Y);
                    pressMouse(p);
                    mess.messageType = -1;
                }
                else
                {
                    sendMessage("Нет разрешения на запуск файлов.");
                }
            }
            if (mess.messageType == 3)
            {
                if (currentUser.rights[4])
                {
                    Console.WriteLine("Receive cmd " + mess.key);
                    Process proc = new Process()
                    {
                        StartInfo = new ProcessStartInfo("cmd.exe", mess.key)
                        {
                            RedirectStandardOutput = true,
                            UseShellExecute        = false,
                            CreateNoWindow         = true,
                            WindowStyle            = ProcessWindowStyle.Hidden
                        }
                    };

                    proc.Start();

                    if (!proc.StartInfo.RedirectStandardOutput)
                    {
                        return;
                    }

                    string       line = "", output = mess.key + "\n";
                    StreamReader sr = proc.StandardOutput;
                    while (!sr.EndOfStream)
                    {
                        line    = sr.ReadLine();
                        output += line + "\n";
                    }
                    Thread myThread = new Thread(new ParameterizedThreadStart(sendOutput)); //Создаем новый объект потока (Thread)
                    myThread.Start(output);
                }
                else
                {
                    sendMessage("Нет разрешения на вызов командной строки.");
                }
            }
            if (mess.messageType == 4) //если - 4, то собираем системную информацию и отправляем её.
            {
                if (currentUser.rights[3])
                {
                    string info = getSystemInfo();
                    info += getNextSystemInfo();
                    Thread myThread = new Thread(new ParameterizedThreadStart(sendInfo)); //Создаем новый объект потока (Thread)
                    myThread.Start(info);
                    mess.messageType = -1;
                }
                else
                {
                    sendMessage("Нет разрешения на получение системной информации.");
                }
            }
            if (mess.messageType == 5) //если - 5, то собираем системную информацию о процессах и отправляем её.
            {
                if (currentUser.rights[6])
                {
                    Thread myThread = new Thread(sendProcess);
                    myThread.Start();
                    mess.messageType = -1;
                }
                else
                {
                    sendMessage("Нет разрешения на получение информации об процессах.");
                }
            }
            if (mess.messageType == 7) //если - 7, то  убиваем процесс
            {
                Process p = Process.GetProcessById(int.Parse(mess.key));
                p.Kill();
                //оправляем обновленный список процессов
                Thread myThread = new Thread(sendProcess);
                myThread.Start();
                mess.messageType = -1;
            }
            if (mess.messageType == 8) //если - 8, то  показывем окно с присланным сообщением
            {
                if (currentUser.rights[7])
                {
                    if (mess.key != "")
                    {
                        MessageBox.Show(mess.key);
                    }
                    mess.messageType = -1;
                }
                else
                {
                    Thread.Sleep(10);
                    sendMessage("Нет разрешения отправлять сообщения.");
                }
            }
            if (mess.messageType == 9) //если - 9, то получаем список дисков и отправляем его
            {
                if (currentUser.rights[5])
                {
                    String[] LogicalDrives = Environment.GetLogicalDrives();
                    sendDir(LogicalDrives);
                    mess.messageType = -1;
                }
                else
                {
                    sendMessage("Нет доступа к файловому менеджеру.");
                }
            }
            if (mess.messageType == 10) //если - 10, то получаем список подкаталогов и файлов
            {
                string[] dirs  = Directory.GetDirectories(mess.key);
                string[] files = Directory.GetFiles(mess.key);
                sendSubdirAndFiles(dirs, files);
                mess.messageType = -1;
            }

            /*
             * if (mess.messageType == 11) //если - 11, то получаем список файлов текущем каталоге
             * {
             *  string[] files = Directory.GetFiles(mess.key);
             *  sendFiles(files); //Создаем новый объект потока (Thread)
             *  mess.messageType = -1;
             * }*/
            if (mess.messageType == 12) //если команда запуска файла, то делаем нажатие правой кнопки мыши
            {
                var remotePosition   = mess.cursor;
                var remoteRemoteSize = mess.screenSize;
                Console.WriteLine("Receive Cursor " + remotePosition.X + " " + remotePosition.Y);
                var virtualScreenSize = SystemInformation.VirtualScreen.Size;
                var localX            = (remotePosition.X * virtualScreenSize.Width / remoteRemoteSize.Width);
                var localY            = (remotePosition.Y * virtualScreenSize.Height / remoteRemoteSize.Height);
                Cursor.Position = new Point(localX, localY);
                Point p = GetCursorPosition();
                Console.WriteLine(p.X + ";" + p.Y);
                pressMouseRight(p);
                mess.messageType = -1;
            }
            if (mess.messageType == 13) //если - 13, то читаем байты из файла и отправляем
            {
                byte[] a = File.ReadAllBytes(mess.key);
                sendFile(a);
                mess.messageType = -1;
            }
            if (mess.messageType == 14) //если - 14, то создаем файл
            {
                File.WriteAllBytes(mess.key, mess.bytes);
                mess.messageType = -1;
            }
            if (mess.messageType == 15) //если - 15, то удаляем файл
            {
                string path       = mess.key.Remove(0, 1);
                int    ImageIndex = mess.key[0] - '0';
                if (ImageIndex == 1)
                {
                    Directory.Delete(path, true); //удалить дирректорию
                }
                else
                {
                    File.Delete(path); //удалить файл
                }
                mess.messageType = -1;
            }
            if (mess.messageType == 16) //если - 16, то создаем каталог
            {
                Directory.CreateDirectory(mess.key);
                mess.messageType = -1;
            }
            if (mess.messageType == 17) //если - 17, то создаем файл
            {
                File.Create(mess.key);
                mess.messageType = -1;
            }
            if (mess.messageType == 18)
            {
                if (currentUser.rights[0])
                {
                    sendMessage("Okey.");
                }
                else
                {
                    sendMessage("Нет доступа к отображению экрана рабочего стола.");
                }
            }
        }