{"id":102,"date":"2007-06-18T11:13:13","date_gmt":"2007-06-18T16:13:13","guid":{"rendered":"http:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/"},"modified":"2007-06-18T11:34:39","modified_gmt":"2007-06-18T16:34:39","slug":"afterglow-example-visualizing-ip-tables-logs","status":"publish","type":"post","link":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/","title":{"rendered":"AfterGlow Example &#8211; Visualizing IP Tables Logs"},"content":{"rendered":"<p>I am sitting in Seville, at the <a href=\"http:\/\/www.first.org\/conference\/2007\/program\">First<\/a> conference, where I will be teaching a workshop on Wednesday. The topic is going to be <a href=\"https:\/\/www.first.org\/conference\/2007\/program\/speakers.html#abstract\">insider threat visualization<\/a>. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my iptables logs:<br \/>\n<code>cat \/var\/log\/messages | grep \"BLOCK\" | perl -pe 's\/.*\\] (.*) (IN=[^ ]*).*(OUT=[^ ]*).*SRC=([^ ]* ).*DST=([^ ]* ).*PROTO=([^ ]* ).*?(SPT=[^ ]+ )?.*?(DPT=\\d* )?.*?(UID=\\d+)?.*?\/\\1,\\2,\\3,\\4,\\5,\\6,\\7,\\8,\\9\/' | awk -F, '{printf \"%s,%s,%s\\n\",$4,$5,$8}' | sed -e 's\/DPT=\/\/' -e 's\/ \/\/g' | afterglow.pl -e 1.3 -c iptables.properties -p 1 | neato -Tgif -o\/tmp\/test.gif; xloadimage \/tmp\/test.gif<\/code><br \/>\nThis is fairly ugly. I am not going to clean it up. You get the idea. Now, what does the iptables.properties look? Well, if you thought the command above was ugly. The properties file is completely insane, but it shows you the power of using the <em>&#8220;variable&#8221;<\/em> assignment:<br \/>\n<code> variable=$ip=`ifconfig eth1 | grep inet`<br \/>\nvariable=$ip=~s\/.*?:(\\d+\\.\\d+\\.\\d+\\.\\d+).*\\n?\/\\1\/;<br \/>\nvariable=$subnet=$ip; $subnet=~s\/(.*)\\.\\d+\/\\1\/;<br \/>\nvariable=$bcast=$subnet.\".255\";<br \/>\n<\/code><code>color=\"invisible\" if (field() eq \"$bcast\")<br \/>\ncolor=\"invisible\" if ($fields[2] eq \"67\")<br \/>\ncolor=\"yellow\" if (field() eq \"$ip\")<br \/>\ncolor.source=\"greenyellow\" if ($fields[0]=~\/^192\\.168\\..*\/);<br \/>\ncolor.source=\"greenyellow\" if ($fields[0]=~\/^10\\..*\/);<br \/>\ncolor.source=\"greenyellow\" if ($fields[0]=~\/^172\\.16\\..*\/);<br \/>\ncolor.source=\"red\"<br \/>\ncolor.event=\"greenyellow\" if ($fields[1]=~\/^192\\.168\\..*\/)<br \/>\ncolor.event=\"greenyellow\" if ($fields[1]=~\/^10\\..*\/)<br \/>\ncolor.event=\"greenyellow\" if ($fields[1]=~\/^172\\.16\\..*\/)<br \/>\ncolor.event=\"red\"<br \/>\ncluster.target=\"&gt;1024\" if (($fields[2]&gt;1024) &amp;&amp; ($fields[1] ne \"$ip\"))<br \/>\ncluster.source=\"External\" if (field()!~\/^$subnet\/)<br \/>\ncluster.event=\"External\" if (field()!~\/^$subnet\/)<br \/>\ncolor.target=\"blue\" if ($fields[1] eq \"$ip\")<br \/>\ncolor.target=\"lightblue\"<\/code><br \/>\nMind you, this was run on an Ubuntu Linux. You might have to change some of the commands and parsing of the output. Pretty neat, ey? Here is a sample output that this generated. My box is yellow. The question that I was trying to answer: Why is someone trying to conect to me on port 80?<\/p>\n<p><a href=\"http:\/\/raffy.ch\/blog\/wp-content\/uploads\/2007\/06\/test.gif\"><img decoding=\"async\" src=\"http:\/\/raffy.ch\/blog\/wp-content\/uploads\/2007\/06\/test.gif\" alt=\"IPTables Visualization\" border=\"0\" width=\"500\" \/><\/a><\/p>\n<p>[tags]visualization, iptables, afterglow, security[\/tags]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,2],"tags":[],"class_list":["post-102","post","type-post","status-publish","format-standard","hentry","category-log-analysis","category-visualization"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Raffael Marty\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Future of Tech and Security: Strategy &amp; Innovation with Raffy \u2013 Insights at the intersection of cybersecurity, strategy, and innovation.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"AfterGlow Example \u2013 Visualizing IP Tables Logs \u2013 Future of Tech and Security: Strategy &amp; Innovation with Raffy\" \/>\n\t\t<meta property=\"og:description\" content=\"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/raffy.ch\/blog\/wp-content\/uploads\/2025\/09\/ogimage.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/raffy.ch\/blog\/wp-content\/uploads\/2025\/09\/ogimage.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2007-06-18T16:13:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2007-06-18T16:34:39+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@raffaelmarty\" \/>\n\t\t<meta name=\"twitter:title\" content=\"AfterGlow Example \u2013 Visualizing IP Tables Logs \u2013 Future of Tech and Security: Strategy &amp; Innovation with Raffy\" \/>\n\t\t<meta name=\"twitter:description\" content=\"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@raffaelmarty\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/raffy.ch\/blog\/wp-content\/uploads\/2025\/09\/ogimage.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#blogposting\",\"name\":\"AfterGlow Example \\u2013 Visualizing IP Tables Logs \\u2013 Future of Tech and Security: Strategy & Innovation with Raffy\",\"headline\":\"AfterGlow Example &#8211; Visualizing IP Tables Logs\",\"author\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/author\\\/raffy\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/raffy.ch\\\/blog\\\/wp-content\\\/uploads\\\/2007\\\/06\\\/test.gif\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#articleImage\"},\"datePublished\":\"2007-06-18T11:13:13-06:00\",\"dateModified\":\"2007-06-18T11:34:39-06:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#webpage\"},\"articleSection\":\"Log Analysis, Visualization\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/raffy.ch\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/category\\\/visualization\\\/#listItem\",\"name\":\"Visualization\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/category\\\/visualization\\\/#listItem\",\"position\":2,\"name\":\"Visualization\",\"item\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/category\\\/visualization\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#listItem\",\"name\":\"AfterGlow Example &#8211; Visualizing IP Tables Logs\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#listItem\",\"position\":3,\"name\":\"AfterGlow Example &#8211; Visualizing IP Tables Logs\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/category\\\/visualization\\\/#listItem\",\"name\":\"Visualization\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/#person\",\"name\":\"Raffael Marty\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1a1923877d9dbd00d99847074d62faab586cce0a9ee6a4c85e8bb7c46d7418ac?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Raffael Marty\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/author\\\/raffy\\\/#author\",\"url\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/author\\\/raffy\\\/\",\"name\":\"Raffael Marty\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1a1923877d9dbd00d99847074d62faab586cce0a9ee6a4c85e8bb7c46d7418ac?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Raffael Marty\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#webpage\",\"url\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/\",\"name\":\"AfterGlow Example \\u2013 Visualizing IP Tables Logs \\u2013 Future of Tech and Security: Strategy & Innovation with Raffy\",\"description\":\"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/2007\\\/06\\\/18\\\/afterglow-example-visualizing-ip-tables-logs\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/author\\\/raffy\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/author\\\/raffy\\\/#author\"},\"datePublished\":\"2007-06-18T11:13:13-06:00\",\"dateModified\":\"2007-06-18T11:34:39-06:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/\",\"name\":\"Cyber Security - Strategy and Innovation\",\"description\":\"Insights at the intersection of cybersecurity, strategy, and innovation.\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/raffy.ch\\\/blog\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"AfterGlow Example \u2013 Visualizing IP Tables Logs \u2013 Future of Tech and Security: Strategy & Innovation with Raffy","description":"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my","canonical_url":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#blogposting","name":"AfterGlow Example \u2013 Visualizing IP Tables Logs \u2013 Future of Tech and Security: Strategy & Innovation with Raffy","headline":"AfterGlow Example &#8211; Visualizing IP Tables Logs","author":{"@id":"https:\/\/raffy.ch\/blog\/author\/raffy\/#author"},"publisher":{"@id":"https:\/\/raffy.ch\/blog\/#person"},"image":{"@type":"ImageObject","url":"http:\/\/raffy.ch\/blog\/wp-content\/uploads\/2007\/06\/test.gif","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#articleImage"},"datePublished":"2007-06-18T11:13:13-06:00","dateModified":"2007-06-18T11:34:39-06:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#webpage"},"isPartOf":{"@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#webpage"},"articleSection":"Log Analysis, Visualization"},{"@type":"BreadcrumbList","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/raffy.ch\/blog#listItem","position":1,"name":"Home","item":"https:\/\/raffy.ch\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/raffy.ch\/blog\/category\/visualization\/#listItem","name":"Visualization"}},{"@type":"ListItem","@id":"https:\/\/raffy.ch\/blog\/category\/visualization\/#listItem","position":2,"name":"Visualization","item":"https:\/\/raffy.ch\/blog\/category\/visualization\/","nextItem":{"@type":"ListItem","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#listItem","name":"AfterGlow Example &#8211; Visualizing IP Tables Logs"},"previousItem":{"@type":"ListItem","@id":"https:\/\/raffy.ch\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#listItem","position":3,"name":"AfterGlow Example &#8211; Visualizing IP Tables Logs","previousItem":{"@type":"ListItem","@id":"https:\/\/raffy.ch\/blog\/category\/visualization\/#listItem","name":"Visualization"}}]},{"@type":"Person","@id":"https:\/\/raffy.ch\/blog\/#person","name":"Raffael Marty","image":{"@type":"ImageObject","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/1a1923877d9dbd00d99847074d62faab586cce0a9ee6a4c85e8bb7c46d7418ac?s=96&d=mm&r=g","width":96,"height":96,"caption":"Raffael Marty"}},{"@type":"Person","@id":"https:\/\/raffy.ch\/blog\/author\/raffy\/#author","url":"https:\/\/raffy.ch\/blog\/author\/raffy\/","name":"Raffael Marty","image":{"@type":"ImageObject","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1a1923877d9dbd00d99847074d62faab586cce0a9ee6a4c85e8bb7c46d7418ac?s=96&d=mm&r=g","width":96,"height":96,"caption":"Raffael Marty"}},{"@type":"WebPage","@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#webpage","url":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/","name":"AfterGlow Example \u2013 Visualizing IP Tables Logs \u2013 Future of Tech and Security: Strategy & Innovation with Raffy","description":"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/raffy.ch\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/#breadcrumblist"},"author":{"@id":"https:\/\/raffy.ch\/blog\/author\/raffy\/#author"},"creator":{"@id":"https:\/\/raffy.ch\/blog\/author\/raffy\/#author"},"datePublished":"2007-06-18T11:13:13-06:00","dateModified":"2007-06-18T11:34:39-06:00"},{"@type":"WebSite","@id":"https:\/\/raffy.ch\/blog\/#website","url":"https:\/\/raffy.ch\/blog\/","name":"Cyber Security - Strategy and Innovation","description":"Insights at the intersection of cybersecurity, strategy, and innovation.","inLanguage":"en-US","publisher":{"@id":"https:\/\/raffy.ch\/blog\/#person"}}]},"og:locale":"en_US","og:site_name":"Future of Tech and Security: Strategy &amp; Innovation with Raffy \u2013 Insights at the intersection of cybersecurity, strategy, and innovation.","og:type":"article","og:title":"AfterGlow Example \u2013 Visualizing IP Tables Logs \u2013 Future of Tech and Security: Strategy &amp; Innovation with Raffy","og:description":"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my","og:url":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/","og:image":"https:\/\/raffy.ch\/blog\/wp-content\/uploads\/2025\/09\/ogimage.png","og:image:secure_url":"https:\/\/raffy.ch\/blog\/wp-content\/uploads\/2025\/09\/ogimage.png","og:image:width":512,"og:image:height":512,"article:published_time":"2007-06-18T16:13:13+00:00","article:modified_time":"2007-06-18T16:34:39+00:00","twitter:card":"summary","twitter:site":"@raffaelmarty","twitter:title":"AfterGlow Example \u2013 Visualizing IP Tables Logs \u2013 Future of Tech and Security: Strategy &amp; Innovation with Raffy","twitter:description":"I am sitting in Seville, at the First conference, where I will be teaching a workshop on Wednesday. The topic is going to be insider threat visualization. While sitting in some of the sessions here, I was playing with my iptables logs. Here is a command I am running to generate a graph from my","twitter:creator":"@raffaelmarty","twitter:image":"https:\/\/raffy.ch\/blog\/wp-content\/uploads\/2025\/09\/ogimage.png"},"aioseo_meta_data":{"post_id":"102","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-06-08 17:04:38","updated":"2025-06-12 19:59:55","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/raffy.ch\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/raffy.ch\/blog\/category\/visualization\/\" title=\"Visualization\">Visualization<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAfterGlow Example \u2013 Visualizing IP Tables Logs\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/raffy.ch\/blog"},{"label":"Visualization","link":"https:\/\/raffy.ch\/blog\/category\/visualization\/"},{"label":"AfterGlow Example &#8211; Visualizing IP Tables Logs","link":"https:\/\/raffy.ch\/blog\/2007\/06\/18\/afterglow-example-visualizing-ip-tables-logs\/"}],"_links":{"self":[{"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/posts\/102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/comments?post=102"}],"version-history":[{"count":0,"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/posts\/102\/revisions"}],"wp:attachment":[{"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/media?parent=102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/categories?post=102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/raffy.ch\/blog\/wp-json\/wp\/v2\/tags?post=102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}