General URLs
- Simple URL (https://www.example.com/path/index.html?a=1&b=2)
- Complicated Domain (https://ryan:P@s$W0rd!@my.dfir.blog:8080/unfurl)
- Magnet Link (magnet:?xt=urn:btih:c9e15763f722f23e98a29decdfae34...)
- Mailto: Link (mailto:to@example.com?cc=cc@second.example&bcc=bcc...)
- Punycode Domain (https://www.xn--85x722f.com.cn)
- Shortlinks (https://t.co/QPs812NVAW)
Search Engines
Social Media & Video Sites
- Tweet on Twitter (https://twitter.com/_RyanBenson/status/118958142268...)
- Message on Discord (https://discordapp.com/channels/42787674199071...)
- Video on TikTok (https://www.tiktok.com/@billnye/video/685471787048...)
- Video on YouTube (https://www.youtube.com/watch?v=LnhSTZgzKuY&l...)
- Search on Facebook (https://www.facebook.com/search/top/?q=people&...)
IDs
Encodings
Timestamps
You can move and select nodes, zoom and pan the camera, and save the graph image. Double-click a node to copy it.
`
var p = new URLSearchParams(window.location.search);
if (p.has('url')) {
var rawStr = decodeURIComponent(p.toString().substring(4,));
var wordArray = CryptoJS.enc.Utf8.parse(rawStr);
var base64 = CryptoJS.enc.Base64.stringify(wordArray);
fetch('https://us-west1-dfir-blog-gcp-cf.cloudfunctions.net/unfurl-gcp/1?url=' + base64)
.then(response => { return response.json(); })
.then(data => {
console.log(data);
var unfurl = {
nodes: data.nodes,
edges: data.edges
};
var network = new vis.Network(container, unfurl, options);
network.on("doubleClick", function(params) {
params.event.preventDefault();
var selectedNodeId = this.getNodeAt(params.pointer.DOM);
if (selectedNodeId) {
var selectedNode = data.nodes[selectedNodeId-1];
console.log("Copied '" + selectedNode.label + "' to clipboard");
navigator.clipboard.writeText(selectedNode.label);
}
});
})
.catch(err => {
// What do when the request fails
console.log('The request failed! ', err); });
} else {
document.getElementById("exampleBox").innerHTML = exampleBoxContent;
}