南京邮电大学CTF密码学之MD5-golang与php代码实现

xuthus · · 544 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

题目内容:这里有一段丢失的md5密文 e9032???da???08????911513?0???a2 要求你还原出他并且加上nctf{}提交 已知线索 明文为: TASC?O3RJMV?WDJKX?ZM 题目来源:安恒杯
简单的MD5密码碰撞,通过对比密文e9032 与加密后的数据 定位相关信息
解题代码如下

GO语言版

package main

import (
    "crypto/md5"
    "io"
    "encoding/hex"
    "strings"
    "fmt"
)

var Enable = []rune{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9',' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@','[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~'}


func main() {
    var(
        rune1 rune
        rune2 rune
        rune3 rune
    )

    for i:=0; i< len(Enable);i++  {
        rune1 = Enable[i]
        for j:=0; j< len(Enable);j++  {
            rune2 = Enable[j]
            for k:=0; k< len(Enable);k++  {
                rune3 = Enable[k]
                strToDecode := "TASC"+string(rune1)+"O3RJMV"+string(rune2)+"WDJKX"+string(rune3)+"ZM"
                str := md5.New()
                io.WriteString(str, strToDecode)
                hexStr := str.Sum(nil)
                code := hex.EncodeToString(hexStr)
                result := "e9032"
                com01 := strings.Contains(code,result)
                if com01 == true {
                    fmt.Println(strToDecode,code)
                }
            }
        }
    }
}

PHP版

<?php
    $list = array(
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9',' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@','[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~'
    );

    for ($i=0;$i<count($list);$i++){
        $str1 = $list[$i];
        for ($j=0;$j<count($list);$j++){
            $str2 = $list[$j];
            for ($k=0;$k<count($list);$k++){
                $str3 = $list[$k];
                $str = "TASC".$str1."O3RJMV".$str2."WDJKX".$str3."ZM";
                $md5 = md5($str);
                if(strstr($md5,"e9032")){
                    echo $str."---".$md5."\n";
                }
            }
        }
    }

本文来自:博客园

感谢作者:xuthus

查看原文:南京邮电大学CTF密码学之MD5-golang与php代码实现

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

544 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传