[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/sinmygit/git/master/linux/agent_linux.cpp [Back]  [Original]

#include 
#include 
#include 
//#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 

#include 

#include 

#include 
#include 
#include 
//#pragma comment(lib, "ws2_32.lib")

#define VERSION                        "1.00"
#define TIMEOUT                        300
#define MAXSIZE                        20480
#define HOSTLEN                        40
#define CONNECTNUM                  5
#define INVALID_SOCKET                 -1
typedef unsigned int DWORD;
typedef unsigned int UINT;
//typedef socket_error SOCKET_ERROR;
// define 2 socket struct
typedef struct transocket 
{
     int fd1;
     int fd2;
} MYLPARAM, *PMYLPARAM;

// define function 

void usage(char *prog);
//void transmitdata(void *data);
void getctrlc(int j);
void closeallfd();
void makelog(char *buffer, int length);

void bind2conn(int port1, char *host, int port2);

int testifisvalue(char *str);
int create_socket();
int create_server(int sockfd, int port);
int client_connect(int sockfd, char* server, int port);
void * MyTransThread(void *lParam);
// define GLOBAL variable here
extern int errno;
FILE *fp;
int method=0;
//int connectnum=0;


int max(int a,int b)
{
     if(a>b)
          return a;
     else
          return b;
}

//************************************************************************************
// 
// function main
//
//************************************************************************************
int main(int argc, char* argv[])
{
     char **p;
     char sConnectHost[HOSTLEN], sTransmitHost[HOSTLEN];
     int iConnectPort=0, iTransmitPort=0;
     char *logfile=NULL;

     memset(sConnectHost, 0, HOSTLEN);
     memset(sTransmitHost, 0, HOSTLEN);

     p=argv;
     while(*p)
     {
           if(strcasecmp(*p, "-log") == 0)
           {
                 if(testifisvalue(*(p+1)))
                 {
                       logfile = *(++p);
                 }      
                 else
                 {
                       printf("[-] ERROR: Must supply logfile name.\r\n");
                       return -1;
                 }
                 p++;
                 continue;
           }
           
           p++;
     }

     if(logfile !=NULL)
     {
           fp=fopen(logfile,"a");
           if(fp == NULL ) 
           {
                 printf("[-] ERROR: open logfile");
                 return -1;
           }

           makelog("====== Start ======\r\n", 22);
     }


     // Win Start Winsock.
     //WSADATA wsadata;
     //WSAStartup(MAKEWORD(1, 1), &wsadata);

     signal(SIGINT, &getctrlc);

     if(argc > 3)
     {
          
		 iConnectPort = atoi(argv[1]);
		 strncpy(sTransmitHost, argv[2], HOSTLEN);
		 iTransmitPort = atoi(argv[3]);
		 bind2conn(iConnectPort, sTransmitHost, iTransmitPort);

     }


      else usage(argv[0]);

     
     if(method)
     {
           closeallfd();
     }

     //WSACleanup();

     return 0;
}


void usage(char* prog) 
{      
     printf(" %Tran.exe    [-log logfile]\n\n");
     return;
}

int testifisvalue(char *str)
{
     if(str == NULL ) return(0);
     if(str[0]=='-') return(0);
     return(1);
}


void bind2conn(int port1, char *host, int port2)
{
     int sockfd,sockfd1,sockfd2;
     struct sockaddr_in remote;
     //int size;
     char buffer[1024];
     socklen_t cliaddr_len = sizeof(remote);

     //HANDLE hThread=NULL;
     pthread_t pthd;
     transocket sock;
     //DWORD dwThreadID;

     if (port1 > 65535 || port1 < 1)
     {
           printf("[-] ConnectPort invalid.\r\n");
           return;
     }

     if (port2 > 65535 || port2 < 1)
     {
           printf("[-] TransmitPort invalid.\r\n");
           return;
     }
     
     memset(buffer,0,1024);

     if((sockfd=create_socket()) == INVALID_SOCKET) return;

     if(create_server(sockfd, port1) == 0) 
     {
           close(sockfd);
           return;
     }
     
     //size=sizeof(struct sockaddr);
     while(1)
     {
           printf("[+] Waiting for Client ......\r\n");      
           if((sockfd1=accept(sockfd,(struct sockaddr *)&remote,&cliaddr_len))fd1;
     fd2 = ((PMYLPARAM)lParam)->fd2;

     memset(host1,0,20);
     memset(host2,0,20);
     memset(tmpbuf,0,100);

     structsize1=sizeof(struct sockaddr);
     structsize2=sizeof(struct sockaddr);
     
     if(getpeername(fd1,(struct sockaddr *)&client1,&structsize1)

Web Proxy Viewer  |  New URL  |  Original Page