Skip to content

Latest commit

 

History

History
150 lines (96 loc) · 3.89 KB

README.md

File metadata and controls

150 lines (96 loc) · 3.89 KB

which-fileextension

detect if a file extension is text/ binary or file is text/ binary. uses the file.ext and the file.ext.exttwo detection pattern structure

  • detect file extensions
  • detect if one of many possible script injection files
  • check your file extension using provided string or array
  • check if file is part of list of extension
  • detect file extension is text
  • detect file extension is binary
  • detect if file is text
  • detect if file is binary

USAGE

detect, isExtension, isTextExtension, isBinaryExtension,


const {
  textExtensions, 
  binaryExtensions, 
  scriptInjectionExtensions,
  detect, isExtension, 
  isTextExtension, isBinaryExtension, 
  isText, isBinary
} = require("which-fileextension");

// list of all textExtensions, binaryExtensions, scriptInjectionExtensions


const dr = require("which-fileextension");

// console.log(dr.textExtensions);
// console.log(dr.binaryExtensions);
// console.log(dr.scriptInjectionExtensions);

// detect


const dr = require("which-fileextension");

console.log(dr.detect("test/tester.jpg", dr.binaryExtensions), true) // true
console.log(dr.detect("test/tester.jpg", dr.textExtensions), false) // false

// isText


const dr = require("which-fileextension");

console.log(dr.isText("test/tester.txt"), true) // true
console.log(dr.isText("test/tester.txt", txt), true) // true

// isBinary


const dr = require("which-fileextension");
const fs = require("fs");

let txt = fs.readFileSync("./demos/demos.which-fileextension.js");
let png = fs.readFileSync("./demos/img-black.png");
let jpeg = fs.readFileSync("./demos/img-red.jpg");
let gif = fs.readFileSync("./demos/img-yellow.gif");

console.log(dr.isBinary("test/tester.exe"), true) // true
console.log(dr.isBinary("./demos/img-red.jpg", jpeg), true) // true
console.log(dr.isBinary("./demos/img-black.png", png), true) // true
console.log(dr.isBinary("./demos/img-yellow.gif", gif), true) // true

// detect


const dr = require("which-fileextension");

console.log(dr.detect("test/tester.jpg", dr.binaryExtensions), true) // true
console.log(dr.detect("test/tester.jpg", dr.textExtensions), false) // false
console.log(dr.detect("test/tester.jpg", ["gz", "txt", "jpg", "jpeg"]), true) // true`

// isExtension


const dr = require("which-fileextension");

console.log(dr.isExtension("test/tester.jpg", "jpg"), true) // true
console.log(dr.isExtension("test/tester.jpg", "txt"), false) // false
console.log(dr.isTextExtension("test/tester.txt"), true) // true
console.log(dr.isTextExtension("test/tester.jpeg"), false) // false

// isBinaryExtension


const dr = require("which-fileextension");
console.log(dr.isBinaryExtension("test/tester.jpeg"), true) // true

FALSE POSITIVES

Please remmber there may be FALSE POSITIVES like below


const expected = true; 

expect(isBinary("test/tester.mp3", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.mp4", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.wav", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.zip", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.gz", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.xz", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.flv", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.xls", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.odt", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.doc", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.docx", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.exe", txt)).to.deep.equal(expected);
expect(isBinary("test/tester.bin", txt)).to.deep.equal(expected);

Credits and References:

binaryextensions textextensions istextorbinary