<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Opengraph on Podalirius</title><link>https://podalirius.net/en/tags/opengraph/</link><description>Recent content in Opengraph on Podalirius</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 12 Aug 2025 10:00:00 +0000</lastBuildDate><atom:link href="https://podalirius.net/en/tags/opengraph/index.xml" rel="self" type="application/rss+xml"/><item><title>BloodHound - Generating OpenGraphs in Python with bhopengraph</title><link>https://podalirius.net/en/articles/generating-bloodhound-opengraphs-in-python/</link><pubDate>Tue, 12 Aug 2025 10:00:00 +0000</pubDate><guid>https://podalirius.net/en/articles/generating-bloodhound-opengraphs-in-python/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>When SpecterOps released &lt;a href="https://specterops.io/blog/2025/07/29/bloodhound-v8-usability-extensibility-and-opengraph/">BloodHound 8.0&lt;/a>, they introduced a feature I had been waiting for: &lt;strong>OpenGraph&lt;/strong>. It is now the officially supported way to inject arbitrary nodes and edges into BloodHound. Any data source you can model as a graph — IoT inventories, SaaS permissions, custom infrastructure — can live alongside your Active Directory and Azure environments.&lt;/p>
&lt;p>I immediately wanted to use it during a pentest to visualise relationships between assets that BloodHound does not natively collect. My first attempt was hand-crafting the JSON. That worked for two nodes and one edge. It stopped being fun around the fifteenth node, when I mixed up &lt;code>displayname&lt;/code> and &lt;code>name&lt;/code> for the third time and the upload silently dropped half my data.&lt;/p></description></item></channel></rss>