这是昨天WHUCTF比赛的一道题目,本属于crypto,其实和crypto没多大关系,

比赛时其实差不多有这种思路了,但不相信自己,就没这样做下去,回来之后,照做了,果然是这样

链接:http://pan.baidu.com/s/1bpBn4Qz 密码:w4os

程序主体思路

flag400.txt是自己的文件 里面就是要输的flag flag长度为32 操作是每次把 enjoy WHU_CTF2016!的一个字符和flag链接 算他们的md5值 再将md5和flag按位异或得到长度为32的output  再算base64即为enc400.txt里面的文本

 
这里涉及到md5加salt的这样一种加密方式,有兴趣的可以了解一下
 
md5加salt的强度肯定是爆破不了的,只能在后面的按位异或找思路
思路:

flag范围是ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}_

md5是abcdefghijklmnopqrstuvwxyz0123456789
可以对这里进行爆破
自己写的python脚本:
import base64
base=open('enc400.txt','r').read().split() for i in range(len(base)):
base[i]=base64.b64decode(base[i]) a=[[0 for i in range(len(base))]for j in range(32)] for i in range(32):
for m,n in enumerate(base):
a[i][m]=hex(ord(n[i])) print a b='abcdefghijklmnopqrstuvwxyz0123456789'
c='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}_' for k in range(32):
for i in c:
for m,n in enumerate(a[k]):
d=chr(int(n,16)^ord(i))
if d not in b:
break
if m==17:
print k,i

最后的flag是:yo_you_are_angry_i_am_excited_yo

CRYPTO-MD5的更多相关文章

  1. go标准库的学习-crypto/md5

    参考:https://studygolang.com/pkgdoc 导入方式: import "crypto/md5" md5包实现了MD5哈希算法,参见RFC 1321. Con ...

  2. node crypto md5加密,并解决中文不相同的问题

    在用crypto模块时碰到了加密中文不相同的问题,多谢群里面@蚂蚁指定 1:解决中文不同的问题 function md5Pay(str) { str = (new Buffer(str)).toStr ...

  3. nodejs -- crypto MD5签名

    MD5使用方法: const crypto = require('crypto'); var obj = crypto.createHash('md5'); // 可多次调用 update obj.u ...

  4. 计算文件的MD5值(Java & Rust)

    Java public class TestFileMD5 { public final static String[] hexDigits = { "0", "1&qu ...

  5. 文件MD5

    package mainimport (    "crypto/md5"    "fmt"    // "github.com/astaxie/bee ...

  6. Golang--计算文件的MD5值

    参考: http://blog.csdn.net/u014029783/article/details/53762363 用法: $ go run 01.go -f 1.txt b9d228f114d ...

  7. Golang两种方法实现MD5加密

    package main import ( "crypto/md5" "fmt" "io" ) func main() { str := & ...

  8. go语言练习:go实现md5

    package main import ( "crypto/md5" "fmt" ) func main() { md5_ob := md5.New() md5 ...

  9. [Go] md5 加密 示例

    package main import ( "crypto/md5" "encoding/hex" "fmt" "io" ...

  10. Golang 获取MD5的方法

    import ( "crypto/md5" "encoding/hex" ) //生成32位md5字串 func Md5(s string) string { ...

随机推荐

  1. jquery1:

    在jquery中:1.window.onload: --->$();所以一般jquery用如下开头: $(function(){ })2.获取元素:$('#div'):获取id为div的元素$( ...

  2. Oracle管理口令遗忘解决办法

    刚装Oracle11g后忘记了安装时设置的管理口令,可以通过如下方法重置指定用户名密码: 1.打开sql plus,在“请输入用户名”提示符后输入“/as sysdba”,链接数据库后通过“alter ...

  3. js中转移符

    "<a href='javascript:;' onclick='javascript:changeChannelRuleStatus(\"" + options. ...

  4. ubuntu 下非交互式执行远程shell命令

    apt-get install sshpass sshpass -p **your_password** ssh -o StrictHostKeyChecking=no "root@$ip& ...

  5. php生成图片缩略图,支持png透明

    注:此功能依赖GD2图形库 PHP生成缩略图类   <?php /* * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥(http://w ...

  6. cygwin下载指南(转)

    http://blog.chinaunix.net/uid-20178959-id-1731456.html

  7. placeholder 颜色更改

    ::-webkit-input-placeholder { /* WebKit browsers */ color: #999; } :-moz-placeholder { /* Mozilla Fi ...

  8. SpringMVC 视图和视图解析器&表单标签

    视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象.对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它 ...

  9. idea 中利用maven创建java web 项目

    转自:http://www.linuxidc.com/Linux/2014-04/99687.htm 本文主要使用图解介绍了使用IntelliJ IDEA 12创建Maven管理的Java Web项目 ...

  10. 通过InputStream访问文件中的数据的四种方法

    //方法一(每次只读取一个字节) public static void getFile() throws IOException { File file = new File("D:\\a. ...