From ed53f205f8cb8fc6f1d3ea5295bc30779ef96d3e Mon Sep 17 00:00:00 2001
From: Al Simpson <73041922+AlfredSimpson@users.noreply.github.com>
Date: Tue, 16 Jul 2024 20:01:18 -0400
Subject: [PATCH 01/15] Removed Waatp.com - Currently redirects to malware or
dead site.
---
public/arf.json | 5 -----
1 file changed, 5 deletions(-)
diff --git a/public/arf.json b/public/arf.json
index 41bb41b..381adb1 100644
--- a/public/arf.json
+++ b/public/arf.json
@@ -2890,11 +2890,6 @@
"type": "url",
"url": "http://infospace.com/"
},
- {
- "name": "Waatp",
- "type": "url",
- "url": "http://waatp.com/"
- },
{
"name": "Webmii",
"type": "url",
From a36968e7be63270ae5d26e84dcd8c18f8e026472 Mon Sep 17 00:00:00 2001
From: Kyle Matthews <148267185+Drumrrr@users.noreply.github.com>
Date: Tue, 1 Oct 2024 16:13:34 -0400
Subject: [PATCH 02/15] Added new Dark Mode/Theme for the page
Created .Dark-Mode in arf.css that contains values for a dark-mode site. Also added a new function in arf.js that detects an input from a button in index.html to switch the theme to dark mode.
---
arf.css | 62 +++++++++++++++++++++
arf.js | 156 +++++++++++++++++++++++++++++++++++++++++++++++++++++
index.html | 40 ++++++++++++++
3 files changed, 258 insertions(+)
create mode 100644 arf.css
create mode 100644 arf.js
create mode 100644 index.html
diff --git a/arf.css b/arf.css
new file mode 100644
index 0000000..a5c0e07
--- /dev/null
+++ b/arf.css
@@ -0,0 +1,62 @@
+body {
+ background-color: #ffffff;
+ font-size: 14px;
+ font-family: "Helvetica Neue", Helvetica;
+}
+
+#body {
+ margin: 0 auto;
+ position: relative;
+}
+
+#header {
+ font-size: 40px;
+ font-weight: bold;
+ top: 20px;
+ text-align: center;
+}
+
+.dark-Mode{
+ background-color: #000;
+ color: #fff;
+ .node text {
+ fill: #fff;
+ }
+ .legend{
+ color: #fff;
+ }
+ path.link{
+ stroke: #444;
+ }
+}
+
+.legend {
+ position: absolute;
+ top: 0px;
+ right: 0;
+ width: 330px;
+ font-size: 11px;
+ color: #000;
+}
+
+.node {
+ cursor: pointer;
+}
+
+.node circle {
+ cursor: pointer;
+ fill: #fff;
+ stroke: steelblue;
+ stroke-width: 1.5px;
+}
+
+.node text {
+ font-size: 12px;
+ fill: rgb(0, 0, 0);
+}
+
+path.link {
+ fill: none;
+ stroke: #ccc;
+ stroke-width: 1px;
+}
\ No newline at end of file
diff --git a/arf.js b/arf.js
new file mode 100644
index 0000000..685aca2
--- /dev/null
+++ b/arf.js
@@ -0,0 +1,156 @@
+var margin = [20, 120, 20, 140],
+ width = 1280 - margin[1] - margin[3],
+ height = 800 - margin[0] - margin[2],
+ i = 0,
+ duration = 1250,
+ root;
+
+var tree = d3.layout.tree()
+ .size([height, width]);
+
+var diagonal = d3.svg.diagonal()
+ .projection(function(d) { return [d.y, d.x]; });
+
+var vis = d3.select("#body").append("svg:svg")
+ .attr("width", width + margin[1] + margin[3])
+ .attr("height", height + margin[0] + margin[2])
+ .append("svg:g")
+ .attr("transform", "translate(" + margin[3] + "," + margin[0] + ")");
+
+d3.json("arf.json", function(json) {
+ root = json;
+ root.x0 = height / 2;
+ root.y0 = 0;
+
+ function collapse(d) {
+ if (d.children) {
+ d._children = d.children;
+ d._children.forEach(collapse);
+ d.children = null;
+ }
+ }
+
+/* function toggleAll(d) {
+ if (d.children) {
+ d.children.forEach(toggleAll);
+ toggle(d);
+ }
+ } */
+ root.children.forEach(collapse);
+ update(root);
+});
+
+function update(source) {
+ // var duration = d3.event && d3.event.altKey ? 5000 : 500;
+
+ // Compute the new tree layout.
+ var nodes = tree.nodes(root).reverse();
+
+ // Normalize for fixed-depth.
+ nodes.forEach(function(d) { d.y = d.depth * 180; });
+
+ // Update the nodes…
+ var node = vis.selectAll("g.node")
+ .data(nodes, function(d) { return d.id || (d.id = ++i); });
+
+ // Enter any new nodes at the parent's previous position.
+ var nodeEnter = node.enter().append("svg:g")
+ .attr("class", "node")
+ .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
+ .on("click", function(d) { toggle(d); update(d); });
+
+ nodeEnter.append("svg:circle")
+ .attr("r", 1e-6)
+ .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
+
+ nodeEnter.append('a')
+ .attr("target", "_blank")
+ .attr('xlink:href', function(d) { return d.url; })
+ .append("svg:text")
+ .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
+ .attr("dy", ".35em")
+ .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
+ .text(function(d) { return d.name; })
+ .style("fill: rgb(0, 0, 0)", function(d) { return d.free ? 'black' : '#999'; })
+ .style("fill-opacity", 1e-6);
+
+ nodeEnter.append("svg:title")
+ .text(function(d) {
+ return d.description;
+ });
+
+ // Transition nodes to their new position.
+ var nodeUpdate = node.transition()
+ .duration(duration)
+ .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
+
+ nodeUpdate.select("circle")
+ .attr("r", 6)
+ .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
+
+ nodeUpdate.select("text")
+ .style("fill-opacity", 1);
+
+ // Transition exiting nodes to the parent's new position.
+ var nodeExit = node.exit().transition()
+ .duration(duration)
+ .attr("transform", function(d) { return "translate(" + source.y + "," + source.x + ")"; })
+ .remove();
+
+ nodeExit.select("circle")
+ .attr("r", 1e-6);
+
+ nodeExit.select("text")
+ .style("fill-opacity", 1e-6);
+
+ // Update the links…
+ var link = vis.selectAll("path.link")
+ .data(tree.links(nodes), function(d) { return d.target.id; });
+
+ // Enter any new links at the parent's previous position.
+ link.enter().insert("svg:path", "g")
+ .attr("class", "link")
+ .attr("d", function(d) {
+ var o = {x: source.x0, y: source.y0};
+ return diagonal({source: o, target: o});
+ })
+ .transition()
+ .duration(duration)
+ .attr("d", diagonal);
+
+ // Transition links to their new position.
+ link.transition()
+ .duration(duration)
+ .attr("d", diagonal);
+
+ // Transition exiting nodes to the parent's new position.
+ link.exit().transition()
+ .duration(duration)
+ .attr("d", function(d) {
+ var o = {x: source.x, y: source.y};
+ return diagonal({source: o, target: o});
+ })
+ .remove();
+
+ // Stash the old positions for transition.
+ nodes.forEach(function(d) {
+ d.x0 = d.x;
+ d.y0 = d.y;
+ });
+}
+
+// Toggle children.
+function toggle(d) {
+ if (d.children) {
+ d._children = d.children;
+ d.children = null;
+ } else {
+ d.children = d._children;
+ d._children = null;
+ }
+}
+//Togle Dark Mode
+function goDark() {
+ var element = document.body;
+ element.classList.toggle("dark-Mode");
+}
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..86302b2
--- /dev/null
+++ b/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ OSINT Framework
+
+
+
+
+
+ OSINT Framework
+
+
+
+
+
+
+
(T) - Indicates a link to a tool that must be installed and run locally
+ (D) - Google Dork, for more information: Google Hacking
+ (R) - Requires registration
+ (M) - Indicates a URL that contains the search term and the URL itself must be edited manually
+
+
+
Notes
+ OSINT framework focused on gathering information from free tools or resources. The intention is to help people find free OSINT resources. Some of the sites included might require registration or offer more data for $$$, but you should be able to get at least a portion of the available information for no cost.
+
+
I originally created this framework with an information security point of view. Since then, the response from other fields and disciplines has been incredible. I would love to be able to include any other OSINT resources, especially from fields outside of infosec. Please let me know about anything that might be missing!
(T) - Indicates a link to a tool that must be installed and run locally
- (D) - Google Dork, for more information: Google Hacking
- (R) - Requires registration
- (M) - Indicates a URL that contains the search term and the URL itself must be edited manually
-
-
-
Notes
- OSINT framework focused on gathering information from free tools or resources. The intention is to help people find free OSINT resources. Some of the sites included might require registration or offer more data for $$$, but you should be able to get at least a portion of the available information for no cost.
-
-
I originally created this framework with an information security point of view. Since then, the response from other fields and disciplines has been incredible. I would love to be able to include any other OSINT resources, especially from fields outside of infosec. Please let me know about anything that might be missing!
- Feedback or new tool suggestions are extremely welcome! Please feel free to reach out on Twitter or submit an issue on Github.
-
-
-
-
\ No newline at end of file
diff --git a/public/css/arf.css b/public/css/arf.css
index 42e11d7..29694ac 100644
--- a/public/css/arf.css
+++ b/public/css/arf.css
@@ -16,6 +16,20 @@ body {
text-align: center;
}
+.dark-Mode{
+ background-color: #000;
+ color: #fff;
+ .node text {
+ fill: #fff;
+ }
+ .legend{
+ color: #fff;
+ }
+ path.link{
+ stroke: #444;
+ }
+}
+
.legend {
position: absolute;
top: 0px;
diff --git a/public/index.html b/public/index.html
index 5ddc070..65126c2 100644
--- a/public/index.html
+++ b/public/index.html
@@ -20,8 +20,9 @@
(T) - Indicates a link to a tool that must be installed and run locally
(D) - Google Dork, for more information: Google Hacking
(R) - Requires registration
- (M) - Indicates a URL that contains the search term and the URL itself must be edited manually
-
+ (M) - Indicates a URL that contains the search term and the URL itself must be edited manually
+
+