perl社工密码字典生成器

#!/usr/bin/perl -w
use Math::Combinatorics qw(permute);
#引入排列模块

if (@ARGV == 0){
	die "错误:No parameter!Enter \"?\" for help.\n";
}
#若无参数,提示错误并退出

if (@ARGV == 1){
	if ($ARGV[0] eq '?'){
		&help;
	}else{die "Error:At least 2 parameter!\n"}
}
#若只有一个参数,判断是否为“?”。若是则调用help函数,否则提示错误并退出

my @parameter_array = @ARGV;
die "Error:Missing \"-o\" parameter!\n" unless(grep(/^-o$/,@parameter_array));
#若参数中没有“-o”,提示错误并退出
my @words_array;
my @numbers_array;
my $filename;

while(@parameter_array){
#处理每一个参数
	my $parameter = shift @parameter_array;
	if($parameter eq '-w'){
		my $para = shift @parameter_array;
		&checkword($para);
		push @words_array,$para;
		#将“-w”后的字符串加入数组@words_array中
	}elsif($parameter eq '-d'){
		my $para = shift @parameter_array;
		&checknum($para);
		push @numbers_array,$para;
		#将“-d”后的数字加入到数组@numbers_array中
	}elsif($parameter eq '-o'){
		my $para = shift @parameter_array;
		$filename = $para;
		#将“-o”后的文件名赋值给$filename变量
	}else{
		die "Error:Parameter near \"$parameter\"\n";
		#若有其他类型的参数或者格式不正确则提示错误并退出
	}
}

my @everyword_listarray_ref_array;
foreach(@words_array){
#将每一个字符串参数生成全部大小写数组,并将该数组的引用存放在数组@everyword_listarray_ref_array中
	my $all_case_array_ref = &creat_all_case($_);
	push(@everyword_listarray_ref_array,$all_case_array_ref);
}
foreach(@numbers_array){
#将每一个数字参数放在单独的数组中,并将该数组的引用存放在数组@everyword_listarray_ref_array中
	my @number_array = ($_);
	my $number_array_ref = \@number_array;
	push(@everyword_listarray_ref_array,$number_array_ref);
}

open(PASSLIST,">$filename");
foreach(permute(@everyword_listarray_ref_array)){
#permute返回的是所有排列的数组的引用的数组
        array_permu(@$_);
	#对每一种数组排列调用函数
}
close PASSLIST;

sub array_permu{
#用来实现数组间的组合
        my $aa = shift @_;
        foreach(@$aa){
                push(@arr,$_);
                array_permu(@_) if @_;
		unless(@_){
                	print PASSLIST join('',@arr).$/;
		}
                pop @arr;
        }

}
sub creat_all_case{
#生成所有大小写的数组,返回该数组的引用
	my $word = shift @_;
	my @all_case_array;
	while($word){
		push(@all_case_array,$word);
		$word = &add1($word);
	}
	my $all_case_array_ref = \@all_case_array;
	return $all_case_array_ref;
}

sub add1{
#实现字母+1
        my ($words) = (@_);
        if($words =~ /^[A-Z]+$/){return 0}
        my @words_array = split('',$words);
        my $jinwei = 1;
        foreach (@words_array){
                if($jinwei == 1) {
                        if($_ =~ /^[a-z]$/){
                                $_ = uc $_;
                                $jinwei = 0;
                        }elsif($_ =~ /^[A-Z]$/){
                                $_ = lc $_;
                                $jinwei = 1;
                        }
                }
        }
        $words = join('',@words_array);
        return $words;
}

sub checkword{
#检查是否有其他字符
	my $word = shift @_;
	if ($word =~ /[^a-z]/){
		die "Error:Incorrect format near \"$word\"\n";
	}
}

sub checknum{
#检查是否有其他字符
	my $num = shift @_;
	if ($num =~ /[^0-9]/){
		die "Error:Incorrect format near \"$num\"\n";
	}
}
sub help{
	system "clear";
	print qq(Social Engineering Password Dictionary Builder(V1.0) - by adidala

	Usage:	./creatdict [? | -w xxx | -d xxx] -o xxx

	Parameter
	 ?:	To show this page
	-w:	A word,it will generate all combinations of case(Optional Repeatable)
	-d:	A number(Optional Repeatable)
	-o:	Output file of password dictionary(Essential)

	Example:
	./creatdict -w a -w b -d 1 -o pass1.txt
	then will generate a file named pass1.txt and contains:
	ab1
	aB1
	Ab1
	AB1
	a1b
	a1B
	A1b
	A1B
	ba1
	bA1
	Ba1
	BA1
	b1a
	b1A
	B1a
	B1A
	1ab
	1aB
	1Ab
	1AB
	1ba
	1bA
	1Ba
	1BA

);
	exit;
}

时间: 2024-10-08 22:26:58

perl社工密码字典生成器的相关文章

Kali Linux下社工密码字典生成工具Cupp和Cewl教程

Cupp是一款用Python语言写成的可交互性的字典生成脚本.尤其适合社会工程学,当你收集到目标的具体信息后,你就可以通过这个工具来智能化生成关于目标的字典.当对目标进行渗透测试的时候,常见密码爆破不成功,大批量的字典耗时太长时,就需要一份结合具体目标的带社工性质的字典,可以很大提升爆破效率,这时候就可以利用Cupp打造一份. 安装:apt-get install cupp 查看命令:cupp 参数说明 执行cupp -i 然后和工具开始交互,会让你输入被攻击目标的姓.名.外号.生日.父母的名字

