Skip to content

Media server file decryption

Overview

Example script to decrypt a file downloaded from Acrobits Media Server.

Python example

```python

!/usr/bin/python3

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend from binascii import unhexlify,crc32

key = unhexlify('F4EC56A83CDA65B2C6DC11E2CF693DAA') nonce = b'\0'*len(key)

cipher = Cipher(algorithms.AES(key), modes.CTR(nonce), backend=default_backend()) dec = cipher.decryptor()

file_in = open('encrypted', 'rb') file_out = open('decrypted.jpg', 'wb')

crc = 0

while True: enc_block=file_in.read(10240) if not enc_block: break print('.', end='') dec_block = dec.update(enc_block) crc = crc32(dec_block, crc) file_out.write(dec_block)

print()

file_in.close() file_out.close()

print("Hash: "+str(crc)) ```

JavaScript example

The following example requires the latest version (16.x) of Node.js LTS. The crc module is 3rd-party, and therefore optional. It is only required to verify the CRC of decrypted files, and any lines using it can be removed.

```javascript import { webcrypto } from 'crypto'; import { readFile, writeFile } from 'fs/promises';

// crc module is optional and only needed if crc calculation functionality is required // run npm install crc to install if needed import crc from 'crc'; // remove if not using crc

const { subtle } = webcrypto; const { crc32 } = crc; // remove if not using crc

const hexKey = 'F4EC56A83CDA65B2C6DC11E2CF693DAA'; const keyArr = Uint8Array.from(hexKey.match(/.{1,2}/g).map(hex => parseInt(hex, 16))); const counter = new Uint8Array(keyArr.length);

const key = await subtle.importKey('raw', keyArr, "AES-CTR", true, ['decrypt']); const input = await readFile('encrypted', { flag: 'r' });

const decResult = await subtle.decrypt( { name: 'AES-CTR', counter, length: 128 }, key, input );

const outBuf = Buffer.from(decResult); await writeFile('decrypted_js.jpg', outBuf);

console.log(Hash: ${crc32(outBuf)}); // remove if not using crc ```

OpenSSL example

```sh openssl enc -aes-128-ctr -d -K F4EC56A83CDA65B2C6DC11E2CF693DAA -iv 00000000000000000000000000000000 -nopad -in encrypted -out decrypted_file.jpg

crc32 decrypted_file.jpg ```

The encrypted version is available here.

The decrypted version is available here.

The hex-encoded key for this file is F4EC56A83CDA65B2C6DC11E2CF693DAA

The unsigned decimal integer hash of the original is 4488649