CTF杂项之隐写术、Crypto
2016-04-22 17:10
766 查看
一、图片隐写:
1、将图片里的数据转换成二维码:用linux下的信息提取工具Binwalk看一下: root@kali:~/Desktop# binwalk 图片名 DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 PNG image, 1000 x 562, 8-bit/color RGBA, non-interlaced 91 0x5B Zlib compressed data, compressed 3526 0xDC6 Zlib compressed data, best compression 1421307 0x15AFFB Zlib compressed data, default compression后面是Zlib压缩的数据,写个脚本解压一下: python提取脚本 from PIL import Image from zlib import * data = open('图片名','rb').read()[0x15AFFB:] data = decompress(data) img = Image.new('1', (25,25)) d = img.load() for n,i in enumerate(data): d[(n%25,n/25)] = int(i)*255 f = open('flag.png','wb') img.save(f)
二、音频、视频隐写术:
1、音频加密(1)在mp3中插入密文:
用MP3Stego进行加密解密:
加密:encode -E 加密文本 -P 密码 mp3文件
解密:decode -X -P 密码 mp3文件
三、Crypto及解密脚本:
1、培根加密:一段字符串用两种字体书写,然后按字体来决定其代表“A”还是“B”。#!/usr/bin/env python # -*- coding: utf-8 -*- #__author__ = 'tyomcat' # 培根解密代码 # 两种加密方式 import sys def peig1(m): basic1 = { 'AAAAA' : 'A', 'AAAAB' : 'B', 'AAABA' : 'C', 'AAABB' : 'D', 'AABAA' : 'E', 'AABAB' : 'F', 'AABBA' : 'G', 'AABBB' : 'H', 'ABAAA' : 'I', 'ABAAB' : 'J', 'ABABA' : 'K', 'ABABB' : 'L', 'ABBAB' : 'N', 'ABBBA' : 'O', 'ABBBB' : 'P', 'BAAAA' : 'Q', 'BAAAB' : 'R', 'BAABA' : 'S', 'BAABB' : 'T', 'BABAA' : 'U', 'BABAB' : 'V', 'BABBA' : 'W', 'BABBB' : 'X', 'BBAAA' : 'Y', 'BBAAB' : 'Z' } output = '' for i in range(0, len(m) - 4, 5): temp = m[i: i + 5] output += basic1[temp] return output def peig2(m): basic2 = { 'AAAAA' : 'A', 'AAAAB' : 'B', 'AAABA' : 'C', 'AAABB' : 'D', 'AABAA' : 'E', 'AABAB' : 'F', 'AABBA' : 'G', 'AABBB' : 'H', 'ABAAA' : 'I', 'ABAAA' : 'J', 'ABAAB' : 'K', 'ABABA' : 'L', 'ABABB' : 'M', 'ABBAA' : 'N', 'ABBAB' : 'O', 'ABBBA' : 'P', 'ABBBB' : 'Q', 'BAAAA' : 'R', 'BAAAB' : 'S', 'BAABA' : 'T', 'BAABB' : 'U', 'BAABB' : 'V', 'BABAA' : 'W', 'BABAB' : 'X', 'BABBA' : 'Y', 'BABBB' : 'Z' } output = '' for i in range(0, len(m) - 4, 5): temp = m[i: i + 5] output += basic2[temp] return output if __name__ == '__main__': m = raw_input("请输入密文:") mode = input("选择密文对应的方式 1 or 2:") if len(m)%5 == 0: l = [] k = [] for i in xrange(len(m)/5): l.append(m[:5]) m = m[5:] if mode == 1: for i in l: if i.isupper(): k.append(peig1(i)) else: i = i.upper() k.append(peig1(i)) elif mode == 2: for i in l: if i.isupper(): k.append(peig2(i)) else: i = i.upper() k.append(peig2(i)) flag = '' for i in k: flag+=i[0] print flag
2、凯撒加密的解密脚本:
#! /usr/bin/env python # coding=utf-8 #__author__ = 'tyomcat' def convert(c, key, start = 'a', n = 26): a = ord(start) offset = ((ord(c) - a + key)%n) return chr(a + offset) def caesarEncode(s, key): o = "" for c in s: if c.islower(): o+= convert(c, key, 'a') elif c.isupper(): o+= convert(c, key, 'A') else: o+= c return o def caesarDecode(s, key): return caesarEncode(s, -key) if __name__ == '__main__': for key in range(27): e='Jr1p0zr2VfPp' #写这里 d = caesarDecode(e, key) print d print '\n'
3、词频分析
#! /usr/bin/env python # -*- coding:utf-8 -*- # __author__ == "tyomcat" import operator str='' #词频分析的字符串 payloads = 'abcdefghijklmnopqrstuvwxyz' payloads = payloads.upper() # print payloads dists = {} for x in payloads: dists[x] = 0 # print x,dists[x] for s in str: dists[s] += 1 ans = '' res = sorted(dists.iteritems(), key=operator.itemgetter(1), reverse=True) for r in res: ans += r[0] print r print ans
4、word文件的宽窄字距加密,先将其整理成xml文件:
# /usr/bin/env python #coding: utf-8 #__author__ == "tyomcat" import xml.dom.minidom import sys reload(sys) sys.setdefaultencoding('utf-8') dom = xml.dom.minidom.parse('1.xml') #xml文件 print dom root = dom.documentElement str1 = '' bb = root.getElementsByTagName('w:spacing') b= bb[10] print b b1 = b.getAttribute("w:val") for k in range(10,len(bb)): if bb[k].getAttribute("w:val") == "2" : str1 += '1' * len(str(bb[k].parentNode.parentNode.getElementsByTagName('w:t')[0].childNodes[0].data).decode('utf-8')) elif bb[k].getAttribute("w:val") == "-2" : str1 += '0' * len(str(bb[k].parentNode.parentNode.getElementsByTagName('w:t')[0].childNodes[0].data).decode('utf-8')) print str1 print len(str1)
相关文章推荐
- Python中pip版本升级error:You are using pip version 7.1.2, however version 8.1.1 is available.
- 典型用户与到场景分析
- CSS3学习之radial-gradient(径向渐变)
- niginx相关命令及代理配置
- [置顶] mac下IDEA配置Spring框架+mybatis+maven配置管理的web项目过程详解
- Android移动端IM开发之应用层实现TCP长连接多路复用
- popen调用与命令行调用不一致的问题
- ListView不会填充完整个界面,想在下方继续添加控件的方法
- 【BZOJ1133】[POI2009]Kon【DP】
- [Drools]JAVA规则引擎 -- Drools
- iOS [UIApplcation sharedApplication].keyWindow.bounds 值为全0
- 依赖倒置原则(Dependence Inversion Principle)
- 面试官这样,面试就有戏了!
- C和C++程序的内存分配
- 【ITOO】---评教题库导入
- 服务器运维
- 附加数据库.sql
- useradd、userdel、passwd、groupadd、chgrp、chown、df、du、sort、wget
- NSNotification通知
- jeesite缓存问题