deflate数据解压zlib
Deflate data decompression zlib
我正在使用 zlib,在解压缩时遇到了一些问题。我尝试解压缩到达 "inflate" 函数但 "inflate" returns me -3 的数据包。 00 00 00 ff ff
的组合告诉我数据是通过 deflate
算法压缩的。所以我尝试使用解压缩器参数 MAX_WBITS
、-MAX_WBITS
、30
来解压缩数据,但它没有帮助。我可以解决这个问题吗?
数据示例:
ab 17 03 01 0c 39 6d 77 78 bd 1b 14 2e 6e c5 ff
51 8f 85 cc 76 30 52 98 ed 10 aa 73 ae 5b a4 df
97 af 90 15 44 c3 74 10 de e6 1b 63 f2 ee a5 31
24 c6 01 4b 18 a9 aa 6f 95 5f 3a c0 85 ed 62 48
07 a9 0c d0 3e 97 d1 7e ca 59 42 15 47 c7 9a 75
5a 4e 12 06 08 dc 22 45 89 c3 45 c0 fc ee 74 f3
8b 76 26 c9 33 e5 5a dc d6 68 2c 11 14 bd b4 51
cd 54 92 68 82 f1 ac aa bb 94 e3 91 9b 3c 77 1d
e7 59 d7 e0 b9 e2 71 bb 05 f2 5c 9e 86 0e 22 b0
76 7f 91 88 85 1b 53 b2 0c 0c be d4 6d 69 6e 41
d6 61 c4 1a 1b d9 18 a0 24 48 1b c9 71 57 e2 d8
53 40 95 05 d0 12 97 99 a9 42 f3 d7 09 56 49 96
be e3 dd fa d4 1c 07 71 f4 dc 5e 18 a0 f4 e4 eb
5a 58 32 86 e3 7b 42 d7 39 71 85 42 74 5a 6b 0a
5f bb 89 dd 6d f1 fd ac f1 ba 92 3d e0 3f e6 48
5a 80 b5 99 27 84 bb 31 0b e5 7e 71 e6 a6 4b 4e
72 67 16 dd 45 2a 2e a2 bf c7 f4 66 de a4 5c cb
9d 30 4c fb 34 44 3e 22 a6 0a 56 62 9a 71 df 94
79 f1 53 88 59 85 73 65 55 6b 48 69 26 0d e7 2e
1d 23 7b ad 85 47 51 d4 c1 a4 a6 b0 f1 06 c8 f0
03 37 5f 00 9b 92 09 c4 89 83 9d 96 66 88 d0 f6
c5 e1 d0 f6 c2 5a ce da b0 16 2e c3 b2 7f f1 38
ac 7e 8c 8c 66 86 c2 14 65 24 e4 d2 70 73 58 46
80 b9 3c a4 4d f7 1c b5 e2 7a 7f e5 d4 0b 8b 08
26 6c 8c c1 3d 85 dc 0f 1e 3b cf da bf e2 1c 81
63 03 94 b7 14 11 56 87 dd c1 2d eb 4f 3f 0a fe
da 59 ad 89 60 eb 85 ce 6b 85 8f 33 da 33 11 fc
8f a4 f0 a2 85 a4 c0 ba 6e 57 9d 24 d5 df 97 61
24 8c 53 00 fd f5 c2 2f 7c a9 ec d2 42 3d 0c 81
4a 5e ba a5 1a 24 b9 7f 8a df 88 8d cd f0 45 f0
37 75 c2 a9 03 3a 5a c3 ed 2c b5 2d f4 43 81 4e
c4 6f 18 f0 62 74 e4 c0 5a fa 1c 66 55 92 87 ca
c5 a5 ac f2 46 4c 75 49 3b 3e 43 29 88 ee 9d 1f
79 fe 61 37 24 66 2a 8f 1a 3c e0 3c c1 cc bb f5
6a f9 54 49 19 52 45 43 a8 18 1c c2 f3 25 e3 73
a6 4d f7 63 a8 b8 2c 69 fe 65 af 2a 4e e9 6d 62
e5 86 2e 3c ae 2d 24 0d 71 f4 f7 1f eb 3d 6c 7e
ee e5 16 e6 a7 e6 74 bf 89 e5 6a f0 97 04 e5 3d
a7 1d 15 ad 9b 00 21 aa f2 44 93 18 49 c9 1a 30
ba 3d e4 99 21 86 b2 2c 43 64 62 94 58 1a 3f 13
bf a5 2d 29 3f 63 66 aa e2 2f e1 86 62 a2 8f 3d
05 4c b9 99 21 33 ff 10 9c 28 ef 4e 33 de b6 b0
86 e7 53 88 d0 f5 10 6f 39 2e ab f5 d2 fa 05 41
b9 d9 01 ed 98 01 3a 3b 07 b0 e9 f5 0e 90 c2 84
94 80 e9 f4 03 33 1c ea 10 37 68 7c 2b 29 2d 4c
d0 e2 ea 21 c4 ef 58 a1 bb a3 81 07 77 f5 3e 2c
a2 89 af db 08 47 ba d3 17 2e 1c b3 92 9c c4 de
c0 27 bd 24 74 29 b3 69 1e 60 78 13 e0 49 c9 7a
df 83 c9 86 cc 10 ce 2f d3 80 6d d9 61 f7 9b ee
90 7f e3 b4 66 7a 66 8f 0b 1a 9e b9 6d 51 9c d6
af 59 af 9f b9 9f 78 35 63 5f 03 4a d3 89 f7 71
ab 23 52 e8 2b 91 53 7c 01 2e fd 59 25 e3 99 b0
21 74 a6 dd 78 bb 48 5e 11 1e 9a 8d 93 a6 a0 a1
6c 72 eb 73 af 44 76 11 3e a5 8c 02 42 9b 72 40
52 7b 1a 66 e8 0f 6c 39 42 bf 14 04 2b 70 72 8f
b2 43 9b 56 7e 43 1d bc 5d 78 60 ab b4 94 a6 f2
00 fa 28 cd 7a 1e cf 8c f5 da 82 19 ba 11 4f 74
0e c0 00 59 0b 60 a3 56 08 e0 6b 72 3b 33 f2 bf
9a ae 76 80 a9 f4 d8 6b ef eb 52 a2 ca 20 a1 5e
26 6f 69 40 4a da 91 e4 7b 10 42 52 6e 63 13 91
68 6b 36 61 20 a9 6d e5 e5 04 50 00 eb b3 6d 10
9e f5 47 36 ca c3 d2 76 23 56 71 13 4b b2 7c 5b
b2 89 db 28 92 70 e1 f4 f5 b3 2e 9d 84 f5 87 3f
c6 05 0b b2 c9 99 cc 5b c0 b6 cc 8b 3d 5d eb 01
8f 7e 69 ac 95 bc fb 81 58 d5 01 76 a2 10 98 05
bb 7a 84 73 80 c9 61 7a 6d ce d0 db e2 0f 8c 55
73 ff ff 9c 20 3a 39 bb a9 3a df ab 35 a6 ae fb
48 45 1c 5a 5e 7b 4b f9 39 f2 51 08 59 cc a4 8f
59 ed d6 c9 e1 91 62 ec 5e 65 73 42 d7 ac 9b 67
1b 43 41 e4 1b 93 86 2e 3d af a4 83 9b f6 32 7b
bc e8 e4 60 3a 47 8e 3e 13 7d d3 74 1b 83 86 8e
c4 01 70 21 a5 d5 5c f7 22 54 e0 af be 2c c1 66
03 a0 fb 25 9c b1 90 dd 9d 78 a8 86 34 0a ee 83
d1 63 30 6e 6f de 7d 52 e6 28 ac e3 09 ab 16 f9
3b 1e fa 9f 28 dc f5 e4 bf 0f 1f 3a fc ec 60 b5
6c 7b 80 de 08 0b c5 fe b7 46 d1 23 f0 74 b5 ca
c3 85 77 76 1a 19 65 0c ec 0d a7 c5 61 ef fa 5a
7b f6 d9 14 20 a7 1b 07 f2 0f 3f 5f a8 89 17 be
78 e8 5a 1b 7c 5e 26 18 af e4 43 1d 54 d0 77 56
c5 dc 19 16 3e 1d 08 58 8e 65 a1 87 c7 0a af b8
b8 62 e9 f0 56 d3 f9 56 90 07 db 34 f6 71 78 73
e9 10 14 e6 ee 8c 59 a4 97 a5 dd f3 6a 50 c6 9f
d9 a0 d8 0c e4 12 f2 ed 2d 7e 92 8e 51 6b 7b b7
36 53 33 76 a5 ab 85 95 f9 5e 0d 5f 64 65 00 07
21 eb d0 ea c2 72 7d ab 91 b5 87 91 b8 ab 24 f6
2b 7f 16 fc 42 00 00 00 00 ff ff
代码示例:
__int32 ZLIB::Decoder(unsigned __int8* PDU, unsigned __int32 size, unsigned __int32 out_buf_size, unsigned __int8 * out_b, z_stream_s & stream, bool & IsInit, unsigned __int32 mode, __int32 max_w_bits)
{
if (IsDllLoaded == false || PDU == nullptr) { return 0; }//if Zlib DLL was not loaded, or incoming packet is not cTCP
if ( !IsInit )
{
SecureZeroMemory(&stream, sizeof(stream));
auto res = InitZDecompressor( &stream, max_w_bits , "1.2.11", sizeof(z_stream_s));//initialize only one time
IsInit = true;
}
stream.next_in = PDU;
stream.avail_in = size;
stream.next_out = out_b;
stream.avail_out = out_buf_size;
stream.total_out = 0;
__int32 ret = 0;
while ( stream.avail_in && ret == 0 )
{
ret = ZDecompressor(&stream, mode);
}
return ret;
}
void ZLIB::ResetDecompessor(bool & isInit, z_stream_s & stream)
{
if (isInit)
{
ResetZDecompressor(&stream);
isInit = false;
memset(&stream, 0 ,sizeof(stream));
}
}
您的假设不正确。那不是放气压缩流。
我正在使用 zlib,在解压缩时遇到了一些问题。我尝试解压缩到达 "inflate" 函数但 "inflate" returns me -3 的数据包。 00 00 00 ff ff
的组合告诉我数据是通过 deflate
算法压缩的。所以我尝试使用解压缩器参数 MAX_WBITS
、-MAX_WBITS
、30
来解压缩数据,但它没有帮助。我可以解决这个问题吗?
数据示例:
ab 17 03 01 0c 39 6d 77 78 bd 1b 14 2e 6e c5 ff
51 8f 85 cc 76 30 52 98 ed 10 aa 73 ae 5b a4 df
97 af 90 15 44 c3 74 10 de e6 1b 63 f2 ee a5 31
24 c6 01 4b 18 a9 aa 6f 95 5f 3a c0 85 ed 62 48
07 a9 0c d0 3e 97 d1 7e ca 59 42 15 47 c7 9a 75
5a 4e 12 06 08 dc 22 45 89 c3 45 c0 fc ee 74 f3
8b 76 26 c9 33 e5 5a dc d6 68 2c 11 14 bd b4 51
cd 54 92 68 82 f1 ac aa bb 94 e3 91 9b 3c 77 1d
e7 59 d7 e0 b9 e2 71 bb 05 f2 5c 9e 86 0e 22 b0
76 7f 91 88 85 1b 53 b2 0c 0c be d4 6d 69 6e 41
d6 61 c4 1a 1b d9 18 a0 24 48 1b c9 71 57 e2 d8
53 40 95 05 d0 12 97 99 a9 42 f3 d7 09 56 49 96
be e3 dd fa d4 1c 07 71 f4 dc 5e 18 a0 f4 e4 eb
5a 58 32 86 e3 7b 42 d7 39 71 85 42 74 5a 6b 0a
5f bb 89 dd 6d f1 fd ac f1 ba 92 3d e0 3f e6 48
5a 80 b5 99 27 84 bb 31 0b e5 7e 71 e6 a6 4b 4e
72 67 16 dd 45 2a 2e a2 bf c7 f4 66 de a4 5c cb
9d 30 4c fb 34 44 3e 22 a6 0a 56 62 9a 71 df 94
79 f1 53 88 59 85 73 65 55 6b 48 69 26 0d e7 2e
1d 23 7b ad 85 47 51 d4 c1 a4 a6 b0 f1 06 c8 f0
03 37 5f 00 9b 92 09 c4 89 83 9d 96 66 88 d0 f6
c5 e1 d0 f6 c2 5a ce da b0 16 2e c3 b2 7f f1 38
ac 7e 8c 8c 66 86 c2 14 65 24 e4 d2 70 73 58 46
80 b9 3c a4 4d f7 1c b5 e2 7a 7f e5 d4 0b 8b 08
26 6c 8c c1 3d 85 dc 0f 1e 3b cf da bf e2 1c 81
63 03 94 b7 14 11 56 87 dd c1 2d eb 4f 3f 0a fe
da 59 ad 89 60 eb 85 ce 6b 85 8f 33 da 33 11 fc
8f a4 f0 a2 85 a4 c0 ba 6e 57 9d 24 d5 df 97 61
24 8c 53 00 fd f5 c2 2f 7c a9 ec d2 42 3d 0c 81
4a 5e ba a5 1a 24 b9 7f 8a df 88 8d cd f0 45 f0
37 75 c2 a9 03 3a 5a c3 ed 2c b5 2d f4 43 81 4e
c4 6f 18 f0 62 74 e4 c0 5a fa 1c 66 55 92 87 ca
c5 a5 ac f2 46 4c 75 49 3b 3e 43 29 88 ee 9d 1f
79 fe 61 37 24 66 2a 8f 1a 3c e0 3c c1 cc bb f5
6a f9 54 49 19 52 45 43 a8 18 1c c2 f3 25 e3 73
a6 4d f7 63 a8 b8 2c 69 fe 65 af 2a 4e e9 6d 62
e5 86 2e 3c ae 2d 24 0d 71 f4 f7 1f eb 3d 6c 7e
ee e5 16 e6 a7 e6 74 bf 89 e5 6a f0 97 04 e5 3d
a7 1d 15 ad 9b 00 21 aa f2 44 93 18 49 c9 1a 30
ba 3d e4 99 21 86 b2 2c 43 64 62 94 58 1a 3f 13
bf a5 2d 29 3f 63 66 aa e2 2f e1 86 62 a2 8f 3d
05 4c b9 99 21 33 ff 10 9c 28 ef 4e 33 de b6 b0
86 e7 53 88 d0 f5 10 6f 39 2e ab f5 d2 fa 05 41
b9 d9 01 ed 98 01 3a 3b 07 b0 e9 f5 0e 90 c2 84
94 80 e9 f4 03 33 1c ea 10 37 68 7c 2b 29 2d 4c
d0 e2 ea 21 c4 ef 58 a1 bb a3 81 07 77 f5 3e 2c
a2 89 af db 08 47 ba d3 17 2e 1c b3 92 9c c4 de
c0 27 bd 24 74 29 b3 69 1e 60 78 13 e0 49 c9 7a
df 83 c9 86 cc 10 ce 2f d3 80 6d d9 61 f7 9b ee
90 7f e3 b4 66 7a 66 8f 0b 1a 9e b9 6d 51 9c d6
af 59 af 9f b9 9f 78 35 63 5f 03 4a d3 89 f7 71
ab 23 52 e8 2b 91 53 7c 01 2e fd 59 25 e3 99 b0
21 74 a6 dd 78 bb 48 5e 11 1e 9a 8d 93 a6 a0 a1
6c 72 eb 73 af 44 76 11 3e a5 8c 02 42 9b 72 40
52 7b 1a 66 e8 0f 6c 39 42 bf 14 04 2b 70 72 8f
b2 43 9b 56 7e 43 1d bc 5d 78 60 ab b4 94 a6 f2
00 fa 28 cd 7a 1e cf 8c f5 da 82 19 ba 11 4f 74
0e c0 00 59 0b 60 a3 56 08 e0 6b 72 3b 33 f2 bf
9a ae 76 80 a9 f4 d8 6b ef eb 52 a2 ca 20 a1 5e
26 6f 69 40 4a da 91 e4 7b 10 42 52 6e 63 13 91
68 6b 36 61 20 a9 6d e5 e5 04 50 00 eb b3 6d 10
9e f5 47 36 ca c3 d2 76 23 56 71 13 4b b2 7c 5b
b2 89 db 28 92 70 e1 f4 f5 b3 2e 9d 84 f5 87 3f
c6 05 0b b2 c9 99 cc 5b c0 b6 cc 8b 3d 5d eb 01
8f 7e 69 ac 95 bc fb 81 58 d5 01 76 a2 10 98 05
bb 7a 84 73 80 c9 61 7a 6d ce d0 db e2 0f 8c 55
73 ff ff 9c 20 3a 39 bb a9 3a df ab 35 a6 ae fb
48 45 1c 5a 5e 7b 4b f9 39 f2 51 08 59 cc a4 8f
59 ed d6 c9 e1 91 62 ec 5e 65 73 42 d7 ac 9b 67
1b 43 41 e4 1b 93 86 2e 3d af a4 83 9b f6 32 7b
bc e8 e4 60 3a 47 8e 3e 13 7d d3 74 1b 83 86 8e
c4 01 70 21 a5 d5 5c f7 22 54 e0 af be 2c c1 66
03 a0 fb 25 9c b1 90 dd 9d 78 a8 86 34 0a ee 83
d1 63 30 6e 6f de 7d 52 e6 28 ac e3 09 ab 16 f9
3b 1e fa 9f 28 dc f5 e4 bf 0f 1f 3a fc ec 60 b5
6c 7b 80 de 08 0b c5 fe b7 46 d1 23 f0 74 b5 ca
c3 85 77 76 1a 19 65 0c ec 0d a7 c5 61 ef fa 5a
7b f6 d9 14 20 a7 1b 07 f2 0f 3f 5f a8 89 17 be
78 e8 5a 1b 7c 5e 26 18 af e4 43 1d 54 d0 77 56
c5 dc 19 16 3e 1d 08 58 8e 65 a1 87 c7 0a af b8
b8 62 e9 f0 56 d3 f9 56 90 07 db 34 f6 71 78 73
e9 10 14 e6 ee 8c 59 a4 97 a5 dd f3 6a 50 c6 9f
d9 a0 d8 0c e4 12 f2 ed 2d 7e 92 8e 51 6b 7b b7
36 53 33 76 a5 ab 85 95 f9 5e 0d 5f 64 65 00 07
21 eb d0 ea c2 72 7d ab 91 b5 87 91 b8 ab 24 f6
2b 7f 16 fc 42 00 00 00 00 ff ff
代码示例:
__int32 ZLIB::Decoder(unsigned __int8* PDU, unsigned __int32 size, unsigned __int32 out_buf_size, unsigned __int8 * out_b, z_stream_s & stream, bool & IsInit, unsigned __int32 mode, __int32 max_w_bits)
{
if (IsDllLoaded == false || PDU == nullptr) { return 0; }//if Zlib DLL was not loaded, or incoming packet is not cTCP
if ( !IsInit )
{
SecureZeroMemory(&stream, sizeof(stream));
auto res = InitZDecompressor( &stream, max_w_bits , "1.2.11", sizeof(z_stream_s));//initialize only one time
IsInit = true;
}
stream.next_in = PDU;
stream.avail_in = size;
stream.next_out = out_b;
stream.avail_out = out_buf_size;
stream.total_out = 0;
__int32 ret = 0;
while ( stream.avail_in && ret == 0 )
{
ret = ZDecompressor(&stream, mode);
}
return ret;
}
void ZLIB::ResetDecompessor(bool & isInit, z_stream_s & stream)
{
if (isInit)
{
ResetZDecompressor(&stream);
isInit = false;
memset(&stream, 0 ,sizeof(stream));
}
}
您的假设不正确。那不是放气压缩流。