fanger
v0.3.1
Published
Defang and refang IoC
Downloads
4,859
Readme
fanger
fanger is an npm package for defang and refang IoC.
What are defang and refang
Defang means to change a part of IoC to make inaccessible or unclickable. (e.g. example.com
=> example[.]com
)
Refang means to revert a defanged IoC to the original one. (e.g. example[.]com
=> example.com
)
Installation
npm install fanger -g
Usage
As a CLI
$ echo "example.com" | defang
example[.]com
$ echo "[email protected]" | defang
test@example[.]com
$ echo "https://example.com" | defang
hxxps://example[.]com
$ echo "example[.]com" | refang
example.com
$ echo "test@example[.]com" | refang
[email protected]
$ echo "hxxps://example[.]com" | refang
https://example.com
As a library
import { defang, refang } from "fanger";
const text = "example.com";
console.log(defang(text));
// example[.]com
const defangedText = "example[.]com";
console.log(refang(defangedText));
// example.com
Supported defang/refang techniques
Defang
The following defang techniques are supported.
IPv4
1.1.1.1
=>1[.]1.1.1
The first dot of an IPv4 will be replaced with [.]
.
Domain
example.com
=>example[.]com
test.com.example.com
=>test[.]com.example[.]com
A dot before a label which is registered as a TLD will be replaced with [.]
.
HTTP scheme
http
=>hxxp
https
=>hxxps
Supported refang techniques
The following refang techniques are supported.
| Techniques | Defanged | Refanged |
|------------------|----------------------------------------|---------------------------------|
| Remove spaces | 1.1.1 . 1
| 1.1.1.1
|
| [.]
=> .
| 1.1.1[.]1
| 1.1.1.1
|
| (.)
=> .
| 1.1.1(.)1
| 1.1.1.1
|
| {.}
=> .
| 1.1.1{.}1
| 1.1.1.1
|
| \.
=> .
| example\.com
| example.com
|
| [/]
=> /
| http://example.com[/]path
| http://example.com/path
|
| [:]
=> :
| http[:]//example.com
| http://example.com
|
| [://]
=> ://
| http[://]example.com
| http://example.com
|
| hxxp
=> http
| hxxps://google.com
| https://google.com
|
| [at]
=> @
| test[at]example.com
| [email protected]
|
| [@]
=> @
| test[@]example.com
| [email protected]
|
| (@)
=> @
| test(@)example.com
| [email protected]
|
| [dot]
=> .
| test@example[dot]com
| [email protected]
|
| (dot)
=> .
| test@example(dot)com
| [email protected]
|
| {dot}
=> .
| test@example{dot}com
| [email protected]
|
| Partial | 1.1.1[.1
| 1.1.1.1
|
| Any combination | hxxps[:]//test\.example[.)com[/]path
| https://test.example.com/path
|