深圳建设局网站注册结构师培训附件网页制作工具的选择

pingmian/2026/1/21 14:21:32/文章来源:
深圳建设局网站注册结构师培训附件,网页制作工具的选择,营销培训内容有哪些,做旅行社网站的本文分析了ida81对输入密码的验证流程#xff0c;分别对输入密码到生成解密密钥、密码素材的生成过程以及文件数据的加密过程这三个流程进行分析#xff0c;并尝试找一些可利用的破绽。很遗憾#xff0c;由于水平有限#xff0c;目前也只是有个思路未能完全实现#xff0c…本文分析了ida81对输入密码的验证流程分别对输入密码到生成解密密钥、密码素材的生成过程以及文件数据的加密过程这三个流程进行分析并尝试找一些可利用的破绽。很遗憾由于水平有限目前也只是有个思路未能完全实现故分享出来抛砖引玉。 1. 密码验证算法 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 28 29 30 31 32 33 34 35 36 37 38 39 40 proc m4ZQu {password LZQjH} {     set ::maui::util::H6VeX     set ::maui::util::EL0BW [string repeat \\0 32]     package require tcltwofish     package require sha256     if {[string length $LZQjH]  0} {         error Unable to initialize encryption - missing essential data     }           //1.展开payload 获取相关参数     if {[binary scan $LZQjH Ia16a32a64a32a* times iv passwordKey encryptedKey payloadIVsHash encryptedPayloadIVs]  6} {         error Unable to initialize encryption - header missing or corrupt     }     //2.使用输入的密码计算sha256然后根据迭代次数times加密passwordkey最后计算结果的sha256     set iHcWR [a64bL $password $passwordKey $iv $times]           //3.取上一步中的后32字节     set BJvoG [string range [tcltwofish::decrypt $iHcWR $encryptedKey] 32 63]           //4.使用上一步中的结果作为key 循环times/64次 解密encryptedPayloadIVs     //这一步没有指定iv 实际过程为16个字节的0x00     for {set i 0} {$i $times} {incr i 64} {         set encryptedPayloadIVs [tcltwofish::decrypt $BJvoG $encryptedPayloadIVs]     }     //5.获取32字节后的数据     set ZQpQw [string range $encryptedPayloadIVs 32 end]     //6.计算上一步结果的sha256和预置的hash比对一致则密码正确     if {[sha2::sha256 -bin $ZQpQw] ! $payloadIVsHash} {         maui::d_RUj Invalid payload password     }           //7.使用第五步中的结果作为后续选取iv的数据     set ::maui::util::H6VeX $ZQpQw     //8.使用第三步中的结果作为密钥     set ::maui::util::EL0BW $BJvoG } 在这个过程中第一步需要的payload为4020字节这是已知的。意味着可以获取到第六步中正确的hash结果。 然而根据下面的帖子总结ida的密码选取字符为58个密码长度为14个字符这个测试结果是非常大的。破密行動: 以不尋常的角度破解 IDA Pro 偽隨機數 | DEVCORE 戴夫寇爾[下载] ida 8.1-资源下载-看雪-安全社区|安全招聘|kanxue.com 而我在i9-13900K测试从随机生成输入密码到第六步验证hash整个过程测试一个密码就需要0.045秒。所以手里有超算也不建议直接爆破。 2. 密码素材的生成过程 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 //根据输入密码生成payload proc yOZ7q {password {times 16000}} {         set ::maui::util::H6VeX         set ::maui::util::EL0BW [string repeat \\0 32]         package require tcltwofish         package require sha256                   set BJvoG [qA4kM 32]         set passwordKey [qA4kM 32]         set ZQpQw [qA4kM [expr {16 * 256}]]         set payloadIVsHash [sha2::sha256 -bin $ZQpQw]         set encryptedPayloadIVs [qA4kM 32]$ZQpQw         for {set i 0} {$i $times} {incr i 64} {             set encryptedPayloadIVs [tcltwofish::encrypt $BJvoG $encryptedPayloadIVs]         }         set iv [qA4kM 16]         set iHcWR [a64bL $password $passwordKey $iv $times]                   set encryptedKey [tcltwofish::encrypt $iHcWR [qA4kM 32]$BJvoG]         set LZQjH [binary format Ia16a32a64a32a* $times $iv $passwordKey $encryptedKey $payloadIVsHash $encryptedPayloadIVs]         set ::maui::util::H6VeX $ZQpQw         set ::maui::util::EL0BW $BJvoG                   return $LZQjH     } //生成随机数据  proc qA4kM {length} {         set YKL8w         if {[RLPut unix]} {             foreach xML4B {/dev/urandom /dev/random} {                 if {[catch {                     set WyLEv [open $xML4B r]                     fconfigure $WyLEv -translation binary                     set YKL8w [read $WyLEv $length]                     close $WyLEv                 }]} {                     catch {close $WyLEv}                 }  else  {                     break                 }             }         }  else  {                   }         if {[string length $YKL8w] ! $length} {             incr length -[string length $YKL8w]             while {$length  2} {                 append YKL8w [binary format S [expr {int([maui::util::rand] * 0x10000)}]]                 incr length -2             }             if {$length  0} {                 append YKL8w [binary format c [expr {int([maui::util::rand] * 0x100)}]]             }         }         return $YKL8w     }     proc rand {} {         if {[maui::util::RLPut windows] [info commands ::bitrock::secure::rand_s] ! } {             if {[catch {                 set r [::bitrock::secure::rand_s]             } V77Ls]} {                 maui::util::debug failed to call rand_s: $V77Ls                 set r [expr {rand()}]             }         } else {             set r [expr {rand()}]         }         return $r     } 继续分析输入密码的时生成payload的算法根据安装密码生成payload的过程中很多数据包括最后解密数据用的密钥BJvoG也是随机生成的如果这部分随机数生成流程能复现那也是可以破解的。仔细看随机数的生成已经排除了以前的LCG随机数生成算法换成了更安全的前后状态无影响的方式linux或unix下用/dev/random或者/dev/urandomwindows下调用rand_s。rand_s | Microsoft Learn 3. 文件数据加密流程 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 28 29 30 31 32 33 proc MmyBM {compressionAlgorithm command data} {         if {[catch {             //1.压缩数据             if {($compressionAlgorithm  lzma) || ($compressionAlgorithm  lzma-ultra) || ($compressionAlgorithm  lzham) || ($compressionAlgorithm  lzham-ultra)} {                 set data [eval [concat $command [list $data]]]             }  else  {                 set data [vfs::zip -mode compress -nowrap 1 $data]             }             //2.1 前面添加四个字节的长度然后末尾补全32的倍数             //2.2 前面添加32字节的随机数据             set data [qA4kM 32][UOijU $data 32]              //3.在H6VeX中截取16字节的iv             set PG2JA [expr {int([maui::util::rand] * 0x100)}]             set iv [string range $::maui::util::H6VeX [expr {$PG2JA * 16}] [expr {$PG2JA * 16  15}]]             //4.计算crc32             set hbA8n [format 0x%08x [expr {[zlib crc32 $data]  0xffffffff}]]                           //5.使用EL0BW中的数据作为key 加密             set data [tcltwofish::encrypt $::maui::util::EL0BW $data iv]                           //6. 前面填充四个字节的crc32以及选取iv的位置共加了五个字节             set YKL8w [binary format Ica* $hbA8n $PG2JA $data]         } V77Ls]} {             set ykaki $::errorCode             set qXoNi $::errorInfo             maui::util::debug encryptPayload: error encrypting: $V77Ls             error $V77Ls $qXoNi $ykaki         }         return $YKL8w     } 1 2 3 4 5 6 7 8 9 proc UOijU {data DeSRF} {     //1. 将四字节的长度添加在数据前     set data [binary format Ia* [string length $data] $data]     //2. 计算末尾添加padding的长度     set add [expr {($DeSRF - ([string length $data] % $DeSRF)) % $DeSRF}]     //3. 生成随机padding并附加在末尾     append data [qA4kM $add]     return $data } 再看看文件数据的加密流程。从上面的脚本中可以看到加密前的数据结果为 32字节随机数据4字节数据$data最后补全32字节的padding 然后使用twofish进行加密。而twofish是分组加密算法所以加密过程就是下面这样的 通过在前面添加32字节的随机数据猜测是为了避免明文攻击。因为很多文件前面都有固定字节的数据 比如sqlite3数据库的前16字节固定为SQLite format 3\x00在ECB模式下相同密钥加密任何sqlite3数据库的前16个字节都是一样的。所以衍生出了CBC模式在每个分组加密之前用iv或者上一个密文分组异或明文以产生不一样的数据。 然而这个例子中前面32个字节的随机数的使用却颇有点画蛇添足的味道。 首先它不能掩盖明文数据或者阻止明文攻击稍后提到其次因为这32字节的加密数据我们在后面进行密码分析的时候可以忽略了原本的初始iv初始iv来自哪里来自输入密码后进行的16000次twofish加密和256次twofish解密后生成的0x1000字节的encryptedPayloadIVs而现在却可以跳过了从而暴露了它的阿克琉斯之踵。根据密码算法现在解密每一段文件数据时只需要从第三个分组的数据开始解密即可输入iv来源于上一个分组的的密文即第二个分组输入的key对所有文件都是一样的也就是本次要分析出来的目标。 再回头说说有哪些明文从脚本可知加密的第三个分组前四个字节为加密数据的长度。在安装过程中会生成installbuilder_installer_{random}.log文件统计生成的文件数。 在hook解密函数的过程中也发现了同样数量的加密数据而这些数据中最小长度为0x000012a0最大为0x00040060。所以这1212个文件在相同的密钥解密之后的前四个字节肯定是00 0x xx xx。如果能将每段加密数据对应到具体的文件可能还会有更多的明文信息。 综上所述根据解密的tcl安装脚本共分析了三种破解思路 第一种根据输入密码爆破工作量太大PC上几乎不可能成功。 第二种随机数攻击。新版本的安装程序摒弃了LCG算法的使用使用了更加安全的随机数生成方式。 第三种根据部分明文信息和1212个样本数据爆破32字节密钥爆破的过程中每次验证只需要一次twofish解密16个字节即可。再配合密码差分分析可以减少一定的尝试次数。有熟悉angr的大佬也可以尝试一下形式化验证的方式去破解。 另外ida安装脚本中的twofish算法来源于GitHub - rageworx/libtwofish: TwoFish encryption library for modern C (dev.in progress) 但是作了一些修改。文末附带校正后的版本可以直接用。另外还有调试时用的frida脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞安网站建设步骤网站开发微盘

