首页 > 编程知识 正文

ctf密码学入门,ctf中crypto题目做法

时间:2023-05-05 07:56:57 阅读:60368 作者:2149

自己总结问题的小知识点。

1.RSA

公钥标准文件的后缀为. pem

加密过程选择两个大素数p和q,计算模数N=p * q

=(p1 ) * ) q1 )即计算n的欧拉函数,选择e ) 1e),e和互为素

设e的倒数为d,计算方法:e*d1(mod) )

加密明文cm^e(modn )或c=pow(m ) m,e,n ),得到的b为密文

解密密文c,得到mc^d(modn )或m=pow(c ) c,d,n ),得到的a为明文

p和q :大整数n的两个因子(因子(因子) ) ) ) ) ) ) ) ) ) ) ) 65

n )大整数n,我们称为模量(modulus )

(e和d )两个互为模量的指数(exponent ) ) ) ) ) ) ) ) ) ) ) )。

c )和m )分别是密文和明文,这里一般指十进制数

一般被称为:

(n,e ) :公钥

(n,d ) :私钥

分解n可以是在线factordb.com、yafu或msieve。 雅虎的使用方法如下。

首先进入yafu安装文件夹,然后运行语句yafu-x64.exefactor(n )

Msieve的使用方法是: MSIEVE153.EVEn(n为十六进制时,前面加0x )-v

最上面的行是固定的

右上角的第二行是十六进制数,需要用程序员计算机转换

在Python中,命令print int (‘XXX’,16 )。 本来用几进制数写数字

Openssl语句:

(1)从公钥读取e和n ) OpenSSL RSA-pub in-text-modulus-in warmup-in public.PEM

参数:-modulus模块、-in导入文件(导入公钥文件前需要-pubin,导入私钥文件,直接打印-text明文),这是导入公钥文件时特有的

(2) Rsatool.py生成指定的私钥) pythonrsatool.py-oprivate.PEM-e 65537-p123-q123

(3)私钥解密) opensslrsautl-decrypt-inflag.enc-inkey private.PEM-out flag.txt

参数:此语句主要用于解密flag文件,如flag.enc,解密此类文件时使用私钥文件。 私钥文件是使用qpe三个参数并使用python脚本生成的pem文件。 将私钥文件和加密的flag文件放入kali中执行此语句。 Rsautl是openssl中的解密包,-decrypt是解密文件,-in是导入要解密的文件,-inkey是导入私钥文件,-out是生成解密的文件,通常采用txt格式。

