misc刷题

  • lsb隐写
    • 引用一段百度内容
      • LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化,每个像数可以携带3比特的信息。能够使用lsb隐写的图片格式只能是png或bmp,jpg无法实现lsb隐写
    • 一般这种隐写可以使用stegsovle破解
  • TTL图片隐写
    • TTL是IP V4的一个8位报头,正常情况下我们拿到的数据包时一段无意义的数字,我们可以首先把这些数据转化为二进制,并且要转化为八位的二进制
    • 为什么要转化成8位二进制?因为TTL隐写最多一次就是八位,想想看是不是。
    •   with open('C:/Users/brighten/Desktop/attachment.txt', 'r') as f:
          for line in f:
              num=int(line)
              ss=bin(num)
              while len(ss)<10:
                  ss=ss[:2]+'0'+ss[2:]
              print(ss)#把多个数据转化成八位的二进制 
    •  转换成为多个8位二进制数据后,会发现每个数据的后6位都是1,这也就是TTL隐写的秘密了。
    • 一个数据要实现TTL隐写就是把它转换成为一个8位二进制,然后按两位为一组,每组数据后面拼接6个1形成8位数据。比如
    • 4410=001011002
      加密结果:

      00 111111
      10 111111
      11 111111
      00 111111
    • 所以可以先看看破解隐写后是什么数据类型
    • count = 0
      str=""
      with open('C:/Users/brighten/Desktop/attachment.txt', 'r') as f:
          for line in f:
              num = int(line)
              ss = bin(num)
              while len(ss) < 10:
                  ss = ss[:2] + '0' + ss[2:]
              #print(ss)
              str=str+ss[2:4]
              count += 1
              if count == 4:
                  count = 0
                  sum=0
                  #print(str)
                  for i in range(len(str)):
                      if str[i]=='1':
                          sum=sum*2+1
                      else:
                          sum=sum*2
                  # print(sum)
                  print(chr(sum),end="")
                  str=""
    •  

    • 鄙人认为难点是在于要判断ttl破解后的数据包是什么类型,像我这里破解出来的是504b说明是一个zip压缩包,那就可以接下来继续操作,把数据封装成一个zip然后打开即可
    • import binascii
      with open('D:/desktop/ctf题目/net.txt','r') as fp:
          a=fp.readlines()
          p=[]
          for x in range(len(a)):
              p.append(int(a[x]))
          s=''
          for i in p:
              if(i==63):
                  b='00'
              elif(i==127):
                  b='01'
              elif(i==191):
                  b='10'
              else:
                  b='11'
              s+=b
      flag=''
      for i in range(0,len(s),8):
          flag+=chr(int(s[i:i+8],2))
      flag=binascii.unhexlify(flag)
      wp = open('D:/desktop/ctf题目/ttl_solve.zip','wb')
      wp.write(flag)
      wp.close()
  • 认识到明文攻击
    •   引用自博主 https://blog.csdn.net/qq_52974719/article/details/117084427
    • 适合明文攻击的情况,得到了泄露的压缩包,还有一个加密的压缩包,且两个压缩包的CRC32相同
    • 这种情况直接用ARPR明文破解即可
  •  outguess解码格式(图片)
    •   outguess -k 密码 -r 图片 要输出的文件格式
  • 常见的文件分离指令
    • binwalk -e 文件(绝对路径,取决于自己的终端打开位置)
    • foremost -T 文件(绝对路径,取决于自己的终端打开位置)
  •  

     

热门相关:骑士归来