2017-05-23 2 views
0

먼저 tcpdump를 사용하여 udp 브로드 캐스트 데이터를 캡처했습니다.이 중 하나의 패킷 (비슷한 모든 패킷)은 다음과 유사합니다.lz4를 사용하여 16 진수 바이트 데이터 압축 해제

11:14:54.952531 IP (tos 0x0, ttl 64, id 20499, offset 0, flags [none], proto UDP (17), length 540) 
192.168.200.20.28190 > 233.1.2.5.28190: [udp sum ok] UDP, length 512 
0x0000: 4500 021c 5013 0000 4011 b4fa c0a8 c814 [email protected] 
0x0010: e901 0205 6e1e 6e1e 0208 500d 0220 0001 ....n.n...P..... 
0x0020: 00aa 1a02 595a 2a2a 3132 3300 4000 0546 ....YZ**[email protected] 
0x0030: 5573 ae00 001c 2b40 2802 01c9 2520 00e0 [email protected](...%... 
0x0040: 4c01 a2fd 3520 a002 00cc 0046 c1c2 000c L...5......F.... 
0x0050: 03b5 3b00 1b00 1f80 bc00 0896 bb80 41e6 ..;...........A. 
0x0060: 065b f100 0003 0002 0001 6da0 ffff feed .[........m..... 
0x0070: 0001 0000 4160 25e8 7e09 605d de40 7f00 ....A`%.~.`][email protected] 
0x0080: 79e0 4025 d960 4d2e 6025 d440 4e01 5a60 [email protected]%.`M.`%[email protected]` 
0x0090: 25f2 40ef 034b c040 27f7 0005 0026 3900 %[email protected]@'....&9. 
0x00a0: 5dfc 609d 5d40 4dff 001d 0400 4dfd 409c ].`.]@[email protected] 
0x00b0: 02ff 0641 1aa9 825c 0141 32f8 4060 1c61 ...A...\[email protected]`.a 
0x00c0: b460 fc61 3460 1c62 4c11 0000 0000 0000 .`.a4`.bL....... 
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 
0x0210: 0000 0000 0000 0000 0000 0000   ............ 

여기에서 데이터 블록을 가져 와서 바이트 압축 데이터가 LZ4 압축 알고리즘을 사용하여 인코딩됩니다.

실제 데이터를 압축 해제하고 가져 오는 방법에 대한 제안 사항이 있다면 압축 된 데이터는 다음과 유사합니다.

0220 0001 00aa 1a02 595a 2a2a 3132 3300 4000 0546 5573 ae00 001c 2b40 2802 01c9 2520 00e0 4c01 a2fd 3520 a002 00cc 0046 c1c2 000c 03b5 3b00 1b00 1f80 bc00 0896 bb80 41e6 065b f100 0003 0002 0001 6da0 ffff feed 0001 0000 4160 25e8 7e09 605d de40 7f00 79e0 4025 d960 4d2e 6025 d440 4e01 5a60 25f2 40ef 034b c040 27f7 0005 0026 3900 5dfc 609d 5d40 4dff 001d 0400 4dfd 409c 02ff 0641 1aa9 825c 0141 32f8 4060 1c61 b460 fc61 3460 1c62 4c11 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 .... 
+0

어떤 프로그래밍 언어를 사용하나요? –

+0

파이썬 솔루션을 찾고 있습니다. –

+0

그와 같은 0의 긴 문자열은 거의 확실하게 압축 된 데이터 스트림의 일부가 아닙니다. –

답변

2

질문 ... LZ4 압축 알고리즘을 사용하여 인코딩된다. 압축을 해제하는 방법에 대한 어떤 제안 ...

이 모듈을 시도해보십시오 python-lz4 Quickstart

사용에 바인딩하면 LZ4 프레임 형식입니다 권장합니다. 프레임 패키지를 사용하는 가장 간단한 방법은 압축 및 압축 해제 함수를 가져 오는 것입니다.

>>> import os 
>>> from lz4.frame import compress, decompress 
>>> input_data = os.urandom(20 * 128 * 1024) # Read 20 * 128kb 
>>> compressed = compress(input_data) 
>>> decompressed = decompress(compressed) 
>>> decompressed == input_data 
Out[6]: True 
관련 문제