社会工程学字典生成器,社工密码爆工具下载地址

啥也不想讲了,上福利把~ 刚刚在某黑客论坛看到了一款社工字典生成器,当然也可以理解为密码爆破工具 接下来我会给大家简单的介绍一下这款工具,随后把下载地址给各位附上的 这个社工字典是一款为了社工而生的工具,它基于一个简单的理念,即用给定的用户信息去生成相应的密码.使用的时候只需任何输入任何有关的信息,针对不同的人群心理进行生成相应的密码字典. 可以根据用户输入的内容,添加弱口令,自带字符,自带大小写组合进行混合生成相应的密码字典. 功能: 普通资料生成密码字典 资料大小写组合生成 用户输入加字符生

基于python的密码字典生成器

#!/usr/bin/python# -*- coding:utf-8 -*-# @Time :2019/10/7 10:55# @Author :maple# @Emall :[email protected]# @File :密码字典4.py import itertools as itswords = input("请输入想要生成的数字.字母.特殊符号:").strip()word1 = input("请输入前面的固定字符,若没有直接enter:").stri

简单的社工QQ密码破解

  今晚上在爷爷家过元宵节,跟群里一块瞎聊.然后A给我发信息说,qq号密码错误登陆不上,也拿不回来了.急需.我心思关系关系这么好就帮帮吧,先问他qq号有没有用过登陆过别的网站注册过账号,这样就会留下qq号码与密码,找数据表下载好了,不过也要搞权限,这个好办.他说没有,qq号都登不上了怎么能注册账号.好吧.然而我也不知道别的方法了,只好生撸了.他又跟我说密码应该是改错了,给我了他认为是正确的密码hsogifei!&*wwvv(因为涉及了个人隐私所以我随便打的).写出来第一是复习一下,第二是收徒弟以

如何抵御社工库类的黑客攻击?在明文密码已泄露的情况下保护自己?

说到社工库,现在很流行,数据也越来越庞大.详细,其威胁程度日愈严重. 其中威胁最高的就属密码库了,也是数量最大,影响范围最广的. 密码库主要来源就不说了,各种拖库-- 其中密码形式主要分这几种: 第一种是未加密的明文密码,威胁程度最高.(不得不说这种储存明文密码的站点有多么的二逼!更可悲的是这种站点有很多!!) 另一种是加密过的密码密文,威胁程度视加密等级而定. 第三种是破译成本很低的密码密文,例如仅一次MD5,等低强度加密算法,威胁程度最高. 其中无法破译的密文,情况还好点,暂时没什么大的影响

全新的社工思路

社会工程学(社工)是我们大家都很喜欢的一门技术,但是现在这个时候我们都不知道想什么办法去社工,今天我就准备了一个全新的思路. 一个现在15元-XX元不等,其实这个上面有很多信息值得我们注意和利用.下面我来详细说说. 每个同学心目中都有个女神,或许女神不像网上说的只喜欢高帅富,也有的女神喜欢那种feel,当然feel最重要.我们能在这个同学录中得到什么呢? 1.姓名,其实有的同学在刚上学的时候就会给你发个同学录.我刚上初中的时候,我就收过,目的是了解一下你叫什么名字啊,什么什么的,比如你在刚开学的

如何防御黑客的社工?

首先,这里基于社会工程学的攻击该怎么理解?这将是一个讨论的前提. ——————————————————————我想利用社工进行的攻击就是基于对人性的分析理解而展开的攻击,而不再是基于对机器对编码的理解而进行的解密.规则突破等. 据我所知,很多很多能提权也就是能黑掉小至个人账户大到企业内网的黑客是不需要就编码进行过多分析的,甚至有些人并不具备编码能力.然而,事实是,他们真的把你黑了,把你眼中高大上的企业黑了. 所以基于社会工程学的攻击到了什么程度?——————————————————————答案是

使用ELK搭建社工库

https://mp.weixin.qq.com/s?__biz=MjM5MDkwNjA2Nw==&mid=2650373776&idx=1&sn=e823e0d8d64e6e31d22e89b3d23cb759&scene=1&srcid=0720BzuzPl916oZWVGfiwduR&key=77421cf58af4a65382fb69927245941b4402702be12a0f1de18b1536ac87135d4763eab4e820987f0

【社工】问君乎-隐私留几许?

网络中不要相信任何人,记住跟你聊天的就可能是头猪! 本来这类的文章我是不想弄的,一个是感觉我自己还没到那种程度,一个是怕你们瞎搞,但..你们安全意识也太...在挣扎了下,还是稍微说点,就以我的认知给那些完全没有安全意识的兄弟姐妹们提个醒... (就浅显的讲一下一些基础的社工[社工不是人肉],不要恶意利用) 现在人什么信息比较重要?从个人信息来说,估计也就是姓名,生日,照片,电话号码,身份证,家庭住址,喜欢的人,银行卡密码,QQ等常用的密码,工作地点,学校地址这几个了吧: 很多人不以为然,认为除了