首页 > 其他分享 >文件隐写

文件隐写

时间:2023-04-23 21:37:08浏览次数:43  
标签:bin 文件 base64 字符 隐写 var line

零宽度字符隐写

零宽度字符是一些不可见、不可打印的字符,在页面中用于调整字符的显示格式。零宽度字符本质上是unicode编码。

零宽度字符隐写:需要加密的内容转换为二进制,然后将二进制转换成一系列的零宽度字符,这样加密的内容就被隐藏了(普通文本编辑器不显示零宽度字符)。

常见零宽度字符

  U+200B:零宽度空格

  U+200C:零宽度非连接符

  U+200D:零宽度非连接符

  U+200E:从左到右书写标记

  U+200F:从右到左书写标记

[UTCTF2020]zero

用Windows自带的文件编辑器打开

  

 再用vim打开,实际上文件包含了许多零宽度字符

  

 把文本复制到http://330k.github.io/misc_tools/unicode_steganography.html,点击“decode”,即可得到加密的信息。

 

EXIF信息隐写

EXIF描述图片的属性、结构、拍摄参数等信息

[WUSTCTF2020]find_me

查看.jpg文件属性,备注显示盲文

  

使用cyberchef将盲文(Braille)翻译成英文

 

base64隐写

base64隐写的原理

  base64编码过程中,为了使字符串的二进制位数是6的倍数,添加了若干位的0,而这些0在解码过程中会被丢弃,不会影响解码的正确性。

  把要隐藏的信息覆盖掉这些不影响解码过程的“0”,就实现了base64的隐写。

提取出隐写的内容(与base64解码的过程一样):对于一个base64编码,去掉等号,根据base64转换表把每个字符表示成6位二进制形式;得到的二进制数据每次取8位(一个字节大小),剩下小于8位的就是隐写的内容。

[ACTF新生赛2020]base64隐写

  

#!/usr/bin/env python3
base64_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"         #base64编码表
 
with open("ComeOn!.txt", 'r') as f:
    var_base64_steg = ''
    line = f.readline()
    while line:
        line = line.split('\n')[0]        #取每一行,去掉换行符
        while line[-1] == '=':          #去掉等号
            line = line[:-1]
        var_base64 = ''
        for var in line:
            var_bin = bin(base64_list.index(var))[2:]        #每个字符对应编码表中的数字,转为二进制,去掉‘0x’前缀
            if len(var_bin) != 6:
                var_bin = '0' * (6 - len(var_bin)) + var_bin   #如果长度不足6位,在前面补‘0’
            var_base64 += var_bin           #拼接这一行所有字符的二进制数
        if len(var_base64) % 8 != 0:        #如果这一行的二进制数不能被8整除,那么剩余的二进制数就是隐写的内容
            var_base64_steg += var_base64[-(len(var_base64) % 8):]
        line = f.readline()

    print(var_base64_steg)     ##隐写在base64中的二进制

    message = ''
    for i in range(0, len(var_base64_steg), 8):
        if int(var_base64_steg[i:i+8], 2):
            message += chr(int(var_base64_steg[i:i+8], 2))
    print(message)

 

GIF隐写

把信息隐藏在一个GIF图片中的某一帧中。

使用Stegsolve->Frame Browser查看每一帧的画面 

   

 

二维码取反色

二维码黑白颜色对调,需要对其进行反色处理。

windows自带画图工具

  

docx文档隐写

  docx文档本质上是一个zip压缩文件,把后缀名改成.zip解压后在word文件夹中即可查看到隐藏的文件

 

doc文档隐写

  隐藏文字:选中文字右键->字体

    

  白色字体:字体颜色与背景色一致,需要选中文字修改成其他颜色查看隐藏文字

 

标签:bin,文件,base64,字符,隐写,var,line
From: https://www.cnblogs.com/jimmy-hwang/p/17340614.html

相关文章

  • SpringBoot 文件打包zip,浏览器下载出去
    本地文件打包@GetMapping("/downloadZip")publicvoiddownloadZip(HttpServletResponseresponse)throwsIOException{try{response.setContentType("application/octet-stream");response.setHeader("......
  • Django4全栈进阶之路8 STATIC静态文件路径设置、MEDIA媒体文件路径设置
     在Django4中,可以在settings.py文件中设置STATICFILES_DIRS来指定应用程序静态文件所在的文件夹路径,设置STATIC_ROOT来指定收集所有应用程序静态文件的目标文件夹路径。例如:#settings.pySTATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),]STATIC_ROO......
  • 本地Typora文件及图片上传博客云
    本地Typora文件及图片上传博客云1.Typora+cnblog图片自动上传一段废话:使用博客园一定会遇到一个操蛋的问题,就是本地Typora编辑的markdown文本,直接粘贴到博客园发布,图片无法显示。这是因为图片是本地路径,不是网络路径。问题能通过将图片上传到三方图床然后在markdown文件中......
  • FileSystemWatcher 局域网中大文件的内部传输共享和处理方案
    在不使用其他软件的情况下共享,且自动清理。1、在服务器建了个临时文件夹共享,并且设置只可写入和读取,不可执行(删除)2、写服务源码附上usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;usingS......
  • mac:使用VLC播放纯视频YUV文件和纯音频pcm文件(命令行)
    一、使用vlc播放yuv有时候,我们需要播放一些纯视频文件,判断YUV数据是否可用。举个例子,我们使用命令行,播放/Users/domain/Desktop目录下的:test\_yuv420p\_320x180.yuv文件,命令如下:$/Applications/VLC.app/Contents/MacOS/VLC--demuxrawvideo--rawvid-fps15--rawvid-width320......
  • centos7修改服务文件描述符限制
    在CentOS7中,系统默认的文件描述符限制是1024。如果你需要增加文件描述符限制,可以按照以下步骤进行操作:打开/etc/security/limits.conf文件,并添加以下内容:*softnofile65536*hardnofile65536这将在系统级别上将文件描述符限制增加到65536。打开/etc/systemd/sys......
  • 002.文件、目录所在组
    当某个用户创建了一个文件后,这个文件的所在组就是这个用户所在的组。 基本指令’查看文件、目录所在组(fox在monster)应用'使用fox来创建一个文件,卡卡该文件属于哪个组?ls-ahl结果:-rw-r--r--. 1fox monster 0Apr2302:52ok.txt '修改文件所在组语法chgrp......
  • B/S实现文件上传下载功能实例解析
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • 纯c++删除自身目录,和该目录下的所有内容______以及创建文件夹
    头文件.h#ifndefAUTODELETEADDFOLDER_H#defineAUTODELETEADDFOLDER_H#include<unistd.h>#include<stdlib.h>#include<errno.h>#include<dirent.h>#include<string.h>#include<iostream>#include<sys/stat.h>#inclu......
  • vue转换js文件 require js
    1define和require方式 不同点define用来定义一个模块的,requireconfig文件配置后才行require 加载模块define来定义模块,还是通过require来加载模块究竟什么时候去使用2TaskExcutionToday文件如何转换compoment方式 ......