{"id":484,"date":"2018-08-19T10:54:51","date_gmt":"2018-08-19T08:54:51","guid":{"rendered":"https:\/\/sebastian.fam-knopp.de\/?p=484"},"modified":"2018-08-19T10:56:24","modified_gmt":"2018-08-19T08:56:24","slug":"visky-web-visuelle-kryptografie-mit-angular","status":"publish","type":"post","link":"https:\/\/sebastian.knopp.it\/?p=484","title":{"rendered":"VisKy-Web &#8211; Visuelle Kryptografie mit Angular"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">Aufgabenstellung<\/h4>\n\n\n\n<p>Als Nebenjob habe ich von Mai bis Juli eine Stelle beim <em>&#8222;Bonn-Aachen International Center for Information Technology (b-it)&#8220;<\/em> angenommen. Hier wurde ich als SHK mit der Neuimplementierung eines Webtools zur Berechnung von VisKy-Bildern betraut. Das alte Tool lief noch auf Javabasis mit etwas PHP und Python und sollte daher austauscht werden. Das Tool sollte rechtzeitig zum Sommerfest der Universit\u00e4t fertig werden, wo ich es dann f\u00fcr die G\u00e4ste an einem Stand auch pr\u00e4sentieren und erl\u00e4utern sollte. Man gab mir also gute zwei Monate Zeit.<\/p>\n\n\n\n<p>Ein VisKy-Bild setzt sich zusammen aus zwei verschl\u00fcsselten Teilbildern, dem <strong>Schl\u00fcssel<\/strong> und der <strong>Nachricht<\/strong>, welche \u00fcbereinander gelegt wieder ein normales Bild ergeben. Jedes Teilbild f\u00fcr sich genommen sieht aus wie reines Bildrauschen und ist bestenfalls ohne erkennbare Muster. Es l\u00e4sst sich also mit nur einem Teilbild, egal ob Schl\u00fcssel oder Nachricht, kein Anderes rekonstruieren.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Auswahl der Frameworks und Libraries<\/h4>\n\n\n\n<p>Die Anforderung war, das alte Tool, welches Bilder als Upload entgegennahm und dann mittels ImageMagick und Python serverseitig weiterverarbeitete, zu ersetzen und ein rein im Browser arbeitendes Tool zu bauen, welches die Teilbilder gemeinsam in einer generierten PDF ausgibt.<\/p>\n\n\n\n<p>Ich ben\u00f6tigte also ein JS-Framework f\u00fcr den Browser, einen JS-Ersatz f\u00fcr ImageMagick und ein JS-Tool zum Erzeugen von PDF-Dateien.<\/p>\n\n\n\n<p>Aufgrund vorangegangener guter Erfahrungen mit Angular stand dieses Framework quasi gleich zu Anfang schon fest. Die dort bereitgestellten Services und die Modularisierung stellten sich sp\u00e4ter als gro\u00dfe Hilfe dar.<\/p>\n\n\n\n<p>F\u00fcr die Bildbearbeitung habe ich mit diversen JS-Frameworks experimentiert. Alle decken immer die etwa gleichen Grundfunktionen mit 2-3 spezifischen Extras ab, aber keines bot mir einfache Methoden zur Umrechnung des Bildes in Schwarz-Wei\u00df (nicht Graustufen), Skalierung und Wei\u00dfwertberechnung. Ich entschied mich also dazu diese drei Features mittels eines eigenen Angular-Services neu zu implementieren.<\/p>\n\n\n\n<p>Des weiteren nutzte ich <a href=\"http:\/\/pdfmake.org\/#\/\" target=\"_blank\">pdfmake<\/a>\u00a0zur Generierung von PDFs mittels einfacher JSON-Bl\u00f6cke. Eine geniale Library, bei der man zwar manchmal etwas rumprobieren muss, die aber dann auch sehr saubere PDFs erzeugen kann und das ohne, dass es wie ein laienhaftes Textdokument aussieht. Sie scheint auch in Ministerien und dergleichen Einsatz zu finden, zumindest gab es bei der Recherche einige interessante Beispiel-PDFs auf StackOverflow.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Bildauswahl und Vorbereitung<\/h4>\n\n\n\n<ul class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_2-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1114\" height=\"629\" data-attachment-id=\"495\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=495\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_2-2.png\" data-orig-size=\"1114,629\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visky_2\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_2-2-300x169.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_2-2-1024x578.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_2-2.png\" alt=\"\" data-id=\"495\" data-link=\"https:\/\/sebastian.fam-knopp.de\/?attachment_id=495\" class=\"wp-image-495\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_2-2.png 1114w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_2-2-300x169.png 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_2-2-768x434.png 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_2-2-1024x578.png 1024w\" sizes=\"auto, (max-width: 1114px) 100vw, 1114px\" \/><\/a><figcaption>Webcam oder Upload<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_3-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1288\" height=\"675\" data-attachment-id=\"496\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=496\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_3-1.png\" data-orig-size=\"1288,675\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visky_3\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_3-1-300x157.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_3-1-1024x537.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_3-1.png\" alt=\"\" data-id=\"496\" data-link=\"https:\/\/sebastian.fam-knopp.de\/?attachment_id=496\" class=\"wp-image-496\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_3-1.png 1288w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_3-1-300x157.png 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_3-1-768x402.png 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_3-1-1024x537.png 1024w\" sizes=\"auto, (max-width: 1288px) 100vw, 1288px\" \/><\/a><figcaption>das hochgeladene Bild<\/figcaption><\/figure><\/li><\/ul>\n\n\n\n<p>Zu Anfang lassen sich Bilder entweder per Dateiupload oder per Webcam aufnehmen. F\u00fcr Letzteres setzte ich auf die Erweiterung\u00a0<a href=\"https:\/\/www.npmjs.com\/package\/ngx-webcams\">ngx-webcam<\/a>.<\/p>\n\n\n\n<p>Das fertige Bild wird weitergegeben an einen Angular-Service, welche mittels Promises die Daten durch die von mir selbst entwickelte Bildverarbeitungs-Toolchain schleust und jeden Zwischenschritt gesondert zur Darstellung f\u00fcr den Nutzer abspeichert.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright is-resized\"><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_4-1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"497\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=497\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_4-1.png\" data-orig-size=\"1294,688\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visky_4-1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_4-1-300x160.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_4-1-1024x544.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_4-1.png\" alt=\"\" class=\"wp-image-497\" width=\"324\" height=\"172\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_4-1.png 1294w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_4-1-300x160.png 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_4-1-768x408.png 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_4-1-1024x544.png 1024w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\" \/><\/a><figcaption>Schwellwert bestimmen<\/figcaption><\/figure>\n\n\n\n<p>Zun\u00e4chst wird das Bild skaliert, anschlie\u00dfend in ein Schwarz-Wei\u00dfbild umgerechnet und zuletzt hat der Nutzer die M\u00f6glichkeit den Schwellwert f\u00fcr den \u00dcbergang zwischen schwarz und wei\u00df mittels Regler dynamisch anzupassen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">VisKy<\/h4>\n\n\n\n<figure class=\"wp-block-image alignright\"><img loading=\"lazy\" decoding=\"async\" width=\"128\" height=\"23\" data-attachment-id=\"485\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=485\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_blocks.png\" data-orig-size=\"128,23\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visky_blocks\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;m\u00f6gliche VisKy-Bl\u00f6cke&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_blocks.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_blocks.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_blocks.png\" alt=\"\" class=\"wp-image-485\"\/><figcaption>m\u00f6gliche VisKy-Bl\u00f6cke<\/figcaption><\/figure>\n\n\n\n<p>Nun geht es weiter mit der eigentlichen VisKy-Arbeit. Der Nutzer soll zun\u00e4chst einen Schl\u00fcssel aus sechs unterschiedlichen Bl\u00f6cken in beliebiger L\u00e4nge definieren. Das m\u00fcsste er nun theoretisch f\u00fcr jeden Pixel seines Bildes tun. Daher l\u00e4sst sich der Rest mit einem Zufallsgenerator automatisch erzeugen.<\/p>\n\n\n\n<ul class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1293\" height=\"684\" data-attachment-id=\"489\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=489\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_5.png\" data-orig-size=\"1293,684\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visky_5\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_5-300x159.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_5-1024x542.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_5.png\" alt=\"\" data-id=\"489\" data-link=\"https:\/\/sebastian.fam-knopp.de\/?attachment_id=489\" class=\"wp-image-489\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_5.png 1293w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_5-300x159.png 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_5-768x406.png 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_5-1024x542.png 1024w\" sizes=\"auto, (max-width: 1293px) 100vw, 1293px\" \/><\/a><figcaption>Schl\u00fcssel erzeugen<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1272\" height=\"789\" data-attachment-id=\"490\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=490\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_6.png\" data-orig-size=\"1272,789\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visky_6\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_6-300x186.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_6-1024x635.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_6.png\" alt=\"\" data-id=\"490\" data-link=\"https:\/\/sebastian.fam-knopp.de\/?attachment_id=490\" class=\"wp-image-490\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_6.png 1272w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_6-300x186.png 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_6-768x476.png 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_6-1024x635.png 1024w\" sizes=\"auto, (max-width: 1272px) 100vw, 1272px\" \/><\/a><figcaption>fertiger Schl\u00fcssel<\/figcaption><\/figure><\/li><\/ul>\n\n\n\n<p>Ein weiterer Service implementiert nun die eigentliche VisKy-Logik und setzt an jeder Stelle wo im gerade erzeugten Schl\u00fcssel ein schwarzes Pixel sein soll das gegenteilige Pixel. F\u00fcr Pixel 1 in obiger Grafik also bspw. dann Pixel 4, sodass zusammen ein schwarzer Punkt erzeugt wird.<br\/>Da jedes Pixel nun aus 4 Pixeln besteht, wird das Bild nun auch doppelt so gro\u00df (daher die Skalierung zu Anfang).<\/p>\n\n\n\n<p>Die erzeugten Bilder werden in der PDF-Library, welche mithilfe eines dritten Services angesteuert werden kann, zu einem Dokument zusammengefasst, welches der Browser erzeugt und anschlie\u00dfend &#8222;runterl\u00e4dt&#8220;.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright is-resized\"><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_8-1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"498\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=498\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_8-1.png\" data-orig-size=\"1300,788\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visky_8-1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_8-1-300x182.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_8-1-1024x621.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2018\/08\/visky_8-1.png\" alt=\"\" class=\"wp-image-498\" width=\"325\" height=\"197\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_8-1.png 1300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_8-1-300x182.png 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_8-1-768x466.png 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_8-1-1024x621.png 1024w\" sizes=\"auto, (max-width: 325px) 100vw, 325px\" \/><\/a><figcaption>fertige PDF<\/figcaption><\/figure>\n\n\n\n<p>Druckt man das Ergebnis nun auf OHP-Folien, kann man das Ergebnis sehr sch\u00f6n bestaunen. F\u00fcr die Besucher, gerade auch mit Kindern, war es auf jeden Fall interessant.<\/p>\n\n\n\n<p>Wer will kann das Tool selber <a href=\"https:\/\/visky.bit.uni-bonn.de\/\" target=\"_blank\">hier<\/a> ausprobieren!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aufgabenstellung Als Nebenjob habe ich von Mai bis Juli eine Stelle beim &#8222;Bonn-Aachen International Center for Information Technology (b-it)&#8220; angenommen. Hier wurde ich als SHK mit der Neuimplementierung eines Webtools zur Berechnung von VisKy-Bildern betraut. Das alte Tool lief noch auf Javabasis mit etwas PHP und Python und sollte daher austauscht werden. Das Tool sollte [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":493,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-484","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2018\/08\/visky_1.png","jetpack_shortlink":"https:\/\/wp.me\/p4onxe-7O","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts\/484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=484"}],"version-history":[{"count":2,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts\/484\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts\/484\/revisions\/500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/media\/493"}],"wp:attachment":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}