• netcat源代码分析(4)doexec.c文件中的SessionWriteShellThreadFn ()函数


    // **********************************************************************
    // SessionWriteShellThreadFn
    //
    // The write thread procedure. Reads from socket, writes to pipe connected
    // to shell process.  


    static VOID
    SessionWriteShellThreadFn(
        LPVOID Parameter
        )
    {
        PSESSION_DATA Session = Parameter;
        BYTE    RecvBuffer[1];
        BYTE    Buffer[BUFFER_SIZE];
        DWORD   BytesWritten;
        DWORD   BufferCnt;

        BufferCnt = 0;

        //
        // Loop, reading one byte at a time from the socket.    
        //
        while (recv(Session->ClientSocket, RecvBuffer, sizeof(RecvBuffer), 0) != 0) {

            Buffer[BufferCnt++] = RecvBuffer[0];
            if (RecvBuffer[0] == '\r')
                    Buffer[BufferCnt++] = '\n';


            // Trap exit as it causes problems
            if (strnicmp(Buffer, "exit\r\n", 6) == 0)        //注意,如果接受到exit回车,则结束。
                ExitThread(0);


            //
            // If we got a CR, it's time to send what we've buffered up down to the
            // shell process.
            // SECURITY FIX: CW 12/27/04 Add BufferCnt size check.  If we hit end of buffer, flush it
            if (RecvBuffer[0] == '\n' || RecvBuffer[0] == '\r' || BufferCnt > BUFFER_SIZE-1) {
                if (! WriteFile(Session->WritePipeHandle, Buffer, BufferCnt,
                                &BytesWritten, NULL))
                {
                    break;
                }
                BufferCnt = 0;
            }
        }

        ExitThread(0);
    }

  • 相关阅读:
    运算优先级
    (5).plus(3).minus(2);
    画图
    函数的三种角色
    表格排序
    正则表达式
    call apply
    css文本属性和边框属性
    css颜色/字体/背景属性
    css选择器优先级及继承
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3037473.html
Copyright © 2020-2023  润新知