{"id":40151,"date":"2020-01-31T20:49:28","date_gmt":"2020-01-31T17:49:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/bitva-koderov-ya-protiv-togo-parnya-s-vnc"},"modified":"2020-01-31T20:49:28","modified_gmt":"2020-01-31T17:49:28","slug":"bitva-koderov-ya-protiv-togo-parnya-s-vnc","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc","title":{"rendered":"Coder Battle: Me vs the guy with VNC","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>In <noindex><a rel=\"nofollow\" href=\"https:\/\/martinrue.com\/\">this blog<\/a><\/noindex> Many programmer anecdotes have been published. I enjoy reminiscing about my past foolishness. Well, here\u2019s another such story.<\/p>\n<p>I first got interested in computers, especially programming, when I was about 11 years old. In middle school,<b>higher level of isolation, as if one controller is broken, the problem is confined to that specific context).<\/b>I spent most of my free time tinkering with my C64 and writing in BASIC, and then cutting out bad code with scissors. <noindex><a rel=\"nofollow\" href=\"https:\/\/martinrue.com\/give-yourself-more-playtime\/\">I'm not joking, with scissors.<\/a><\/noindex>.<\/p>\n<p>After school (at around 16 years old), British kids typically go to college, where they choose three or four subjects to study before going to university. Given my love for the beige box and tape recorder at home, I decided that studying 'computing' at college was the right choice.<\/p>\n<p>I enjoyed the course more than I expected; there I was first introduced to Pascal and Delphi.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nIn between classes, students could work at any available machine in the computer lab. Imagine: a huge room designed for about a hundred people, with rows of tables lined with machines \u2014 like those where the monitor sits on the system unit. The constant hum of fans, mouse balls buzzing across tables without stopping for a second. There\u2019s a strange smell in the air, as if 50-100 hormonally charged teenagers are periodically replaced to cool down a hundred Pentium III chips.<\/p>\n<p>Despite health risks, I enjoyed sitting at the computer whenever I got a free moment.<\/p>\n<p>An admin was on duty, a short middle-aged man appointed to the role due to his relentless desire to become a tyrannical dictator, or so I assume. To say he was on duty is an understatement; the guy truly loved his job. He was tasked with keeping order so that no one used the student computers for anything inappropriate.<\/p>\n<p>To this day, my intuition tells me that the admin's bonus was directly tied to the number of students he caught and kicked out of the computer lab. I'm pretty sure that guy paid off his mortgage early.<\/p>\n<p>He sat in the far corner of the computer lab at a corner desk. One could confidently assume that his prolific monitors had found a way to reproduce with an impressively short gestation period\u2014there were so many of them. It was left to wonder whether he could indeed keep track of them all. Of course, I'm joking\u2026 I did mention that he took his work very seriously?<\/p>\n<p>At that time, the computer network was running on Windows 2000. Soon I discovered that each time I logged in, a script would run that launched the VNC server from an admin account for remote desktop access. Whenever that guy wanted to keep an eye on you, he would connect directly to your machine and watch. It was creepy, and now that I think about it, probably illegal.<\/p>\n<p>Having sharpened my skills on BASIC and C64, I was now writing in C and even a bit in C++. Back then, I was also very fascinated by the D language, which addressed some of the shortcomings of C++, as I saw it then.<\/p>\n<p>I usually entered the computer lab to read something new about D or to play around with the Digital Mars D compiler. Occasionally, distracted from thoughts about the great future of D, I wrote C code to hack other Win32 programs through their window descriptors.<\/p>\n<p>Back in the good old days of Win32 programming, finding a window descriptor was the simplest method for hacking into other programs. Obviously, all GUI programs in Windows had a window, even if it wasn\u2019t displayed on the screen. By writing a program to extract the descriptor of another process (in essence, a reference to it), you could send it messages. This would allow for some basic operations, like hiding\/showing a program's window, as well as some really cool things, like forcing a process to load an arbitrary DLL into its memory space and start executing code. The fun really began after the DLL injection.<\/p>\n<p>In the first month and a half, this detective didn't particularly bother me; he connected to the VNC server on my machine only once or twice. But one specific session likely piqued his interest. I was writing some code in C to hide the Minesweeper windows (without closing them) to make it easier to play in class, and then I noticed that the white VNC icon in the system tray had turned black. This meant he was now watching me.<\/p>\n<p>I continued coding as usual, trying not to pay attention to him. Meanwhile, the machine began to noticeably lag, struggling to transmit the maximum frame rate to one of the countless monitors in the corner of the room. Windows nearly stopped responding, and when my patience wore thin, I logged off and called it a day.<\/p>\n<p>During the following visits to the computer lab, Columbo showed a lively interest in what I was doing almost every time. After about the fourth visit, I decided that something needed to be done.<\/p>\n<p>I admit that a reasonable, rational person could have simply raised this issue directly with him or his boss. However, I always fell prey to temptation and quickly convinced myself to adopt an entirely different strategy.<\/p>\n<p>\u2014 You won't be able to do anything without that VNC server! \u2014 I calmly and firmly told myself a few times.<\/p>\n<p>I needed to kill VNC.<\/p>\n<p>I started entering the computer lab with large groups of students and sitting as far away from the monitor corner as possible. For a while, this worked and gave me some time to check ideas.<\/p>\n<p>My first attempt, I think you'll agree, was rather weak. Right-clicking on the VNC icon in the system tray, I saw a menu with the magic letters E-X-I-T. Unfortunately, the letters were displayed in gray outline text. The administrator had disabled the 'Exit' menu item via the group policy editor. I tried to kill the process from Task Manager, but of course, it was invisible to me, as it was running under another, more privileged account. Nothing came of it.<\/p>\n<p>The VNC server runs on TCP port 5900, I remembered. My next plan was to send corrupted packets to that port to freeze it.<\/p>\n<p>For several days, I was analyzing the protocol, sending various forms of correctly structured nonsense to port 5900 and hoping it would break. Eventually, that didn't work either.<\/p>\n<p>I had already started to think I wouldn\u2019t be able to get rid of this thing when it suddenly struck me: there should be a window! I need to display it. Maybe it has a nice juicy 'Shutdown' button that I can put to good use!<\/p>\n<p>I ran my nearly perfect C code to find the main window handle of another process\u2014and I actually found VNC. I felt elated when my fingers typed <code>WM_SHOWWINDOW<\/code>. Can you guess what I saw before me?<\/p>\n<p>Nothing!<\/p>\n<p>Now I was curious\u2026 it had a window, but it was ignoring my messages. I double-checked my code to make sure it was working. I tested it on several other processes, and it worked perfectly. I tried sending other messages to the VNC window, but still nothing.<\/p>\n<p>And then it struck me again!<\/p>\n<p>Thanks to a very thick <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.co.uk\/Programming-Windows%C2%AE-Microsoft-Charles-Petzold\/dp\/157231995X\">the book<\/a><\/noindex> book by Charles Petzold, I had thoroughly studied how Win32 processes work within the system. Every Win32 application has a window and a 'message queue.' Messages from user interactions, as well as messages sent by Windows itself, go into the queue, and the application decides how to handle them.<\/p>\n<p>Not too interesting on its own. But when I realized that a sufficiently large unhandled message queue acts as a heuristic for intervention into a frozen process by the Window Process Manager, I was sweating pure serotonin.<\/p>\n<p>Without losing a second, I returned to my C code, ready to send another message to the VNC main window <code>WM_SHOWWINDOW<\/code>. In a loop. Eternal. So, a multitude of messages <code>WM_SHOWWINDOW<\/code>, which I now knew VNC would try to completely ignore\u2026 at its own risk.<\/p>\n<p>I compiled and ran the 4 KB of the most free-spirited code of my life. About three seconds later, Windows reported that the process <code>vncserver.exe<\/code> was not responding and made an offer I simply couldn\u2019t refuse:<\/p>\n<blockquote><p><i><b>Do you want to end this process?<\/b><\/i><\/p><\/blockquote>\n<p>\nHell YES!<\/p>\n<p>Let me confess, for the rest of the day I was unbearably pleased with myself.<\/p>\n<p>After several hours spent processing my new superpower, I decided how I would use it. Simply killing the session right in front of him was too easy. I had a better idea \u2014 to disappear completely.<\/p>\n<p>After <noindex><a rel=\"nofollow\" href=\"https:\/\/martinrue.com\/zzuy-a-lesson-in-perseverance\">first combat baptism with socket programming<\/a><\/noindex> I realized that I could write code that would do two things. First, it would occupy the recently freed TCP port 5900, which was previously occupied by an ignorant VNC server process. Then it would create a new TCP connection to the VNC server of the specified machine. The code would simply proxy all data between the two sockets, and Columbo would think he was connecting to me when, in reality, he would be connecting to a completely different VNC server.<\/p>\n<p>My code would act as a secret bridge between me and some other poor soul of my choosing. It was brilliant.<\/p>\n<p>I immediately started writing my fake VNC bridge. Columbo connected to me several times, but I kept programming right in front of him. I concluded that he had no idea about my actions, even though I was writing obvious things like port numbers and comments such as <code>\/\/ \u041f\u0440\u043e\u0449\u0430\u0439, \u0436\u0443\u0442\u043a\u0438\u0439 \u0448\u043f\u0438\u043e\u043d VNC<\/code>.<\/p>\n<p>A couple of days later, I couldn\u2019t get the code to work correctly. What's worse, I was practically continuously working with the black VNC icon in the system tray. As long as it was connected, I couldn't free the port to test my code.<\/p>\n<p>If only I had known about <code>netcat<\/code>!<\/p>\n<p>Eventually, my nerves couldn't take it anymore; after all, I was an impatient 17-year-old guy. Watching the white VNC server icon turn black again, I flipped out, opened the original code that filled the message queue, and ran it in front of him. I even waited a couple of seconds before pressing <code>End Process<\/code>, just to make sure he saw it.<\/p>\n<p>If pressing that button hadn\u2019t fully convinced me it was worth it, his leap from behind his fortress of monitors to quickly approach me and kick me out of the room definitely made it worth it.<\/p>\n<p>In the end, I was banned from the network for two weeks. I thought it was a fair punishment. About three weeks later, the VNC server disappeared from the boot scripts and never appeared again. I never found out if my incident played any role in this, but it completely ruined my plan for fantastical enrichment by selling my VNC tool to oppressed students in computer labs across the country.<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/485756\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445. \u0427\u0442\u043e \u0436, \u0432\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0442\u0430\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u042f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u043a\u043e\u043b\u043e 11 \u043b\u0435\u0442. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0448\u043a\u043e\u043b\u044b \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044f \u0432\u043e\u0437\u0438\u043b\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c C64 \u0438 \u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u0411\u0435\u0439\u0441\u0438\u043a\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0440\u0435\u0437\u0430\u043b \u043d\u043e\u0436\u043d\u0438\u0446\u0430\u043c\u0438 \u043f\u043b\u043e\u0445\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-40151","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 \u043a\u043e\u0434\u0435\u0440\u043e\u0432: \u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u043e\u0433\u043e \u043f\u0430\u0440\u043d\u044f \u0441 VNC | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-31T17:49:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-01-31T17:49:28+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Coder Battle: Me vs. That Guy with VNC | ProHoster","description":"This blog has published quite a few stories from programmers. I enjoy reminiscing about my old mistakes.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 \u043a\u043e\u0434\u0435\u0440\u043e\u0432: \u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u043e\u0433\u043e \u043f\u0430\u0440\u043d\u044f \u0441 VNC | ProHoster","og:description":"\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445.","og:url":"https:\/\/prohoster.info\/en\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-31T17:49:28+00:00","article:modified_time":"2020-01-31T17:49:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"40151","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,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:44:38","updated":"2022-09-29 08:39:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/40151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=40151"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/40151\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=40151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=40151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=40151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}