【问题标题】:How to decode an unknown binary image coding?如何解码未知的二进制图像编码?
【发布时间】:2013-11-12 00:38:27
【问题描述】:

我有包含 SVG 图像的 XML 文件。图片是用 base64 编码的,可能是 gzip 压缩的(根据制造商的说法)。

内容是这样的

<Image ID="ID_IMG57" ElementID="ID_IMG57" PMD="svg" X="1281" Y="370" ZIndex="-2" 
      W="36" H="56" MirrorX="False" MirrorY="False" Angle="0" ViewID="" Locked="False" 
      PlacementAngle="-360" PlacementX="1" PlacementY="27" PlacementScale="0" 
      Format="image/svg+base64" IncludeRelevantModules="True">
   <ImageValue>7b0HYBxJliUmL23Ke39K9UrX4HShCIBgEyTYkEAQ7MGIzeaS7B1pRyMpqyqBymVWZV1mFkDM7Z28995777333nvvvfe6O51OJ/ff/z9cZmQBbPbOStrJniGAqsgfP358Hz8iHjeXF2l6WeRXT6p3n320vTvevb+7d+9hur33YLz74MH9g/Te/fEBPkvv3x8/eLj36d5H6VUxa+effbS7s/O7f5TO8+Ji3pq/3i3KZfPZR/O2XT26e/fq6mp8dW9c1Rd393Z2du5Sbx8dPV43eZpOy6yhhpPVSl969K4slm9jr+4+fPjwLn9LTfHj0bzOzz/7iP767KOd8d4e4fzpR+k14b8zvndw/+Dhg4/Su0ePqSl19G4XjXb39u8dUBv6Y3vvUxkavb/H78iY6Vv6c+/+eOfT+/u7H6VNe13mn33UtHX1Nn/04zv8HKby9zbT4NHuYXpelOWjZbXMDz8K+twb7+083Lu3q53uPhjfu0cdSae7u+P7e/t7B9Kn9+XX6nRVldfS8aoqli2R9R5N1ac0baPt3YPx/t7Op/dS6nH33u6DhyP0tn9vZ28/vTf+FGP9lD76lD56ePDp10TAjXp3fEA88uk9GTWBfbC78+mndtB7Ow8e7Mmg3Xdfq8vYmO8TEe/tj3bvjz+9f49Yl/rbf7j/6e6I+vqUxveARnyPqL53MCIafHpv/979r9l7m79rU7AfjZc4afchs98eU3GnB5RfEwgW/nm1bLeb4gf5o/3VO/3zPFsU5fWj47rIysMUfWxny+m8qh81bVa3hx8dPSmL6du6mM7b9fLi8V008ZA5GD+8d+/TfRGF3Yfj3V3m8vdCZnz/9uikbZ0tm/OqXnz2UV21WZtvbR88GD/Yubd//458WeLD3R3i9k/vH4xIqew9ePDw4M5HR/ci2D/YPThgKSVS7o7v7R7c2/t/Afbbew/Hnz4gQSEx2R0/uL+3t0f4PzT4Q6kd/T8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   </ImageValue>
   <ImageAttributes>
       <ImageAttribute Name="FileNameSVG" Value="Blickrichtung1.svg" Source="User" />
   </ImageAttributes>
</Image>

实际的图像在ImageValue 元素中。但我无法将其提取出来。我试过了

byte[] compressed = Convert.FromBase64String(image.Value);
using (GZipStream stream = new GZipStream(new MemoryStream(compressed),
                                                     CompressionMode.Decompress))
{
     const int size = 4096;
     byte[] buffer = new byte[size];
     using (MemoryStream memory = new MemoryStream())  {
         int count = 0;
         do {
             count = stream.Read(buffer, 0, size);
             if (count > 0) {
                 memory.Write(buffer, 0, count);
             }
         }
         while (count > 0)
         File.WriteAllBytes(@"Blickrichtung1.svg", memory.ToArray());
     }
}

但图像不显示任何内容。我如何确定这背后的格式?

我还尝试了仅使用 base64 解码并将数据保存到文件中。我希望我能在二进制文件中看到文件类型之类的东西,但没有运气。

【问题讨论】:

  • 解码后的数据看起来是加密的。您可能需要分析处理这些文件的软件,以了解它是如何提取图像的。
  • 这里也一样。我认为它是加密的。
  • 不太确定,大多数加密不会留下这样的填充尾巴。
  • @juergend - 你期待一个位图还是一堆 SVG 代码?
  • @HenkHolterman:结果应该是一个可以使用浏览器或图像应用程序查看的 SVG 图像文件。根据 XML 属性,XML 中的内容为 image/svg+base64 类型。

标签: c# svg base64 gzip reverse-engineering


【解决方案1】:

就像@BigBadaboom 怀疑的那样,它是一个放气的流。以下在svg 中生成可读的 XML。

    string svg;
    using (var stream = new DeflateStream(new MemoryStream(compressed),  
        CompressionMode.Decompress))
    {
        using (MemoryStream memory = new MemoryStream())
        {
            stream.CopyTo(memory);
            byte[] decompressed = memory.GetBuffer();
            svg = Encoding.UTF8.GetString(decompressed);  
        }     
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 2020-03-24
    • 2014-08-09
    • 2020-04-13
    • 1970-01-01
    • 2011-11-02
    • 2012-01-08
    • 1970-01-01
    相关资源
    最近更新 更多