今天给大家介绍的是Github上一个名叫PyMLProjects的项目,这个项目的目的是为了训练AI来学习人类构造密码的模式,然后我们就可以用AI来生成大量同一模式或种类的密码了。这种方法也许可以用来生成暴力破解攻击中需要使用的攻击字典,因为人们为了方便记忆,通常都会采用某种密码“模式”来设计自己的密码。

一些经验丰富的渗透测试人员可能都知道,很多类似银行或政府之类的大型组织他们所使用的默认密码或重置密码都采用的是一种旧的密码方案。为了更加贴近实际情况地去评估目前这种问题的严重性,为了更好地模拟出攻击者所能做到的事情,这个项目将开发一个由自动化AI驱动的工具,并尝试模拟这样的密码攻击。

它将允许你将一个很小的密码样本转变成一个无限长度的密码。

项目主页

PyMLProjects:【传送门

README.md:【传送门

如何使用

这个项目包括以下两个脚本:

1.  learn_passwords.py:该脚本可以用一套密码来训练神经网络,并生成权值;

2.  generate_passwords.py:该脚本可以根据训练集生成的权值来计算并生成密码;

训练神经网络

为了开发出一个能够基于样本生成密码的AI,最简单的方法就是给learn_passwords.py脚本提供密码列表,操作代码如下:

$>./learn_passwords.py

UsingTensorFlow backend.

Usage:./learn_passwords.py [password list]

$>./learn_passwords.pypasswords_random_medium.txt

UsingTensorFlow backend.

['\n',' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+',',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';','<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c','d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's','t', 'u', 'v', 'w', 'x', 'y', 'z', '{', '}', '~', '\x82', '\x84', '\x85','\x88', '\x91', '\x95', '\x96', '\xa0', '\xa1', '\xa3', '\xac', '\xb0', '\xb2','\xb4', '\xb6', '\xb8', '\xb9', '\xbc', '\xc2', '\xc3', '\xe0', '\xe1', '\xe2']

[*]Total Characters: 244242

[*]Total Vocab: 92

运行了上述代码之后,将生成一系列权值文件,我们之后将需要用这些权值文件来设置神经网络:

-rw-rw-r--1 k3170makan k3170makan 2463936 Jul 25 18:22seq-100-weights-improvement-44-2.0382.hdf5

-rw-rw-r--1 k3170makan k3170makan 2463936 Jul 25 18:24seq-100-weights-improvement-45-2.0002.hdf5

-rw-rw-r--1 k3170makan k3170makan 2463936 Jul 25 18:26seq-100-weights-improvement-46-1.9580.hdf5

-rw-rw-r--1 k3170makan k3170makan 2463936 Jul 25 18:28seq-100-weights-improvement-47-1.9290.hdf5

-rw-rw-r--1 k3170makan k3170makan 2463936 Jul 25 18:30 seq-100-weights-improvement-48-1.9157.hdf5

-rw-rw-r--1 k3170makan k3170makan 2463936 Jul 25 18:32seq-100-weights-improvement-49-1.8796.hdf5

生成密码

为了生成我们所需要的密码,我们需要运行generate_passwords.py脚本,操作代码如下所示:

$>./generate_passwords.py

Using TensorFlow backend.

Usage: ./generate_passwords.py [data file][weights filename]

$>./generate_passwords.pypasswords_1000.txt seq-100-weights-improvement-49-1.8796.hdf5

Using TensorFlow backend.

[*] Total Characters: 7784

[*] Total Vocab: 38

[*] Total Patterns: 7684

[*] Seed: tiful

mylove

angela

poohbear

patrick

iloveme

sakura

adrian

alexander

destiny

christian

121212

工具依赖组件

唯一需要的就是在你的计算机中安装Python环境。

Python:【传送门

Python Keras:【传送门

参考资料

