zoukankan      html  css  js  c++  java
  • 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);
    }

  • 相关阅读:
    Navicat工具破解
    ios7开发者必知
    浏览器工作原理
    Lettcode_104_Maximum Depth of Binary Tree
    LeetCode:Balanced Binary Tree
    error: openssl/md5.h: No such file or directory
    欢迎来到Swift天地(Welcome to Swift)
    最大子阵列和
    【Cocos2d-x Lua】数据库封装类型的操作
    python于lxml应用
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3037473.html
Copyright © 2011-2022 走看看