当前位置: 首页 > news >正文

Hack The Box-Challenges-Misc-M0rsarchive

解压压缩包,里面是一张图片和一个新的zip文件

在这里插入图片描述

图片放大后的图案是----.

在这里插入图片描述

考虑到为莫斯密码,将其解密

在这里插入图片描述

密码为9,继续解压缩包

在这里插入图片描述

又是一张莫斯密码图加压缩包,写一段脚本去解密图片中的莫斯密码,并自动解压缩包

import re
import os
import sys
import zipfile
from PIL import Imagedef get_pass(morse_list):password = ""MORSE_CODE_DICT = {'.-': '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', '-----': '0', '.----': '1','..---': '2', '...--': '3', '....-': '4', '.....': '5','-....': '6', '--...': '7', '---..': '8', '----.': '9','-..-.': '/', '.-.-.-': '.', '-.--.-': ')', '..--..': '?','-.--.': '(', '-....-': '-', '--..--': ','}for morse in morse_list:password += MORSE_CODE_DICT.get(morse)return passworddef get_morse():fp = open('./pwd.png', 'rb')image = Image.open(fp)pixel = list(image.getdata())background = pixel[0]chars = []for i,v in enumerate(pixel):if v == background:chars.append(" ")else:chars.append("*")output =  "".join(chars)"""正则匹配测试建议:https://regex101.com/^  : asserts position at start of a line$  : asserts position at the end of a line\s : matches any whitespace character (equivalent to [\r\n\t\f\v ])*  : matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)\* : matches the character *{3}: matches the previous token exactly 3 times"""output = re.sub(r'^\s*', '', output)   #匹配开头的任意个空白字符,并替换为空output = re.sub(r'\s*$', '', output)   #匹配结尾的任意个空白字符,并替换为空output = re.sub(r'\*{3}', '-', output) #匹配3个*号,并替换为字符"-"output = re.sub(r'\*', '.', output)    #匹配单个*号,并替换为字符"."output = re.sub(r'\s{2,}', ' | ', output)  #(用于处理多行摩斯密码的情况)匹配两个以上空白字符,如果存在,就替换为"|"output = re.sub(r'\s', '', output)     #匹配空白字符,并替换为空output = output.split('|')fp.close()return outputdef unzip_file(path, number, password):zip_path = "flag_" + str(1000-number) + ".zip"fp = zipfile.ZipFile(zip_path)for file in fp.namelist():fp.extract(file,"./",pwd=password.encode("utf-8"))fp.close()def main():path = sys.path[0]            #当前脚本的运行目录for number in range(1,1001):print("Processing the "+ str(number) + "th archive.")#print(os.listdir('.'))   #显示当前目录下的所有文件morse_list = get_morse()password = get_pass(morse_list)unzip_file(path, number, password)path = "./flag"os.chdir(path)       #切换当前工作目录(进入flag子目录)fp = open('./flag', 'r')flag = fp.readlines()print(flag)fp.close()if __name__ == "__main__":main()

解压后查看最后一个压缩包中包含HTB的字段(很多种方法,这里就不赘述)

答案:HTB{D0_y0u_L1k3_m0r53??}

http://www.lryc.cn/news/294231.html

相关文章:

  • 验证码倒计时:用户界面的小细节,大智慧
  • Web后端:CSRF攻击及应对方法
  • 【手写数据库toadb】toadb表对象访问操作,存储管理抽象层软件架构设计思想应用
  • SpringBoot使用Rabbit详解含完整代码
  • 深度学习本科课程 实验3 网络优化
  • Eclipse 安装使用ABAPGit
  • std::mutex std::recursive_mutex std::shared_mutex
  • vscode的vetur文档格式化失效
  • idea 快捷键ctrl+shift+f失效的解决方案
  • C++面试:数据库的连接池管理
  • React Hook之钩子调用规则(不在循环、条件判断或者嵌套函数中调用)
  • 深入理解TCP网络协议(3)
  • JavaScript实现归并排序及vscode输出乱码解决
  • Redis面试题40
  • 2024年危险化学品经营单位安全管理人员证考试题库及危险化学品经营单位安全管理人员试题解析
  • Kafka相关内容复习
  • JVM之Java内存区域
  • 几个MySQL系统调优工具
  • Linux内核与驱动面试经典“小”问题集锦(2)
  • windws安装mysql详细步骤
  • Linux的库文件
  • JAVA Web 学习(五)Nginx、RPC、JWT
  • Python编程的十大神奇依赖库
  • Java类的继承
  • 【DC渗透系列】DC-4靶场
  • 开源软件全景解析:驱动技术创新与行业革新的力量
  • 目标检测及相关算法介绍
  • 跟着cherno手搓游戏引擎【20】混合(blend)
  • leetcode 3.无重复字符的最长字串(滑动窗口) (C++)DAY2
  • Android Build 依赖项