• 第三届4.29“安恒杯”网络安全技术大赛初赛wirteup心得-MISC


    writeup地址:

    http://www.easyaq.org/info/infoLink?id=851212685&from=groupmessage&isappinstalled=0

    寂静之城

    http://blog.sina.com.cn/s/blog_bb4702370102w4oa.html

    一张图诠释我的内心

    image

    MISC 250 我爱Linux

    图片题,了解文件的格式很重要,,此外,这种数据格式是Python的序列化文件

    image

    FF D9是结尾,也就是说,后面都是序列化文件,其中 80 03最好不要包进去,把下面的数据保存,我这里保存为dump1.pickle文件了

    然后去读文件,得到结果:

    提取出来都是这个:(以u或U开头的字符串表示unicode字符串,Unicode是书写国际文本的标准方法。如果你想要用非英语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U)

    image一共30行这样的数据。每行有0-100个这样数据,

    打印坐标得到结果:

    image

    代码:

      1 import pickle
      2 
      3 with open('dump1.pickle', 'rb') as f:
      4 
      5     data = pickle.load(f)
      6 
      7 #for d in data:
      8 
      9 #    print(d)
     10 print len(data)
     11 new_data = list()
     12 
     13 for i in range(len(data)):
     14 
     15     tmp = [ ' ']*100
     16 
     17     new_data.append(tmp)
     18 
     19 for i, d in enumerate(data):
     20 
     21     for m in d:
     22 
     23         new_data[i][m[0]] = m[1]
     24         #print m;
     25 
     26 for i in new_data:
     27 
     28     print(''.join(i))
    我爱linux

    MISC 450 黑科技

    这题挺变态的,给图片,然后根据图片得到声音,读出flag,第一想找工具,很难;第二,想编程,不会,转一下答案说明:

    题目描述

    据说国外有黑科技可以通过振动还原声音,要不大家也试试?已知framerate=48000, nframes=1194240

    解题过程:

    下载附件,打开图片,如下:

    根据题目给的参数,和图片上的图形,一眼就知道是什么意思了,这是一段音频左右声道的音轨图,我们的意图是想让选手根据音轨图和参数编程还原出音频,flag就在音频中,出题灵感来自于《用Python做科学计算》中这本书中!就在实战篇第一章!

    下面是从音频生成图片的代码:

      1 import wave
      2 
      3 import pylab as pl
      4 
      5 import numpy as np
      6 
      7 # 打开WAV文档
      8 
      9 f = wave.open(r”flag.wav”, “rb”)
     10 
     11 # 读取格式信息
     12 
     13 # (nchannels, sampwidth, framerate, nframes, comptype, compname)
     14 
     15 params = f.getparams()
     16 
     17 nchannels, sampwidth, framerate, nframes = params[:4]
     18 
     19 print(params)
     20 
     21 # 读取波形数据
     22 
     23 str_data = f.readframes(nframes)
     24 
     25 f.close()
     26 
     27 #将波形数据转换为数组
     28 
     29 wave_data = np.fromstring(str_data, dtype=np.short)
     30 
     31 wave_data.shape = –1, 2
     32 
     33 wave_data = wave_data.T
     34 
     35 time = np.arange(0, nframes) * (1.0 / framerate)
     36 
     37 # 绘制波形
     38 
     39 pl.subplot(211)
     40 
     41 pl.plot(time, wave_data[0])
     42 
     43 pl.subplot(212)
     44 
     45 pl.plot(time, wave_data[1], c=“g”)
     46 
     47 pl.xlabel(“time (seconds)”)
     48 
     49 pl.show()
     50 
    黑科技。。

         不用改,可以直接用,将音频转化为图片。但是逆向回去,将图片转化为音频,难度确实有点大,首先要图像识别,得到每一个点的坐标,再根据给定的帧率,参数还原出大概的音频,听出flag。由于代码行数较多,这里不提供代码,有兴趣的同学可以自己查找相关资料,编写解题代码。

  • 相关阅读:
    Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化(转)
    Fragment(四)Fragment生命周期分析(转)
    android 修改listview item view 的方法(转)
    安卓中常用权限
    Java对数函数及Java对数运算
    Java中的字符串分割 .
    FragmentActivity与Fragment两者交互方法简介(转)
    windows下搭建vue开发环境+IIS部署
    Asp.net core WebApi 使用Swagger生成帮助页
    netCore2.0 Api 跨域(Cors)
  • 原文地址:https://www.cnblogs.com/puluotiya/p/5462114.html
Copyright © 2020-2023  润新知