Need help from a zLIB expert for VB.NET function

偶尔善良 提交于 2019-12-11 18:08:04

问题


Need to know if I'm wasting my time on this. Using UltraID3lib which does not decompress frames but stores them in an array using an exception function. The flags used says they are compressed but not Encrypted.

If the bytes are indeed zLIB compressed and in the the correct format: How can I decompress them, given that fact I know absolutely nothing about zLIB and I'm just a part time coder who was drop on he's head as a child. (Please explain slowly).

The MP3 user-defined frame (TXXX) holds a small xml string. A fast (bad example) to get the byte array stored by UltraID3Lib:

UltraID3.Read(MP3FileName) 'actual file in folder

Dim byte1 As ID3v23EncryptedCompressedFrame
For Each byte1 In UltraID3.ID3v2Tag.Frames
    Dim str1 = byte1.FrameBytes
    Dim result1 = BytesToString2(str1)
    Stop 'lets see what we got
Next

This site says if it has 789C near the beginning its zLib compressed: http://www.xtremevbtalk.com/showthread.php?t=318843

I used these function2 to convert to hex: https://social.msdn.microsoft.com/Forums/vstudio/en-US/fa53ce74-fd53-4d2a-bc05-619fb9d32481/convert-byte-array-to-hex-string?forum=vbgeneral

example function 1 at start of article:

000B0789C6330377433D63534D575F3F737B570343767B02929CA2C4B2D4BCD2B29B6B31D376367989B9A976C519F9E5ACE1989452536FA6019B924C206968017A10CA461F2C6AA3FD58A61427E5E72AA42228A114666E6F88CD04772110D5923799

example function 2 at end of article:

000000B0789C6330377433D63534D575F3F737B570343767B02929CA2C4B2D4BCD2B29B6B301D376367989B9A976C519F9E50ACE1989452536FA60019B924C20696800017A10CA461F2C6AA30FD58A61427E5E72AA42228A114666E6F88CD047721100D5923799


回答1:


Your "example function 2" is a hex representation of a valid zlib stream, starting with the 789c, which decompresses to:

71F3-15-FOO58A77<trivevents><event><name>show Chart</name><time>10000000.000000</time></event><event><name>show once a</name><time>26700000.000000</time></event></trivevents>

However "example function 1" is a corrupted version of "example function 2", with, for some reason, several missing zero digits.

You can use the .NET DeflateStream class to decompress.



来源:https://stackoverflow.com/questions/26579680/need-help-from-a-zlib-expert-for-vb-net-function

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!