题意: 给你两个数字n和m;代表会有n个苹果掉落,m次可以移动的机会;有两棵树,开始你站在树1下面,一分钟只能移动一次,下面的数值代表在哪一颗树下会掉落苹果;问你在可移动的范围内&am…

免费动漫网站成都网站设计开发做得好

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 代码 class Solution {public int sear…

网站下载文件怎么做关键词优化举例

单例模式示例: public sealed class WindowService {//定义一个私有的静态全局变量来保存该类的唯一实例private static WindowService Service;//定义一个只读静态对象//且这个对象是在程序运行时创建的private static readonly object syncObject new object();…

网站空间多大合适wordpress+仿简书模板

文章目录 一、Gin框架介绍二、RESTful API三、Gin渲染1. HTML渲染2. 自定义模板函数3. 静态文件处理4. 使用模板继承5. 补充文件路径处理6. JSON渲染7. XML渲染8. YMAL渲染9. protobuf渲染 四、Gin获取各种方式传递过来的参数1、获取querystring参数2、获取form参数3、获取path…

电子商务网站建设 名词解释创建网站大约多少钱

一. 简介 JSDoc 3 是一个用于 JavaScript 的API文档生成器,类似于 Javadoc 或 phpDocumentor。可以将文档注释直接添加到源代码中。JSDoc 工具将扫描您的源代码并为您生成一个 HTML 文档网站。 JSDoc 是一种用于 JavaScript 代码文档注释的标记语言和工具。它不仅…

网站文字排版备案的网站建设书是什么

写入借鉴网址:好细的Vue安装与配置_vue配置-CSDN博客 下载Vue安装地址: Node.js — Download 查看是否安装成功: node -v npm -v 配置全局模式及缓存 结果通过: C:\Windows\system32>npm install vue -g added 20 packages …

私活网站开发多少钱福州seo网络推广

文章目录一、 简介二、 docker流程引擎部署2.1. jdk安装配置2.2. 下载打包好的tar包2.3. 上传tar包2.4. 在线安装Docker2.5. 检验安装是否成功三、tar转docker镜像3.1. 查看当前镜像3.2. 加载备份的flow-mysql.tar镜像文件3.3. 加载备份的flow-admin.tar镜像文件3.4. 加载备份的…

网页设计教程ppt封面图片技术优化seo

傅里叶级数和傅里叶变换 傅里叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。

福州做网站互联网公司有哪些集团网站建设费用

1、掌握SQL语言实现数据查询、定义、操纵、控制的关键字。 数据查询:使用SELECT关键字进行数据查询操作。数据定义:使用CREATE和ALTER关键字进行数据库、表、视图、索引等的定义操作。数据操纵:使用INSERT、DELETE和UPDATE关键字进行数据的插…

设计网站都有什么作用是什么原因保险网站大全

电脑自动关机功能在许多场景下非常实用,例如下载大文件后自动关机、长时间不使用电脑后自动关机以节省能源等。通过合理设置自动关机,可以提高电脑使用的便利性和节能效果。本文将介绍电脑自动关机怎么设置的三种方法,帮助您根据不同需求灵活…

网站设计需求两学一做登录网站

关于 Neting刚开始的时候是打算使用微软官方的 Yarp 库,实现一个 API 网关。目前写完了查看 Kubernetes Service 信息、创建 Route 和 Cluster 和绑定 Kubernetes Service。简单来说,就是完成了基础部分,配置路由和后端服务绑定,如…

重庆公司网站建设步骤谷歌wordpress优化

四次挥手 1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN1,其序列号为sequ(等于前已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN_WAIT_1&#xff08…

安全网站建设情况微信网页版文件传输助手

引言 C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第四篇,进行C语言顺序结构的专项练习,结合专题优质题目,带领读者从0开始&#xff0…

怎么样让网站正常解析老铁外链

责任链模式适用于需要将请求和处理解耦的场景,同时又需要动态地组织处理逻辑的场景。 通过使用责任链模式,可以实现请求的动态处理、灵活的扩展和简化的代码编写,提高系统的可维护性和可扩展性。 一、责任链入门 以下这是GPT生成的责任链代…

做网站的团队电子商务营销优势

什么是链表 离散,就是“分离的、散开的” 链表是什么样子的: 有限个节点离散分配 彼此间通过指针相连 除了首尾节点,每个节点都只有一个前驱节点和一个后继节点 首节点没有前驱结点,尾节点没有后继节点 基本概念术语&#xf…

医院网站建设 不足重庆设计网站

一. 简介 EF连接数据库有三种模式,分别是DBFirst、ModelFirst、CodeFirst,分别适用于不同的开发场景。 该章节,将主要介绍EF的DBFirst连接SQLServer数据库和MySql数据库两种操作方式 该模式在EF中出现的出现的最早,符合我们的传统…

ps做字幕模板下载网站网站每天更新的内容是内链吗

哈尔滨工业大学计算机专业创建于1956年,是中国最早的计算机专业之一。在1985年, 它又发展成计算机科学与工程系,并建立了计算机科学技术研究所。2000年,计算机科学与技术学院成立。同年,建立了软件学院,后经国家教育部、国家计委批…

电子商务网站开发费用调研报告图片制作在线生成器免费版

概述 在计算器科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序&…

jsp网站开发实例与发布网络营销热门岗位

![1.png](https://ucc.alicdn.com/pic/developer-ecology/5dffeef22eb74645a35be2f60b5e54c6.png) 作者 | 亦盏 前言 随着微服务的流行,越来越多公司使用了微服务框架,微服务以其高内聚、低耦合等特性,提供了更好的容错性,也…

做网站网武昌做网站多少钱

序言 对于GPT-4我只是一个门外汉,至于我为什么要了解screenshot to code,只是因为我想知道,在我不懂前端设计的情况下,能不能通过一些工具辅助自己做一些简单的前端界面设计。如果你想通过此文深刻了解GPT-4或者该开源项目&#…