{"id":2171,"date":"2020-05-11T16:03:37","date_gmt":"2020-05-11T16:03:37","guid":{"rendered":"http:\/\/elbsolutions.com\/projects\/?p=2171"},"modified":"2022-02-03T11:24:26","modified_gmt":"2022-02-03T17:24:26","slug":"urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint","status":"publish","type":"post","link":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/","title":{"rendered":"URLDownloadToFile() is now a 4 letter word. It is identified as a virus &#8211; time to find a diff. way to download from SharePoint"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I was quite miffed that Malwarebytes identified my code as a virus. I had some Excel VBA macros that downloaded files from sharepoint in a fractoin of the time compared to opening them as a file from SharePoint. Brilliant &#8230; until &#8220;MalwareBytes just saved your life by killing Excel for you before you were doomed forever&#8221; &#8230; but &#8230; but hey &#8211; my program just poof &#8230; gone. Changes, long macro (that during VPN\/Covid days) takes forever and now &#8230; gone. After some debugging it was the line URLDownloadToFile that paused Excel for about 4 minutes before then caused MalwareBytes to kill it. I did put in a ticket (and expect it to never be addressed) but suggested that if a file is in the trusted sites list &#8211; perhaps don&#8217;t view that as an exploit. It is likely faster to re-program things. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Suggestions online only have 3 options to download from SharePoint.  <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>map a drive, use the drive (and optionally kill the drive mapping). This seems lame. Plus you are opening a file using Explorer type access &#8211; which I said was slow<\/li><li>Use URLDownloadToFile() which &#8211; EVERYONE IS USING &#8211; that is why it is likely why people who make viruses use it &#8211; it seems to be quite popular with Virus developers<\/li><li>REST &#8211; way to complicated &#8211; no one has done it without asking for usernames and passwords everytime (I did figure it out &#8211; and this is how I am doing it now)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Alas &#8211; I DID figure out the bits and pieces to NOT as for credentials and to camp-out on an existing connection to SharePoint. I am doing this from an Excel VBA macro &#8211; so we are 99% guaranteed that we are connected. Complicated &#8211; you have no idea &#8211; YES IT IS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is my journey:<\/p>\n\n\n\n<!--more-->\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.google.com\/search?q=%22URLDownloadToFile%22+malwarebytes+memory+heap+exploit&amp;rlz=1C1CHBF_enCA894CA894&amp;sxsrf=ALeKk01O-DrEJ_thSGocHQcinAgEKywg5w:1588634282095&amp;ei=qqKwXqGcBcjI0PEP7NWa4A0&amp;start=10&amp;sa=N&amp;ved=2ahUKEwihmb_wq5vpAhVIJDQIHeyqBtwQ8NMDegQIDBAy&amp;biw=1920&amp;bih=888\">&#8220;URLDownloadToFile&#8221; malwarebytes memory heap exploit<\/a> &#8211; Google search as to how MalwareBytes saw my UrlDownloadToFile() command<\/li><li><strong>TODO: Fill these links in &#8211; I seemed to have closed all my browser windows for this topic so I will have to regain them<\/strong>. I have a few<ul><li><a href=\"https:\/\/sharepoint.stackexchange.com\/questions\/255264\/sharepoint-api-and-vba-access-denied\">This guy has most of the code where I started<\/a> &#8211; in specific <a href=\"https:\/\/sharepoint.stackexchange.com\/users\/80489\/jefferson-gomes\">Jefferson Gomes<\/a>&#8216; response on Jan 14, 2019. However as he admits &#8211; it needs some work and his main goal was to get a SPOIDCR cookie &#8211; this is used INSTEAD OF CREDENTIALS. I<\/li><li>If you read the code, to figure out your STS Url &#8211; I had to search more. <a href=\"https:\/\/gist.github.com\/nddipiazza\/1a810cd6f94782760933163b077dade7\">This code helped immensely<\/a> &#8211; there were others but they did NOT seem simple nor were they helpful. So go to the code in the link and only run the <code>Get-UserRealmUrl()<\/code> and then you can put a stop statement.<\/li><li>Then I added a bunch of other code so it flows nicely and tested it with a <a href=\"https:\/\/docs.microsoft.com\/en-us\/sharepoint\/dev\/sp-add-ins\/working-with-folders-and-files-with-rest#working-with-files-by-using-rest\">file download REST endpoint<\/a>. I already had one, but for the reader &#8211; use this code and replace the credentials part with your cookie header starting with SPOIDCR: and ending with the end of the cookie token itself. See down below for the GET code in VBA<\/li><\/ul><\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nTS URL\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\"><li>Then I cached the Cookie and the Cookie Timestamp in the users&#8217; registry so i would not have to do the 3 REST operations each time to get the current cookie. <ul><li>The cookie seems to last for an hour &#8211; so i react at 55 minutes. So to get your <a href=\"https:\/\/stackoverflow.com\/questions\/1600875\/how-to-get-the-current-datetime-in-utc-from-an-excel-vba-macro\">current time in VBA in the YYYY-DD-MMTHH:mm:ssZ<\/a> format you need do some jiggery pokery to get the current-time-plus-5-minutes and the cookie time into a VBA Date variable then compare and either get a new cookie or use a cached one. For that I had to <ul><li>figure out that format above is one of <a href=\"https:\/\/stackoverflow.com\/questions\/8405087\/what-is-this-date-format-2011-08-12t201746-384z\">ISO 8601 Date<\/a> formats. Regex seems to be the way to get it and <a href=\"https:\/\/www.myintervals.com\/blog\/2009\/05\/20\/iso-8601-date-validation-that-doesnt-suck\/\">THIS website&#8217;s regex<\/a> (actually <a href=\"https:\/\/stackoverflow.com\/questions\/12756159\/regex-and-iso8601-formatted-datetime\">from this stackoverflow<\/a>) is NOT PERFECT AND IS NOT the answer for the format above <span style=\"text-decoration: underline;\">but its close<\/span>. My Regex is closer &#8211; but i didn&#8217;t perfect it &#8211; it is good enough except the milliseconds part &#8211; that needs the work still (but I didn&#8217;t need it). <ul><li><code>^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)([0-5]\\d))?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$<\/code><\/li><\/ul><\/li><\/ul><\/li><li>One thing I have NOT done and need to is that if you come back lets say 50 minutes later and try your cookie and the user explicitly logged off an active session &#8211; what the program might do. I would LIKE it to open up a window and prompt for a login and carry on. <\/li><li><\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The GET code for the SharePoint REST endpoint WITH THE COOKIE would look like<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#039;VBA Code\n&#039; note the cookkie variable would contain something like \n&#039; SPOIDCR: dhriso8&amp;amp;238dkk874kkr0P...UUIOEIUAjdsoei (shortened for readability)\n\nSet oRequest = New WinHttp.WinHttpRequest\nWith oRequest\n    .Open &quot;GET&quot;, sUrl, False\n    .setRequestHeader &quot;Content-Type&quot;, &quot;application\/json&quot;\n    .setRequestHeader &quot;Cookie&quot;, cookkie\n    .setRequestHeader &quot;X-FORMS_BASED_AUTH_ACCEPTED&quot;, &quot;f&quot;\n\n        .send\n        .waitForResponse\n        sResult = .responseText\n\n    If oRequest.status = 200 Then\n        Dim oStream         As Object: Set oStream = CreateObject(&quot;ADODB.Stream&quot;)\n        oStream.Open\n        oStream.Type = 1\n        oStream.Write oRequest.responseBody\n        destFinalPath = fso.BuildPath(destFolder, destName)\n        oStream.SaveToFile destFinalPath, Abs(CInt(overwrite)) + 1\n        oStream.Close\n        DownloadFileB = Len(dir(destFinalPath)) &gt; 0\n\n        DownloadSpFileViaREST = destFinalPath\n\n        Exit Function\n    Else\n        Debug.Print .responseText\n    End If\n\n    Debug.Print PrettyPrintXML(sResult)\n    sResult = oRequest.status\n    Debug.Print sResult\nEnd With\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Note there is no Bearer Token: header etc. like the MS article would include &#8211; that is now just the cookie header.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was quite miffed that Malwarebytes identified my code as a virus. I had some Excel VBA macros that downloaded files from sharepoint in a fractoin of the time compared to opening them as a file from SharePoint. Brilliant &#8230; until &#8220;MalwareBytes just saved your life by killing Excel for you before you were doomed [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2171","post","type-post","status-publish","format-standard","hentry","category-general"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>URLDownloadToFile() is now a 4 letter word. It is identified as a virus - time to find a diff. way to download from SharePoint - ELB Solutions.com Inc.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"URLDownloadToFile() is now a 4 letter word. It is identified as a virus - time to find a diff. way to download from SharePoint - ELB Solutions.com Inc.\" \/>\n<meta property=\"og:description\" content=\"I was quite miffed that Malwarebytes identified my code as a virus. I had some Excel VBA macros that downloaded files from sharepoint in a fractoin of the time compared to opening them as a file from SharePoint. Brilliant &#8230; until &#8220;MalwareBytes just saved your life by killing Excel for you before you were doomed [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/\" \/>\n<meta property=\"og:site_name\" content=\"ELB Solutions.com Inc.\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-11T16:03:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-03T17:24:26+00:00\" \/>\n<meta name=\"author\" content=\"Etienne Bley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Etienne Bley\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/\"},\"author\":{\"name\":\"Etienne Bley\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#\\\/schema\\\/person\\\/51e717c68f4f5917c63baf88f0896c39\"},\"headline\":\"URLDownloadToFile() is now a 4 letter word. It is identified as a virus &#8211; time to find a diff. way to download from SharePoint\",\"datePublished\":\"2020-05-11T16:03:37+00:00\",\"dateModified\":\"2022-02-03T17:24:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/\"},\"wordCount\":794,\"articleSection\":[\"General\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/\",\"url\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/\",\"name\":\"URLDownloadToFile() is now a 4 letter word. It is identified as a virus - time to find a diff. way to download from SharePoint - ELB Solutions.com Inc.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#website\"},\"datePublished\":\"2020-05-11T16:03:37+00:00\",\"dateModified\":\"2022-02-03T17:24:26+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#\\\/schema\\\/person\\\/51e717c68f4f5917c63baf88f0896c39\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"URLDownloadToFile() is now a 4 letter word. It is identified as a virus &#8211; time to find a diff. way to download from SharePoint\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#website\",\"url\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/\",\"name\":\"ELB Solutions.com Inc.\",\"description\":\"Bringing all your IT Pieces together\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#\\\/schema\\\/person\\\/51e717c68f4f5917c63baf88f0896c39\",\"name\":\"Etienne Bley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g\",\"caption\":\"Etienne Bley\"},\"url\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/author\\\/etienne-bley\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"URLDownloadToFile() is now a 4 letter word. It is identified as a virus - time to find a diff. way to download from SharePoint - ELB Solutions.com Inc.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/","og_locale":"en_US","og_type":"article","og_title":"URLDownloadToFile() is now a 4 letter word. It is identified as a virus - time to find a diff. way to download from SharePoint - ELB Solutions.com Inc.","og_description":"I was quite miffed that Malwarebytes identified my code as a virus. I had some Excel VBA macros that downloaded files from sharepoint in a fractoin of the time compared to opening them as a file from SharePoint. Brilliant &#8230; until &#8220;MalwareBytes just saved your life by killing Excel for you before you were doomed [&hellip;]","og_url":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/","og_site_name":"ELB Solutions.com Inc.","article_published_time":"2020-05-11T16:03:37+00:00","article_modified_time":"2022-02-03T17:24:26+00:00","author":"Etienne Bley","twitter_misc":{"Written by":"Etienne Bley","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/#article","isPartOf":{"@id":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/"},"author":{"name":"Etienne Bley","@id":"https:\/\/elbsolutions.com\/projects\/#\/schema\/person\/51e717c68f4f5917c63baf88f0896c39"},"headline":"URLDownloadToFile() is now a 4 letter word. It is identified as a virus &#8211; time to find a diff. way to download from SharePoint","datePublished":"2020-05-11T16:03:37+00:00","dateModified":"2022-02-03T17:24:26+00:00","mainEntityOfPage":{"@id":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/"},"wordCount":794,"articleSection":["General"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/","url":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/","name":"URLDownloadToFile() is now a 4 letter word. It is identified as a virus - time to find a diff. way to download from SharePoint - ELB Solutions.com Inc.","isPartOf":{"@id":"https:\/\/elbsolutions.com\/projects\/#website"},"datePublished":"2020-05-11T16:03:37+00:00","dateModified":"2022-02-03T17:24:26+00:00","author":{"@id":"https:\/\/elbsolutions.com\/projects\/#\/schema\/person\/51e717c68f4f5917c63baf88f0896c39"},"breadcrumb":{"@id":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/elbsolutions.com\/projects\/urldownloadtofile-is-now-a-4-letter-word-nailed-as-a-virus-time-to-find-a-diff-way-to-download-from-sharepoint\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/elbsolutions.com\/projects\/"},{"@type":"ListItem","position":2,"name":"URLDownloadToFile() is now a 4 letter word. It is identified as a virus &#8211; time to find a diff. way to download from SharePoint"}]},{"@type":"WebSite","@id":"https:\/\/elbsolutions.com\/projects\/#website","url":"https:\/\/elbsolutions.com\/projects\/","name":"ELB Solutions.com Inc.","description":"Bringing all your IT Pieces together","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/elbsolutions.com\/projects\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/elbsolutions.com\/projects\/#\/schema\/person\/51e717c68f4f5917c63baf88f0896c39","name":"Etienne Bley","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g","caption":"Etienne Bley"},"url":"https:\/\/elbsolutions.com\/projects\/author\/etienne-bley\/"}]}},"_links":{"self":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts\/2171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/comments?post=2171"}],"version-history":[{"count":7,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts\/2171\/revisions"}],"predecessor-version":[{"id":2183,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts\/2171\/revisions\/2183"}],"wp:attachment":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/media?parent=2171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/categories?post=2171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/tags?post=2171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}