密码学实验教程(科学实验课)

实验吧密码学WriteUp一)

大家好,又见面了,我是你们的朋友全栈君。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
       

这个系列的文章会将简单的题目放在一起介绍,稍难的题目会单独拿出来写,现在开始。
1.js(题目连接:http://www.shiyanbar.com/ctf/1779
打开网页查看源码,复制源码至Chrome的console,将代码中的eval改为console.log,回车后显示
这里写图片描述
一看就知道是unicode编码,找网站在线解码即可
这里写图片描述

2.NSCTF crypto200(连接:http://www.shiyanbar.com/ctf/1768
保存图片至本地,使用stegsolve打开
这里写图片描述
变换后得到
这里写图片描述
很像二维码是吧?不过这个二维码的黑白颜色完全相反,是扫不出来的,可以使用光影魔术手或者其他软件的反色功能,得到如下二维码,然后扫描即可得到flag
这里写图片描述

3.NSCTF crypto50(链接:http://www.shiyanbar.com/ctf/1758
题目做多了就有感觉了一看就知道是AES加密,故在线AES解密

这里写图片描述
直接提交,答案错误
仔细观察,感觉可能用了凯撒移位
前5个字母按照flag的规律应是NSCTF,由此得到移位数
手工破解即可flag{NSCTF_Rot_EnCryption}

4.黑客叔叔(雨袭团)内部交流题(第一季1.0.2)(题目链接:http://www.shiyanbar.com/ctf/1744
先将字符放在同一行,因为编码里很少会出现汉字,故尝试将“等等”变化为”==”,汉字变化为“/”
使用TripleDes解密
这里写图片描述
接着Rabbit解密
这里写图片描述
(我也不知道为什么是这两个算法,多尝试几次看答案像的就是了,常见加密算法有AES DES RC4 Rabbit TripleDes 等等)

5.simple algorithm(题目链接:http://www.shiyanbar.com/ctf/737
题目给了一个py脚本和一个密文文件,阅读源码可知:py脚本将明文转换为密文,现在需要将密文文件中的密文解密得到明文。 很明显加密流程为将明文转换为16进制编码,在转化为10进制数,将每两位数字构成的数进行FAN函数运算,再拼接起来得到密文。 
因此解密流程为:将0~99利用FAN函数求得加密值,建立加密值到原数的字典,在明文中查字典拼接得到10进制数,转化为16进制数,再求取字符串。 
按照要求用python脚本跑即可

– coding: utf8 –

原代码中的FAN()

def FAN(n, m):
    i = 0
    z = []
    s = 0
    while n > 0:
        if n % 2 != 0:
            z.append(2 – (n % 4))
        else:
            z.append(0)
        n = (n – z[i])/2
        i = i + 1
    z = z[::-1]
    l = len(z)
    for i in range(0, l):
        s += z[i] * m ** (l – 1 – i)
    return s

def foo():
    #读取密文
    s=open(“enc.txt”).read().strip()

#构造0~99对应的FAN()的值的字典dct={}for n in xrange(0,100):    #key为FAN()的结果,value为n(位数补足到2位)    dct[str((FAN(n,m=3)))]="%02d"%nlst=[]offset=0while offset<len(s):    #先从4个字符匹配直至1个字符    for i in xrange(4,0,-1):        tmp=s[offset:offset+i]        if tmp in dct:            lst.append(dct[tmp])            offset+=i            breakflag="".join(lst)#python中s[i:i+2]不一定取到2个字符,#如s="pcat",s[3:4]和s[3:5],甚至s[3:100]都是"t"#此题中最后得到"09",但也可能是"9",故做下面的判断if len(hex(long(flag))[2:-1])%2!=0:    flag=flag[:-2]+flag[-1]flag=hex(long(flag))[2:-1].decode('hex')print flagpass
  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

if name == ‘main‘:
    foo()
    print ‘ok’

flag:SIS{a9ab115c488a311896dac4e8bc20a6d7}

6.密文 rot13(连接:http://www.shiyanbar.com/ctf/728
直接rot13解码就行
这里写图片描述

7.keyboard(链接:http://www.shiyanbar.com/ctf/61
提示键盘了,按照给出的字母顺序在键盘上画出字母的形状,就是答案

8.凯撒是罗马共和国杰出的军事统帅(连接:http://www.shiyanbar.com/ctf/40
按照提示,直接诶凯撒解密即可

9.摩擦摩擦(链接:http://www.shiyanbar.com/ctf/39
直接摩斯解密

10.最近听说刘翔离婚了(链接:http://www.shiyanbar.com/ctf/38
栅栏密码
其实写多了,套路就知道了
肯定是keyis{simplexue}

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129691.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的

    在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的

    2021年10月27日
    48
  • 2批处理for循环中截取字符串_批处理for循环嵌套

    2批处理for循环中截取字符串_批处理for循环嵌套一、参数/dfor/d%%变量in(集)do命令/d参数是指定仅对目录而不是文件执行的for命令。例1:在命令行输入(不是在批处理,之后不再解释)for/d%ain(c:\*.*)doecho%a运行会把C盘根目录下的全部目录分次显示出来,而不显示文件名看起来有点乱,如果把命令提示回显关闭就清晰了:for/d%ain(c:\*….

    2022年10月12日
    2
  • c语言 switch错误用法,C语言switch语句的详细用法[通俗易懂]

    c语言 switch错误用法,C语言switch语句的详细用法[通俗易懂]C语言还为多分支选择提供了另一个switch语句,其一般形式为:开关(表达式){案例常量表达式1:语句1;案例常量表达式2:语句2;…条件常量表达式n:语句n;默认值:语句n+1;}语义是:计算表达式的值.将其与后续常量表达式的值一一比较.当表达式的值等于常量表达式的值时,将执行后续语句,然后不进行判断,并且在个案之后的所有后续语句将继续.如果在所有情况下表达式的值都与常量…

    2025年11月11日
    4
  • 程序员必备:变量命名神器 CODELF

    程序员必备:变量命名神器 CODELF大部分开发者都或多或少遇到过变量命名的烦恼,如果命名不规范,不仅会影响开发的效率,而且对后面维护的同学来说也是一个不小的挑战。那么接下来就给大家介绍个命名神器

    2022年5月4日
    1.3K
  • android 创建数组

    android 创建数组一:privateString[]data=newString[]{“Hello”,”jike”,”world”};二:创建数组对象:privateCellData[]data=newCellData[]{newCellData(“jike”,”world”),newCellData(“title”,”content”)};publiccl…

    2022年6月1日
    30
  • 学习使用PSTools工具中的psping

    学习使用PSTools工具中的psping目录初识PsToolspsping1.使用ICMPping2.使用TCPping3.延迟测试4.带宽测试5.同功能的tcping工具总结初识PsTools    在工作中我们都会想探测某个IP是否能通,基本上都使用过ping命令,但是某些服务器禁用了ping,而且有些时候也想探测某个IP的某个端口是否能通。之前的我一般都是用“telnetipport”,但是我发现一个不好的体验就是没啥…

    2025年7月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号