这是昨天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. 我需要在Web上完成一个图片上传的功能(+2)

    增加一个页面,用于判断传参是否正确. @{     //判断是否具备会员参数     if (UrlData.Count > 0)     {         Session["Arg ...

  2. P3P设置第三方cookie解决方案

    原文地址:http://blog.csdn.net/lovingprince/article/details/5984449 首先,什么是 P3P ( Platform for Privacy Pre ...

  3. 使用R进行地图相关的可视化

    Here is a solution using the geosphere and maps package. Using the gcIntermediate function you can & ...

  4. Yann LeCun, Geoffrey E. Hinton, and Yoshua Bengio

  5. bzoj3504: [Cqoi2014]危桥

    题意:给出一个图,有的边可以无限走,有的只能走两次(从一头到另一头为一次),给定两个起点以及对应的终点以及对应要走几个来回,求判断是否能完成. 先来一个NAIVE的建图:直接限制边建为容量1,无限制为 ...

  6. linux桌面的安装

    在CentOS 7中提供了两种桌面"GNOME DESKTOP" 和 "KDE Plasa Workspaces",我们以安装"GNOME DESKT ...

  7. vs 中统计代码行数

    ------解决方案--------------------b*[^:b#/]+.*$^b*[^:b#/]+.*$ ctrl + shift + F 查找选项勾选 正则表达式

  8. ssh框架文件上传下载

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Codeforces Round #383 (Div. 2) 解题报告

    本来是打算所有半夜进行的CF都不参加的,但看到这次比赛22:35就开始,还是没有忍住orz--晚上总是不够清醒,做题思维不如白天活跃,低级错误常常出现.出的比较早的C因为一个书写错误有点小bug,在比 ...

  10. Coding源码学习第一部分(AppDelegate.m)

    前言:在此首先感谢开源,感谢大神们的无私分享. Coding 的主页:https://coding.net/app#app-feature Coding 自己家的仓库:https://coding.n ...