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. 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