|
|
1.1 root 1: #define VERSION 4
2: #define REMOTE_SERVER 1
3: #define REMOTE_CLIENT 2
4:
5: #define SERVER_READ_PIPE "\\\\%s\\PIPE\\%sIN" //Client Writes and Server Reads
6: #define SERVER_WRITE_PIPE "\\\\%s\\PIPE\\%sOUT" //Server Reads and Client Writes
7:
8: #define COMMANDCHAR '@' //Commands intended for remote begins with this
9: #define CTRLC 3
10:
11: #define CLIENT_ATTR FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED|BACKGROUND_BLUE
12: #define SERVER_ATTR FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_RED
13:
14: //
15: //Some General purpose Macros
16: //
17: #define MINIMUM(x,y) ((x)>(y)?(y):(x))
18: #define MAXIMUM(x,y) ((x)>(y)?(x):(y))
19:
20: #define ERRORMSSG(str) printf("Error %d - %s [%s %d]\n",GetLastError(),str,__FILE__,__LINE__)
21: #define SAFECLOSEHANDLE(x) {if (x!=INVALID_HANDLE_VALUE) {CloseHandle(x);x=INVALID_HANDLE_VALUE;}}
22:
23:
24: // All because printf does not work
25: // with NT IO redirection
26: //
27:
28: #define WRITEF(VArgs) { \
29: HANDLE xh=GetStdHandle(STD_OUTPUT_HANDLE); \
30: char VBuff[256]; \
31: DWORD tmp; \
32: sprintf VArgs; \
33: WriteFile(xh,VBuff,strlen(VBuff),&tmp,NULL); \
34: } \
35:
36: #define HOSTNAMELEN 16
37:
38: #define CHARS_PER_LINE 45
39:
40: #define MAGICNUMBER 0x31109000
41: #define BEGINMARK '\xfe'
42: #define ENDMARK '\xff'
43: #define LINESTOSEND 200
44:
45: #define MAX_SESSION 10
46:
47: typedef struct
48: {
49: DWORD Size;
50: DWORD Version;
51: char ClientName[15];
52: DWORD LinesToSend;
53: DWORD Flag;
54: } SESSION_STARTUPINFO;
55:
56: typedef struct
57: {
58: DWORD MagicNumber; //New Remote
59: DWORD Size; //Size of structure
60: DWORD FileSize; //Num bytes sent
61: } SESSION_STARTREPLY;
62:
63: typedef struct
64: {
65: char Name[HOSTNAMELEN]; //Name of client Machine;
66: BOOL Active; //Client at the other end connected
67: BOOL CommandRcvd; //True if a command recieved
68: BOOL SendOutput; //True if Sendoutput output
69: HANDLE PipeReadH; //Client sends its StdIn through this
70: HANDLE PipeWriteH; //Client gets its StdOut through this
71: HANDLE rSaveFile; //Sessions read handle to SaveFile
72: HANDLE hThread; //Session Thread
73: HANDLE MoreData; //Event handle set if data available to be read
74: } SESSION_TYPE;
75:
76:
77:
78: VOID
79: Server(
80: char* ChildCmd,
81: char* PipeName
82: );
83:
84:
85: VOID
86: Client(
87: char* ServerName,
88: char* PipeName
89: );
90:
91: VOID
92: ErrorExit(
93: char* str
94: );
95:
96: VOID
97: DisplayClientHlp(
98: );
99:
100: VOID
101: DisplayServerHlp(
102: );
103:
104: ULONG
105: DbgPrint(
106: PCH Format,
107: ...
108: );
109:
110: DWORD
111: ReadFixBytes(
112: HANDLE hRead,
113: char *Buffer,
114: DWORD ToRead,
115: DWORD TimeOut //ignore for timebeing
116: );
117:
118: VOID
119: Errormsg(
120: char* str
121: );
122:
123:
124: extern char HostName[HOSTNAMELEN];
125: extern char* ChildCmd;
126: extern char* PipeName;
127: extern char* ServerName;
128: extern HANDLE MyOutHandle;
129: extern DWORD LinesToSend;
130: extern BOOL IsAdvertise;
131: extern DWORD ClientToServerFlag;
1.1.1.2 ! root 132: extern char* UserName;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.