gchq / gchq/CyberChef

Operation request: add support for brotli (de)compression

Open
#914 1 comment 17 reactions 0 assignees View on GitHub
operation
Dominant language
JavaScript
Stars
35.8k
Forks
4.1k
Avg merge
2d 26m
Merged PRs (30d)
33

Description

## Summary
now that node 10 has brotli compression out of the box it would be awesome if added.

Thanks

### Example Input

for **compression**
```
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non justo nibh. Aenean nisl nulla, lacinia in nunc eu, fringilla gravida massa. Proin congue leo risus, in aliquet tellus elementum vel. Nam quis lacus sed mauris tempus cursus. Sed dapibus est neque, in tristique leo dapibus sed. Donec eu sollicitudin erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec sed eros enim. Nulla tempor, odio nec porttitor pulvinar, turpis nisl fringilla lorem, et tincidunt justo lacus id tellus. Donec tincidunt venenatis feugiat. Mauris dictum lectus tincidunt fermentum hendrerit. Etiam feugiat in risus at feugiat. Suspendisse leo mi, tincidunt eu molestie id, fermentum id odio. Nullam lorem augue, ultricies eget dignissim vel, pulvinar nec nulla.
```
for **decompression**

```
GyIDABwHjutcnBZfOsYohRWICGjLzbODmz6Cw1QkQkEoHNbmDKf1shvHnSr9XoLoC3TwpuoAoHvtH58NA5x5dGkHLKA4T7d5J/RImOYm5dfmI1cXeKJWt/9QOCFLs3nioSM160ImD2PQH6gx+8f3hcfh9oMb7s+v29RVHO4weM2k+TToFNDh9QGt5h36QzPBM/LnFCxFSHdN6BjxpxTGxnVUNHaI8S1NJGYVAOMltfDHuqWFtwyYRgWCiaW6DCTrVGD0RkV3MzF1+KmARsJ5S4MMOYwcLYxtVwSz/+hMOqCFiBkHsyYdeiV7j+7JeRvB1GASkb0db0EmzLmvQPHeEpLDxYjXhwJP5JW2zkEfenIHfl7qojtiEwUTendAnatbNZPU4H2bTG5YaqhfLeMR4NT+dLnN33sYoATBXTPmbxoSaR+c5UmkAGDICbR4CNSU6o+rSzLwpR5KdifU8PTIWjDUdeyKv1yuoB8+r17OZU/LchOBTjUGSdf+3Zs2YgQn+HKTv1pYMY2kgrNF8jlhEaEyVsIFpB6mSWt5OagBfTQx/TgjWEd2w66CMyrY6wE=
```

### Example Output

for **compression**

```
GyIDABwHjutcnBZfOsYohRWICGjLzbODmz6Cw1QkQkEoHNbmDKf1shvHnSr9XoLoC3TwpuoAoHvtH58NA5x5dGkHLKA4T7d5J/RImOYm5dfmI1cXeKJWt/9QOCFLs3nioSM160ImD2PQH6gx+8f3hcfh9oMb7s+v29RVHO4weM2k+TToFNDh9QGt5h36QzPBM/LnFCxFSHdN6BjxpxTGxnVUNHaI8S1NJGYVAOMltfDHuqWFtwyYRgWCiaW6DCTrVGD0RkV3MzF1+KmARsJ5S4MMOYwcLYxtVwSz/+hMOqCFiBkHsyYdeiV7j+7JeRvB1GASkb0db0EmzLmvQPHeEpLDxYjXhwJP5JW2zkEfenIHfl7qojtiEwUTendAnatbNZPU4H2bTG5YaqhfLeMR4NT+dLnN33sYoATBXTPmbxoSaR+c5UmkAGDICbR4CNSU6o+rSzLwpR5KdifU8PTIWjDUdeyKv1yuoB8+r17OZU/LchOBTjUGSdf+3Zs2YgQn+HKTv1pYMY2kgrNF8jlhEaEyVsIFpB6mSWt5OagBfTQx/TgjWEd2w66CMyrY6wE=
```

for **decompression**

```
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non justo nibh. Aenean nisl nulla, lacinia in nunc eu, fringilla gravida massa. Proin congue leo risus, in aliquet tellus elementum vel. Nam quis lacus sed mauris tempus cursus. Sed dapibus est neque, in tristique leo dapibus sed. Donec eu sollicitudin erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec sed eros enim. Nulla tempor, odio nec porttitor pulvinar, turpis nisl fringilla lorem, et tincidunt justo lacus id tellus. Donec tincidunt venenatis feugiat. Mauris dictum lectus tincidunt fermentum hendrerit. Etiam feugiat in risus at feugiat. Suspendisse leo mi, tincidunt eu molestie id, fermentum id odio. Nullam lorem augue, ultricies eget dignissim vel, pulvinar nec nulla.
```

Contributor guide

Open the contributing guide

Research direction

Start by locating CyberChef's existing compression and decompression operation entry points and their tests, then check how Brotli can be used from the JavaScript runtime. The work is done when the supplied examples compress and decompress correctly and coverage verifies both directions.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
tooling, web-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.