【问题标题】:Extracting hidden files out from an image using Java使用Java从图像中提取隐藏文件
【发布时间】:2015-04-05 06:53:42
【问题描述】:

我们可以通过以下方式将 rar/zip 文件隐藏在图像中。这个概念被称为隐写术。

假设我想在图像中隐藏一个 rar 文件,我将在 Windows 命令提示符下编写此命令

copy /b image.jpg+as.zip hidden.jpg

现在要取回内容,我们可以使用 Winrar/7zip 或任何其他实用程序打开 hidden.jpg,它将显示其所有内容

现在要读取一个 zip 文件,我正在使用这个 java 代码

try{
            File file=new File(name);
            ZipFile zipFile=new ZipFile(file);
            Enumeration<? extends ZipEntry>enumeration=zipFile.entries();

            System.out.println("Listing Entries in the zipfile");
            while(enumeration.hasMoreElements()){
                Object key=enumeration.nextElement();
                System.out.println(key.toString()+":"+zipFile.getEntry(key.toString()));
            }

            zipFile.close();
        }catch(Exception e){
            System.out.println(e.toString());
        }

此代码适用于普通 zip 文件/但是当我尝试使用此代码打开“hidden.jpg”文件时会导致错误。我也用 Apache Common Compress Library 进行了同样的测试。谁能指出我如何在 Java 中做到这一点?

我相信这是可以做到的,因为我们可以使用 WinRar 等工具查看隐藏文件

【问题讨论】:

    标签: java cryptography hidden-files


    【解决方案1】:

    这不是真正的隐写术,因为您没有在图像中隐藏任何内容。您只是在文件末尾添加数据,如果以任何方式编辑图像,附加数据都会丢失。

    一些(不是所有)归档程序可以找到“隐藏”数据的唯一原因是因为他们在整个文件中搜索可能的归档文件。正常的库例程没有。他们希望存档从头开始。

    所以如果你想打开存档,你必须找到起始位置。这可以通过打开图像文件并确定其大小来实现,或者只是自己搜索存档的开头。

    但正如我所说,这不是隐写术,图像中没有隐藏任何内容。

    另外,stenography 是写速写,steganography 是把数据隐藏在另一个里面。

    【讨论】:

    • 隐写术是以一种隐蔽的方式隐藏数据,这样一开始就有人不知道任何东西是隐藏的。在文件末尾附加数据仍然被认为是隐写术,即使它不会欺骗一些更有经验的人。还有许多隐写算法,如果载体文件被编辑和/或重新保存,隐藏的数据可能会受到失真。将图像保存为 jpeg 的像素 lsb 替换就是一个很好的例子。仍然是隐写术,只是不够健壮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2011-12-02
    • 2021-07-22
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多