From 3f04ba33778788e63b8259573e7c67d60f2223d7 Mon Sep 17 00:00:00 2001 From: Andy Robbins Date: Thu, 4 Jul 2019 14:16:09 -0500 Subject: [PATCH 1/2] Change "PowerShell Ingestor" to "C# data collector" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 36a7ed025..325ba968f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ The rolling release will always be updated to the most recent source. Tagged rel To get started with BloodHound, check out the [BloodHound Github Wiki.](https://github.com/BloodHoundAD/Bloodhound/wiki) -BloodHound is a single page Javascript web application, built on top of [Linkurious](http://linkurio.us/), compiled with [Electron](http://electron.atom.io/), with a [Neo4j](https://neo4j.com/) database fed by a PowerShell ingestor. +BloodHound is a single page Javascript web application, built on top of [Linkurious](http://linkurio.us/), compiled with [Electron](http://electron.atom.io/), with a [Neo4j](https://neo4j.com/) database fed by a C# data collector. BloodHound uses graph theory to reveal the hidden and often unintended relationships within an Active Directory environment. Attackers can use BloodHound to easily identify highly complex attack paths that would otherwise be impossible to quickly identify. Defenders can use BloodHound to identify and eliminate those same attack paths. Both blue and red teams can use BloodHound to easily gain a deeper understanding of privilege relationships in an Active Directory environment. From e45f4f824a2fb251574e45a180d9c616c4b52bb4 Mon Sep 17 00:00:00 2001 From: Rohan Vazarkar Date: Sun, 4 Aug 2019 14:23:12 -0700 Subject: [PATCH 2/2] Fix json export --- package-lock.json | 2 +- src/components/Graph.jsx | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 386ee7aaf..9ee88e009 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "bloodhound", - "version": "2.1.1", + "version": "2.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/components/Graph.jsx b/src/components/Graph.jsx index 3ce0c9ada..9ad562f11 100644 --- a/src/components/Graph.jsx +++ b/src/components/Graph.jsx @@ -389,14 +389,15 @@ class GraphContainer extends Component { json = JSON.parse(json); json.spotlight = appStore.spotlightData; - dialog.showSaveDialog( + let r = dialog.showSaveDialog( { defaultPath: 'graph.json', - }, - function(loc) { - writeFile(loc, JSON.stringify(json, null, 2)); } ); + + if (r !== undefined){ + writeFile(r, JSON.stringify(json, null, 2)); + } } } @@ -778,13 +779,13 @@ class GraphContainer extends Component { function(_, value) { if (value !== null) { let id = value.identity; - if (value.end && !edges.id) { + if ('end' in value && !edges.id) { edges[ id ] = this.createEdgeFromRow( value ); - } else if (!nodes.id) { + } else if (!nodes.id && !'end' in value) { nodes[ id ] = this.createNodeFromRow( @@ -797,11 +798,11 @@ class GraphContainer extends Component { ); } else { let id = field.identity; - if (field.end && !edges.id) { + if (Object.hasOwnProperty(field, 'end') && !edges.id) { edges[id] = this.createEdgeFromRow( field ); - } else if (!nodes.id) { + } else if (!nodes.id && !Object.hasOwnProperty(field, 'end')) { nodes[id] = this.createNodeFromRow( field, params