예제 #1
0
def test_zstd_compressor_1():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    compressor = py7zr.compressor.ZstdCompressor()
    outdata = compressor.compress(plain_data)
    outdata = compressor.compress(plain_data)
    outdata += compressor.flush()
    compressed = b"\x28\xb5\x2f\xfd" \
                 b"\x00XE\x01\x00\x04\x02\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4" \
                 b"\xe4\x97BB\xd2\x01\x00\x18\xb8z\x02"
    assert outdata == compressed
예제 #2
0
def test_sevenzipcompressor_aes_lzma2():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    plain_data += plain_data + plain_data
    filters = [{
        "id": py7zr.FILTER_LZMA2,
        "preset": py7zr.PRESET_DEFAULT
    }, {
        "id": py7zr.FILTER_CRYPTO_AES256_SHA256
    }]
    indata = io.BytesIO(plain_data)
    outdata = io.BytesIO()
    compressor = py7zr.compressor.SevenZipCompressor(filters=filters,
                                                     password='******')
    insize, outsize, crc = compressor.compress(indata, outdata)
    outsize += compressor.flush(outdata)
    outdata.seek(0, 0)
    coders = compressor.coders
    unpacksizes = compressor.unpacksizes
    decompressor = py7zr.compressor.SevenZipDecompressor(
        coders=coders,
        packsize=outsize,
        unpacksizes=unpacksizes,
        crc=None,
        password='******')
    revert_data = decompressor.decompress(outdata)
    assert revert_data == plain_data
예제 #3
0
def test_aes_encrypt_data():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB"
    plain_data += plain_data + plain_data
    compressor = py7zr.compressor.AESCompressor('secret')
    outdata = compressor.compress(plain_data)
    outdata += compressor.flush()
    assert len(outdata) == 96  # 96 = 16 * 6 = len(plain_data) + 3
예제 #4
0
파일: test_unit.py 프로젝트: secsilm/py7zr
def test_compressor_lzma2bcj(tmp_path):
    my_filters = [{
        "id": py7zr.FILTER_X86
    }, {
        "id": py7zr.FILTER_LZMA2,
        "preset": 7
    }]
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    plain_data += plain_data
    indata = io.BytesIO(plain_data)
    outdata = io.BytesIO()
    compressor = py7zr.compressor.SevenZipCompressor(filters=my_filters)
    _, _, _ = compressor.compress(indata, outdata)
    _ = compressor.flush(outdata)
    unpacksizes = compressor.unpacksizes
    outdata.seek(0, 0)
    coders = [{
        'method': b'!',
        'properties': b'\x18',
        'numinstreams': 1,
        'numoutstreams': 1
    }, {
        'method': b'\x03\x03\x01\x03',
        'numinstreams': 1,
        'numoutstreams': 1
    }]
    decompressor = py7zr.compressor.SevenZipDecompressor(
        coders=coders,
        packsize=len(plain_data),
        unpacksizes=unpacksizes,
        crc=None)
    revert_data = decompressor.decompress(outdata, max_length=len(plain_data))
    assert revert_data == plain_data
예제 #5
0
def test_deflate_compressor_flushed():
    with pytest.raises(zlib.error):
        plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
        plain_data += plain_data
        compressor = py7zr.compressor.DeflateCompressor()
        outdata = compressor.compress(plain_data)
        outdata += compressor.flush()
        outdata += compressor.flush()
예제 #6
0
def test_deflate_compressor():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    plain_data += plain_data
    compressor = py7zr.compressor.DeflateCompressor()
    outdata = compressor.compress(plain_data)
    outdata += compressor.flush()
    expected = b'c\xd0\x92\xe2TO\x91\xdc`Q|\xaa[Xa\xbd\x95t\xef\xf4\x1f5\xca\xbe/\x1f\x86_y2\xdd\xc9\xe9\x12\x03\x01y\x00'
    assert outdata == expected
예제 #7
0
def test_sevenzipcompressor_default():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    plain_data += plain_data
    indata = io.BytesIO(plain_data)
    outdata = io.BytesIO()
    compressor = py7zr.compressor.SevenZipCompressor(filters=None)
    _, _, _ = compressor.compress(indata, outdata)
    _ = compressor.flush(outdata)
    assert len(outdata.getvalue()) > 1
예제 #8
0
def test_zstd_compressor():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    plain_data += plain_data
    compressor = py7zr.compressor.ZstdCompressor()
    outdata = compressor.compress(plain_data)
    outdata += compressor.flush()
    expected = b"(\xb5/\xfd @E\x01\x00\x04\x02\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4" \
               b"\xe4\x97BB\xd2\x01\x00\x18\xb8z\x02"
    assert outdata == expected
예제 #9
0
def test_sevenzipcompressor_aes_only():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    plain_data += plain_data
    filters = [{"id": py7zr.FILTER_CRYPTO_AES256_SHA256}]
    compressor = py7zr.compressor.SevenZipCompressor(filters=filters,
                                                     password='******')
    indata = io.BytesIO(plain_data)
    outdata = io.BytesIO()
    _, _, _ = compressor.compress(indata, outdata)
    _ = compressor.flush(outdata)
    result = outdata.getvalue()
    assert len(result) == 64
    assert result != plain_data
예제 #10
0
def test_zstd_compressor_decompressor():
    compressor = py7zr.compressor.ZstdCompressor()
    compressed = b''
    for i in range(255):
        compressed += compressor.compress(struct.Struct(">B").pack(i) * 16384)
    compressed += compressor.flush()
    assert len(compressed) == 999
    assert compressed[0:4] == b"\x28\xb5\x2f\xfd"
    property = b'\x01\x04\x04\x00\x00'
    decompressor = py7zr.compressor.ZstdDecompressor(property)
    extracted = b''
    extracted += decompressor.decompress(compressed)
    assert len(extracted) == 16384 * 255
    assert extracted[:10] == b'\0\0\0\0\0\0\0\0\0\0'
예제 #11
0
파일: test_unit.py 프로젝트: secsilm/py7zr
def test_lzmadecompressor_lzmabcj():
    indata = b'This file is located in the root.'
    compressor = lzma.LZMACompressor(format=lzma.FORMAT_RAW,
                                     filters=[{
                                         'id': lzma.FILTER_X86
                                     }, {
                                         'id': lzma.FILTER_LZMA1
                                     }])
    compressed = compressor.compress(indata)
    compressed += compressor.flush()
    decompressor = lzma.LZMADecompressor(format=lzma.FORMAT_RAW,
                                         filters=[{
                                             'id': lzma.FILTER_X86
                                         }, {
                                             'id': lzma.FILTER_LZMA1
                                         }])
    outdata = decompressor.decompress(data=compressed)
    assert outdata == indata
예제 #12
0
def test_copy_compressor():
    plain_data = b"\x00*\x1a\t'd\x19\xb08s\xca\x8b\x13 \xaf:\x1b\x8d\x97\xf8|#M\xe9\xe1W\xd4\xe4\x97BB\xd2"
    compressor = py7zr.compressor.CopyCompressor()
    outdata = compressor.compress(plain_data)
    outdata += compressor.flush()
    assert outdata == plain_data