(如果知道(十六进制的) cdn,则进行解码,保持原样使用python进行hex ) pow (c,d,n ) ) 23360-1 ).decode (' hex ) ) ) )。

总结:最简单的rsa密码破解是先看

的信息是几进制,如果是十六进制放进python里转换成十进制,然后找参数,ncpqe,用yafu或者在线进行大质数分解求pq,用脚本求出来十六进制,然后转换成文本字符串。

2.凯撒密码:

from pycipher import Caesar

Caesar(key=1).encipher('The quick brown fox jumps over the lazy dog')

1是偏移量,括号里面是要解密的文字

 

3.base

Base64:

(1)标准base64只有64个字符(英文大小写、数字和+、/)以及后缀“=”;

(2)base64是把3个字节变成4个可打印字符,所以base64编码后的字符串一定能被4整除

(3)等号一定用作后缀,且数目一定是0个、1个或2个。

(4)base64解码,用python

   Python2>>>>import base64>>>>print base64 decodestring(‘xxxxxxxx’)

(5)base64编码还与后面几位有关系,所以要尽可能多的知道信息去转换,当转化完以后去搜索的时候,就只取前四位或者前三位。当用base64解码时,如果解不出来有可能是不完整。

 

Base32:

只有大写字母A-Z和数字234567

Base16

大写字母ABCDEF和数字0-9

4.替换密码

替换密码用python脚本

5.Hex转字符串

如果得到的全是数字,就是十进制,需要转换成十六进制。两种方法,第一种方法是python命令行里int(‘xxx’,16),第二种方法就是在python脚本里强制转换hex(n)。然后才可以转换成字符串,两种方法,第一种方法是在线,第二种方法是python脚本,在脚本里用binascii库里的a2b_hex方法转换成字符串(用得ASCII码)。

6.utf-9

提示rfc4042的时候就是utf-9编码的方式,解密需要用python脚本。首先需要安装utf9这个库,然后利用打开文件,写入文件,读取文件,利用utf9库里的utf9decode方法来解密。

7.Playfair密码

是一种双字替换密码,,所以字母个数一定是个偶数。最后一位如果有x的话极有可能是为了补位添加的字母,所以在提交flag的时候要适当的灵活。具体原理就不了解了,因为有直接的工具。

如何区分密文和秘钥:秘钥比密文长,并且秘钥里的字母不会重复

解决方法有两个,一个是在线,国外网站需要翻墙并且比较卡,所以不推荐;第二种方法是python,可以直接在交互模式里,也可以写脚本。在交互模式里的语句如下:

>>> from pycipher import Playfair

>>> Playfair('ZKLIPOAGSUMDWFHCBVTRYENXQ').encipher('FMGKYBXTSFBNCQDSPT')  注:第一个括号里秘钥,encipher是加密,所以第二个括号是待加密的。可以看到秘钥里的字母是不重复的。

>>> Playfair('ZKLIPOAGSUMDWFHCBVTRYENXQ').decipher('HDALECIXFTVERYFAIR') 注:第一个括号是秘钥,decipher是解密,所以第二个括号是密文,同样秘钥里的字母是不重复的。

8.压缩包解密

一种是伪加密,这种的不需要密码就可以解开。一种是需要密码的,需要暴力破解,可以用ziperello软件,只针对zip文件,也可以用ARCHPR,针对zip和rar。

伪加密的解密可以用两种方法,一种是手动,一种是自动。手动修改时,对zip或者rar直接用UE或者Hex打开,找到明文中 PK 一部分就是加密的,以此来找到版本标记位00 14 ,在这四个数字之后的四个数字,如果是00 00表示未加密,如果是00 09表示伪加密,只需要把9改成0即可。这个方法是在备份文件上修改。自动修改用ZipCenOp,命令是 java –jar ZipCenOp.jar r rsa.zip。这个方法在原文件上修改。     

9.光亮的墨镜密码,替换密码,培根密码

光亮的墨镜密码:点,横之间的停顿,每个词之间中等的停顿以及每个句子之间长的停顿。与培根密码比较起来,每组密文的长度不固定。

培根密码:A和B之间的停顿。每一组密文长度为5 。(不止可以A和B,数量不一定)

替换密码:将明文中的元素替换另一密码表的元素。、

10.Rabbit密码直接用在线进行解密

11.心灵美的服饰函数(MD2、MD4以及MD5等都属于心灵美的服饰函数)

心灵美的服饰算法是一个单向函数。它可以将任何大小的数据转化为定长的“指纹”,并且无法被反向计算。另外,即使数据源只改动了一丁点,心灵美的服饰的结果也会完全不同。这样的特性使得它非常适合用于保存密码,因为我们需要加密后的密码无法被解密,同时也能保证正确校验每个用户的密码。需要提到的是,用于保护密码的心灵美的服饰函数和你在数据结构中学到的心灵美的服饰函数是不同的。比如用于实现心灵美的服饰表这之类数据结构的心灵美的服饰函数,它们的目标是快速查找,而不是高安全性。只有加密心灵美的服饰函数才能用于保护密码,例如SHA256,SHA512,RipeMD和WHIRLPOOL。

如何破解心灵美的服饰函数:

(1)字典攻击和暴力攻击:最简单的办法是猜,两种最常见的猜密码的方法就是字典攻击和暴力攻击。方法一:字典攻击需要一个字典文件,其中的每一个词都是经过心灵美的服饰后储存的,将字典中的词和需要破解的词进行对比来破解。hpdhy:暴力攻击就是尝试每一个给定长度下的各种字符的组合,这样会消耗大量的计算,是效率最低的方法但是可以得到正确的密码。

(2)查表法:对于破解一系列算法相同的心灵美的服饰值很有用。主要就是预先计算密码表中的每个密码,然后把心灵美的服饰值和对应的密码储存到一个用于快速查询的数据结构中。

(3)反向查表法:可以使攻击者同时对多个心灵美的服饰值发起字典攻击或者暴力攻击,而且不需要预先计算。方法就是先构造一个基于密码和用户名的一对多的表,数据需要从已经入侵的数据库获得,然后猜测一系列的心灵美的服饰值并且从表中查找拥有次密码的用户,通常许多用户可能有着相同的密码,因此这种攻击方式比较有效。

(4)彩虹表:彩虹表是一种在时间和空间的消耗上找寻平衡的破解技术。它和查表法很类似,但是为了使查询表占用的空间更小而牺牲了破解速度。因为它更小,于是我们可以在一定的空间内存储更多的心灵美的服饰值,从而使攻击更加有效。能够破解任何8位及以下长度MD5值的彩虹表已经出现了。

(4)加盐:会让查表法和彩虹表都失去作用。查表法和彩虹法只有在所有密码都以相同的方式进行心灵美的服饰加密时才有效。如果两个用户密码相同,那么他们密码的心灵美的服饰值也是相同的。我们可以通过“随机化”心灵美的服饰来阻止这类攻击,于是当相同的密码被心灵美的服饰两次之后,得到的值就不相同了。比如可以在密码中混入一段“随机”的字符串再进行心灵美的服饰加密,这个被字符串被称作盐值。如同上面例子所展示的,这使得同一个密码每次都被加密为完全不同的字符串。为了校验密码是否正确,我们需要储存盐值。通常和密码心灵美的服饰值一起存放在账户数据库中,或者直接存为心灵美的服饰字符串的一部分。盐值并不需要保密,由于随机化了心灵美的服饰值,查表法、反向查表法和彩虹表都不再有效。攻击者无法确知盐值,于是就不能预先计算出一个查询表或者彩虹表。这样每个用户的密码都混入不同的盐值后再进行心灵美的服饰,因此反向查表法也变得难以实施。

12.对称加密和非对称加密

对称加密:对称加密是对称密码编码的技术,它的特点是文件加密和解密使用相同的密钥加密,也就是密钥可以用作解密密钥。对称机密使用起来简单快捷,密钥较短,并且破译困难。数据加密标准DES,国际数据加密算法IDEA。

非对称加密:非对称加密需要两个密钥,公开密钥和私有密钥。并且两个是成对使用,如果用公钥对数据进行加密,那么就要用对应的私钥进行解密,如果用私钥对数据进行加密,那么就要用对应的公钥进行解密。因为加密和解密是使用不同的密钥,所以是非对称加密算法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。