86.八千万qq密码按相似度排序并统计密码出现次数,生成密码库
- 存储qq的文件地址以及按照密码相似度排序的文件地址
//存储qq的文件的地址
char path[] = "QQ.txt";
//按照密码相似度排序的文件地址
char pathsortbypass[] = "QQpasswordsort.txt"; - 标识qq一共有多少行
//文件一共有多少行
#define N 84331446 - 创建结构体存储密码,并把文件载入内存
//密码信息
struct info
{
char str[];
}; //指向所有结构体的指针
struct info *pall = NULL;//初始化
void init()
{
//记录时间
time_t start, end;
time(&start); pall = calloc(N, sizeof(struct info));//分配内存
if (pall==NULL)
{
puts("calloc fail");
return;
}
//打开文件
FILE *pf = fopen(path, "r"); //依次读取
for (int i = ; i <N; i++)
{
char str[] = { };
fgets(str, , pf);
char *pfind = strstr(str, "----");
//每行格式123----qweqe
if (pfind !=NULL)
{
int length = strlen(pfind + );
//刷掉非法密码
if (length<)
{
//拷贝字符串
strcpy(pall[i].str, pfind + );
}
}
}
//关闭文件
fclose(pf);
time(&end);
printf("文件读取话费%f秒\n", difftime(end, start));
} - 按照相似度快速排序
//快速排序比较函数,比较两个结构体
int com(void *p1, void *p2)
{
struct info *pinfo1 = p1;
struct info *pinfo2= p2;
return strcmp(pinfo1->str, pinfo2->str);//排序的函数
} //排序
void sort()
{
//记录时间
time_t start, end;
time(&start); //快速排序
qsort(pall, N, sizeof(struct info), com); time(&end);
printf("排序话费%f秒\n", difftime(end, start));
} - 写入文件
//写入文件
void writetofile()
{
//存储时间
time_t start, end;
//开始时间
time(&start);
//以写的方式打开文件
FILE *pf = fopen(pathsortbypass, "w");
//判断每一个
for (int i = ; i < N; i++)
{
//格式 5----pass
char allstr[] = { };
//存储密码
char istr[] = { };
strcpy(istr, pall[i].str);//拷贝备份 int j = ;//出现一次
//循环直到最后一个不相等
while (strcmp(pall[i].str,pall[i+].str)==)
{
i++;//循环前进
j++;//计数
}
//合成字符串写入
sprintf(allstr, "%d----%s", j, istr);
//写入到文件
fputs(allstr, pf);
} //关闭文件
fclose(pf); //结束
time(&end); printf("排序花费%f秒\n", difftime(end, start));
} - 获取文件有多少行
//获取文件有多少行
int getN(char *path)
{
int i = ;
FILE *pf = fopen(path, "r");
if (pf==NULL)
{
return -;
}
else
{
while (!feof(pf))
{
char str[] = { };
fgets(str, , pf);
i++;
} fclose(pf);
return i;
}
} - 主函数
//主函数
void main()
{
//初始化载入到内存
init();
//密码相似度排序
sort();
//写入文件
writetofile();
system("pause");
}
完整代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h> //存储qq的文件的地址
char path[] = "QQ.txt";
//按照密码相似度排序的文件地址
char pathsortbypass[] = "QQpasswordsort.txt";
//文件一共有多少行
#define N 84331446 //密码信息
struct info
{
char str[];
}; //指向所有结构体的指针
struct info *pall = NULL; //写入文件
void writetofile()
{
//存储时间
time_t start, end;
//开始时间
time(&start);
//以写的方式打开文件
FILE *pf = fopen(pathsortbypass, "w");
//判断每一个
for (int i = ; i < N; i++)
{
//格式 5----pass
char allstr[] = { };
//存储密码
char istr[] = { };
strcpy(istr, pall[i].str);//拷贝备份 int j = ;//出现一次
//循环直到最后一个不相等
while (strcmp(pall[i].str,pall[i+].str)==)
{
i++;//循环前进
j++;//计数
}
//合成字符串写入
sprintf(allstr, "%d----%s", j, istr);
//写入到文件
fputs(allstr, pf);
} //关闭文件
fclose(pf); //结束
time(&end); printf("排序花费%f秒\n", difftime(end, start));
} //快速排序比较函数,比较两个结构体
int com(void *p1, void *p2)
{
struct info *pinfo1 = p1;
struct info *pinfo2= p2;
return strcmp(pinfo1->str, pinfo2->str);//排序的函数
} //排序
void sort()
{
//记录时间
time_t start, end;
time(&start); //快速排序
qsort(pall, N, sizeof(struct info), com); time(&end);
printf("排序话费%f秒\n", difftime(end, start));
} //初始化
void init()
{
//记录时间
time_t start, end;
time(&start); pall = calloc(N, sizeof(struct info));//分配内存
if (pall==NULL)
{
puts("calloc fail");
return;
}
//打开文件
FILE *pf = fopen(path, "r"); //依次读取
for (int i = ; i <N; i++)
{
char str[] = { };
fgets(str, , pf);
char *pfind = strstr(str, "----");
//每行格式123----qweqe
if (pfind !=NULL)
{
int length = strlen(pfind + );
//刷掉非法密码
if (length<)
{
//拷贝字符串
strcpy(pall[i].str, pfind + );
}
}
}
//关闭文件
fclose(pf);
time(&end);
printf("文件读取话费%f秒\n", difftime(end, start));
} //获取文件有多少行
int getN(char *path)
{
int i = ;
FILE *pf = fopen(path, "r");
if (pf==NULL)
{
return -;
}
else
{
while (!feof(pf))
{
char str[] = { };
fgets(str, , pf);
i++;
} fclose(pf);
return i;
}
} //主函数
void main()
{
//初始化载入到内存
init();
//密码相似度排序
sort();
//写入文件
writetofile();
system("pause");
}
86.八千万qq密码按相似度排序并统计密码出现次数,生成密码库的更多相关文章
- 72.挖掘CSDN密码到链表并统计密码出现次数生成密码库
list.h #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include & ...
- Linux是对用户的密码的复杂度要求设置【转】
那么Linux是如何实现对用户的密码的复杂度的检查的呢?其实系统对密码的控制是有两部分组成: 1 cracklib 2 /etc/login.defs pam_cracklib.so 才是控制密码复杂 ...
- Linux下随机生成密码的命令总结
有时候经常为如何设置一个安全.符合密码复杂度的密码而绞尽脑汁,说实话,这实在是一个体力活而且浪费时间,更重要的是设置密码的时候经常纠结.终于有一天实在忍不住了,于是学习.整理了一下如何使用Linux下 ...
- five86-1 (OpenNetadmin RCE+cp命令提权+crunch生成密码字典)
Vulnhub-Five86-1 实验环境 kali攻击机ip:192.168.56.116 Five86-1靶机ip:192.168.56.121 知识点及工具 nmap扫描 john爆破 Open ...
- 忘记常访问网站密码怎么办?教你如何查看浏览器已保存的密码,如何简单查看Chome浏览器保存的密码?
利用场景: 同事或朋友外出有事,电脑未锁屏离开座位.可以利用这一间隙,查看Ta在Chrome浏览器上保存的账号密码 查看逻辑: 当我们要查看Chrome浏览器上保存的密码时,点击显示,会弹出一个对话框 ...
- 混合使用 ForkJoin, Akka, Future 实现一千万个不重复整数的排序
定位 本文适合于想要了解新语言 Scala 以及异步并发编程框架 Akka, Future 的筒鞋. 读完本文后,将了解如何使用 ForkJoin 框架.如何使用 Akka 构建并发程序.如何使用 ...
- MySQL忘记了密码登录不进去,用命令符修改新的密码重新登录的方法
MySQL忘记了密码登录不进去,用命令符修改新的密码重新登录的方法: 1.备份my.ini 2.在my.ini字段里 [mysqld] #socket=mysql skip-grant-tables ...
- 利用itertools生成密码字典,多线程撞库破解rar压缩文件密码
脚本功能: 利用itertools生成密码字典(迭代器形式) 多线程并发从密码字典中取出密码进行验证 验证成功后把密码写入文件中保存 #!/usr/bin/env python # -*- codin ...
- 混合使用ForkJoin+Actor+Future实现一千万个不重复整数的排序(Scala示例)
目标 实现一千万个不重复整数的排序,可以一次性加载到 2G 的内存里. 本文适合于想要了解新语言 Scala 并发异步编程框架 Akka, Future 的筒鞋. 读完本文后,将了解如何综 ...
随机推荐
- Linux下Rootkit的另类检测
Linux下Rootkit的另类检测 当黑客获取管理员权限时,首先是抹掉入侵系统的相关记录,并且隐藏自己的行踪,要实现这一目的最常用的方法就是使用Rootkits,简单的说,Rootkits是一种经 ...
- 在Windows下如何创建指定的虚拟环境
前几天给大家分享了如何在默认的情况下创建虚拟环境,没来得及上车的伙伴,可以戳这篇文章:在Windows下如何创建虚拟环境(默认情况下).今天小编给大家分享一下,如何创建的指定的Python环境. 创建 ...
- C/C++(C++类型增强)
C++类型增强 类型检查更严格 把一个const类型的指针赋给非const类型的指针.c语言中可以通的过,但是在c++中则编不过去 const int a = 10; a = 100;//const修 ...
- 如何批量telnet查看否开放指定端口
由于机房搬迁,需要重新telnet看看网络是否联通 [weblogic@pays03pre_BankVerify /]$ telnet 172.29.1.159 22Trying 172.29.1.1 ...
- libc.so.6: version GLIBC_2.14 not found
https://blog.csdn.net/heylun/article/details/78833050
- php https链接
1.安装soap扩展 2.安装openssL 3.代码执行 function issure($sn){//通过soap链接接口 进行确认是否是正确的sn码 try{ $clie ...
- 具体解释NoSQL数据库使用实例
一.NoSQL基础知识 1.关于NoSQL 在"NoSQL"一词.实际上是一个叫Racker的同事创造的,当约翰埃文斯埃里克要组织一次活动来讨论开源的分布式数据库. 这个名称和概念 ...
- 【VC编程技巧】窗口☞3.4利用bitmap改变对话框的背景。
效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbl9qaW50/font/5a6L5L2T/fontsize/400/fill/I0JBQ ...
- [Servlet]研究ServletContext对象
作者信息 作者姓名:金云龙 个人站点:http://www.longestory.com 个人公众帐号:搜索"longestory"或"龙哥有话说" Servl ...
- SpringBoot与Dubbo整合-项目搭建
本章节建立生产者和消费者来演示dubbo的demo 生产者:springboot-dubbo-provider 和 消费者:springboot-dubbo-consumer 工程配置详解 Apach ...