在图像中查找隐藏文件(视频文件) - java

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center。

7年前关闭。

我有一个文件,它是JPEG格式的图像。我想找出它是否具有隐藏的内容(视频文件)。在这种特定情况下,我可以尝试找到隐藏的内容(视频文件)吗?我们可以假设它不是一种将数据隐藏到图像本身中的方法,即它不会更改图像数据本身的任何位。

我昨天问过的相关问题已关闭:How to find hidden files inside image files (Jpg/Gif/Png)

隐藏的文件可以在图像的前面或后面。我愿意逐位检查图像或其他任何可能提供很高准确性的方法,即使不是100%

参考方案

如果您有一个被标识为JPEG的文件,则隐藏文件不能在其前面。否则,该其他文件将代替JPEG被识别。因此,您要做的就是找到JPEG的结尾。如果结束于文件末尾,则说明您没有隐藏文件。

这是一种找到JPEG结束位置的方式(由EOI标签表示-图像结尾,0xffd9)。请注意,在JPEG中可以包含JPEG,因此要使其更健壮,还必须处理SOI标签-图像开始(0xffd8)。

import sys

data = open(sys.argv[1]).read()

eoi_start = False
for i, c in enumerate(data):
    if ord(c) == 0xff:
        eoi_start = True
    elif ord(c) == 0xd9 and eoi_start:
        print 'JPEG ends at byte %d' % (i + 1)
        break
    else:
        eoi_start = False

print 'Total size: %d' % len(data)

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:从类中查找项目名称 - java

仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…