如何利用神经网络和Python生成指定模式的密码的更多相关文章

  1. Python--随机生成指定长度的密码

    在浏览别人博客时学习了random模块,手痒自我练习下,写个随机生成指定长度的密码字符串的函数,拿出来供各位参考: 废话不多说,上代码: # coding: utf-8 import random i ...

  2. 随机生成指定长度的密码之---Random

    随机生成指定长度的密码思路: 1.密码中可能包含字母,数字,特殊符号,为了区别分别定义常量 2.随机生成密码,自然想到要用到java.util.Random 类 3.定义一个带两个参数的方法,1跟2, ...

  3. python生成指定文件夹目录树

    # -*- coding: utf-8 -*- import sys from pathlib import Path class DirectionTree(object): "" ...

  4. javascript生成指定范围的随机整数

    JavaScript有提供一个生成值区间在(0, 1)的随机小数的函数. Math.random(); // 0.10529863457509858 如果你和喜欢的人一起执行这个函数,之后生成的随机小 ...

  5. Python(2.7.6) glob - 匹配指定模式的文件

    Python 标准库的 glob 模块支持查询匹配指定模式的文件或目录.这里的模式使用的并不是正则表达式,而是通过通配符来匹配的 Unix 风格的路径名扩展. 支持的通配符: 通配符 说明 *  匹配 ...

  6. 利用Python生成随机密码

    #coding:utf-8 #利用python生成一个随机10位的字符串 import string import random import re list = list(string.lowerc ...

  7. 在RPA中使用Python批量生成指定尺寸的缩略图!比Ps好用!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 htt ...

  8. python ---Pandas时间序列:生成指定范围的日期

    引入包 import pandas as pd import numpy as np 1.生成指定范围的日期 print pd.date_range('11/1/2018','11/9/2018') ...

  9. 利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试

    从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试 通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文 ...

随机推荐

  1. 镜像中的 Everything, GnomeLive ,KdeLive ,livecd ,NetInstall的区别?

    everything: 对完整版安装盘的软件进行补充,集成所有软件 GnomeLive , GNOME桌面版 KdeLive , KDE桌面版 livecd 光盘上运行的系统 ,NetInstall ...

  2. Vue 路由知识二(工程模式下路由的配置)

    vue-router是一个插件包,所以我们还是需要用npm/cnpm来进行安装的:npm/cnpm install vue-router --save-dev. 在路由的核心文件:src/router ...

  3. C/C++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算

    一.各进制赋值 1.十六进制赋值 int i=0x12AD; int i=0X12AD; int i=0x12Ad; int i=0X12Ad; //以上都是十六进制,表示十进制173: 2.八进制赋 ...

  4. zabbix监控之grafana

    zabbix监控之grafana

  5. python3爬取微博评论并存为xlsx

    python3爬取微博评论并存为xlsx**由于微博电脑端的网页版页面比较复杂,我们可以访问手机端的微博网站,网址为:https://m.weibo.cn/一.访问微博网站,找到热门推荐链接我们打开微 ...

  6. BEGIN - 开始一个事务块

    SYNOPSIS BEGIN [ WORK | TRANSACTION ] DESCRIPTION 描述 BEGIN 初始化一个事务块, 也就是说所有 BEGIN 命令后的用户语句都将在一个事务里面执 ...

  7. sosoapi的安装

    sosoapi简介及其用户手册:http://www.sosoapi.com/pass/help/manual.htm 该随笔的大概分为: 1.sosoapi的基础安装  2.sosoapi使用域名访 ...

  8. 【JavaScript从入门到精通】第二课

    第二课 初探JavaScript魅力-02 变量 说起变量,我们不得不提起我们有一部比较古老的电视剧叫<包青天>.包青天有一把非常厉害的宝剑叫“尚方宝剑”,见到尚方宝剑有如见到皇帝.某种程 ...

  9. error while loading shared libraries: libclntsh.so.11.1

    解决这个问题有两种方法 1.在当前用户下,添加链接库所在路径 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_ ...

  10. listener.log文件过大导致oracle假死

    /home/u01/oracle/product/11gr2/db_1/log/diag/tnslsnr/VM_179_95_centos/listener/trace/listener.log li ...