

{"id":5946,"date":"2017-05-14T21:36:33","date_gmt":"2017-05-15T02:36:33","guid":{"rendered":"https:\/\/rud.is\/b\/?p=5946"},"modified":"2018-03-10T07:54:27","modified_gmt":"2018-03-10T12:54:27","slug":"r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/","title":{"rendered":"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R"},"content":{"rendered":"<p>If you follow me on Twitter or monitor @Rapid7&#8217;s <a href=\"https:\/\/blog.rapid7.com\/2017\/05\/12\/wanna-decryptor-wncry-ransomware-explained\/\">Community Blog<\/a> you know I&#8217;ve been involved a bit in the WannaCry ransomworm triage.<\/p>\n<p>One thing I&#8217;ve been doing is making charts of the hourly contribution to the Bitcoin addresses that the current\/main attackers are using to accept ransom payments (which you really shouldn&#8217;t pay, now, even if you are impacted as it&#8217;s unlikely they&#8217;re actually giving up keys anymore because the likelihood of them getting cash out of the wallets without getting caught is pretty slim).<a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"5948\" data-permalink=\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/wanna1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&amp;ssl=1\" data-orig-size=\"2840,1070\" 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=\"wanna1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=300%2C113&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=510%2C192&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?resize=510%2C192&#038;ssl=1\" alt=\"\" width=\"510\" height=\"192\" class=\"aligncenter size-full wp-image-5948\" \/><\/a><\/p>\n<p>There&#8217;s a full-on CRAN-ified <a href=\"https:\/\/github.com\/jangorecki\/Rbitcoin\"><code>Rbitcoin<\/code><\/a> package but I didn&#8217;t need the functionality in it (yet) to do the monitoring. I posted a hastily-crafted gist on Friday so folks could play along at home, but the code here is a bit more nuanced (and does more).<\/p>\n<p>In the spirit of these R\u2076 posts, the following is presented without further commentary apart from the interwoven comments with the exception that this method captures super-micro-payments that do not necessarily translate 1:1 to victim count (it&#8217;s well within ball-park estimates but not precise w\/o introspecting each transaction).<\/p>\n<pre id=\"wanna-r-01\"><code class=\"language-r\">library(jsonlite)\r\nlibrary(hrbrthemes)\r\nlibrary(tidyverse)\r\n\r\n# the wallets accepting ransom payments\r\n\r\nwallets &lt;- c(\r\n  &quot;115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn&quot;,\r\n  &quot;12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw&quot;,\r\n  &quot;13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94&quot;\r\n)\r\n\r\n# easy way to get each wallet info vs bringing in the Rbitcoin package\r\n\r\nsprintf(&quot;https:\/\/blockchain.info\/rawaddr\/%s&quot;, wallets) %&gt;%\r\n  map(jsonlite::fromJSON) -&gt; chains\r\n\r\n# get the current USD conversion (tho the above has this, too)\r\n\r\ncurr_price &lt;- jsonlite::fromJSON(&quot;https:\/\/blockchain.info\/ticker&quot;)\r\n\r\n# calculate some basic stats\r\n\r\ntot_bc &lt;- sum(map_dbl(chains, &quot;total_received&quot;)) \/ 10e7\r\ntot_usd &lt;- tot_bc * curr_price$USD$last\r\ntot_xts &lt;- sum(map_dbl(chains, &quot;n_tx&quot;))\r\n\r\n# This needs to be modified once the counters go above 100 and also needs to\r\n# account for rate limits in the blockchain.info API\r\n\r\npaged &lt;- which(map_dbl(chains, &quot;n_tx&quot;) &gt; 50)\r\nif (length(paged) &gt; 0) {\r\n  sprintf(&quot;https:\/\/blockchain.info\/rawaddr\/%s?offset=50&quot;, wallets[paged]) %&gt;%\r\n    map(jsonlite::fromJSON) -&gt; chains2\r\n}\r\n\r\n# We want hourly data across all transactions\r\n\r\nmap_df(chains, &quot;txs&quot;) %&gt;%\r\n  bind_rows(map_df(chains2, &quot;txs&quot;)) %&gt;% \r\n  mutate(xts = anytime::anytime(time),\r\n         xts = as.POSIXct(format(xts, &quot;%Y-%m-%d %H:00:00&quot;), origin=&quot;GMT&quot;)) %&gt;%\r\n  count(xts) -&gt; xdf\r\n\r\n# Plot it\r\n\r\nggplot(xdf, aes(xts, y = n)) +\r\n  geom_col() +\r\n  scale_y_comma(limits = c(0, max(xdf$n))) +\r\n  labs(x = &quot;Day\/Time (GMT)&quot;, y = &quot;# Transactions&quot;,\r\n       title = &quot;Bitcoin Ransom Payments-per-hour Since #WannaCry Ransomworm Launch&quot;,\r\n       subtitle=sprintf(&quot;%s transactions to-date; %s total bitcoin; %s USD; Chart generated at: %s EDT&quot;,\r\n                        scales::comma(tot_xts), tot_bc, scales::dollar(tot_usd), Sys.time())) +\r\n  theme_ipsum_rc(grid=&quot;Y&quot;)<\/code><\/pre>\n<p>I hope all goes well with everyone as you try to ride out this ransomworm storm over the coming weeks. It will likely linger for quite a while, so make sure you patch!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you follow me on Twitter or monitor @Rapid7&#8217;s Community Blog you know I&#8217;ve been involved a bit in the WannaCry ransomworm triage. One thing I&#8217;ve been doing is making charts of the hourly contribution to the Bitcoin addresses that the current\/main attackers are using to accept ransom payments (which you really shouldn&#8217;t pay, now, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5948,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"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,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[91],"tags":[795,810,787],"class_list":["post-5946","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-r","tag-bitcoin","tag-post","tag-r6"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R - rud.is<\/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:\/\/rud.is\/b\/2017\/05\/14\/r\u2076-tracking-wannacry-bitcoin-wallet-payments-with-r\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R - rud.is\" \/>\n<meta property=\"og:description\" content=\"If you follow me on Twitter or monitor @Rapid7&#8217;s Community Blog you know I&#8217;ve been involved a bit in the WannaCry ransomworm triage. One thing I&#8217;ve been doing is making charts of the hourly contribution to the Bitcoin addresses that the current\/main attackers are using to accept ransom payments (which you really shouldn&#8217;t pay, now, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2017\/05\/14\/r\u2076-tracking-wannacry-bitcoin-wallet-payments-with-r\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-15T02:36:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-10T12:54:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"2840\" \/>\n\t<meta property=\"og:image:height\" content=\"1070\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R\",\"datePublished\":\"2017-05-15T02:36:33+00:00\",\"dateModified\":\"2018-03-10T12:54:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/\"},\"wordCount\":234,\"commentCount\":25,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1\",\"keywords\":[\"bitcoin\",\"post\",\"r6\"],\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/\",\"url\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/\",\"name\":\"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1\",\"datePublished\":\"2017-05-15T02:36:33+00:00\",\"dateModified\":\"2018-03-10T12:54:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1\",\"width\":2840,\"height\":1070},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rud.is\/b\/#website\",\"url\":\"https:\/\/rud.is\/b\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rud.is\/b\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\/\/rud.is\"],\"url\":\"https:\/\/rud.is\/b\/author\/hrbrmstr\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R - rud.is","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:\/\/rud.is\/b\/2017\/05\/14\/r\u2076-tracking-wannacry-bitcoin-wallet-payments-with-r\/","og_locale":"en_US","og_type":"article","og_title":"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R - rud.is","og_description":"If you follow me on Twitter or monitor @Rapid7&#8217;s Community Blog you know I&#8217;ve been involved a bit in the WannaCry ransomworm triage. One thing I&#8217;ve been doing is making charts of the hourly contribution to the Bitcoin addresses that the current\/main attackers are using to accept ransom payments (which you really shouldn&#8217;t pay, now, [&hellip;]","og_url":"https:\/\/rud.is\/b\/2017\/05\/14\/r\u2076-tracking-wannacry-bitcoin-wallet-payments-with-r\/","og_site_name":"rud.is","article_published_time":"2017-05-15T02:36:33+00:00","article_modified_time":"2018-03-10T12:54:27+00:00","og_image":[{"width":2840,"height":1070,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1","type":"image\/png"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R","datePublished":"2017-05-15T02:36:33+00:00","dateModified":"2018-03-10T12:54:27+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/"},"wordCount":234,"commentCount":25,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1","keywords":["bitcoin","post","r6"],"articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/","url":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/","name":"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1","datePublished":"2017-05-15T02:36:33+00:00","dateModified":"2018-03-10T12:54:27+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1","width":2840,"height":1070},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=2840%2C1070&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-1xU","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":7924,"url":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/","url_meta":{"origin":5946,"position":0},"title":"Bitcoin (World Map) Bubbles","author":"hrbrmstr","date":"2018-01-18","format":false,"excerpt":"We're doing some interesting studies (cybersecurity-wise, not finance-wise) on digital currency networks at work-work and --- while I'm loathe to create a geo-map from IPv4 geolocation data --- we: do get (often, woefully inaccurate) latitude & longitude data from our geolocation service (I won't name-and-shame here); and, there are definite\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1200%2C960&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1200%2C960&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1200%2C960&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1200%2C960&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1200%2C960&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":11637,"url":"https:\/\/rud.is\/b\/2018\/11\/09\/escaping-the-macos-10-14-mojave-sandbox-with-r-rstudio\/","url_meta":{"origin":5946,"position":1},"title":"Escaping the macOS 10.14 (Mojave) Filesystem Sandbox with R \/ RStudio","author":"hrbrmstr","date":"2018-11-09","format":false,"excerpt":"If you're an R\/RStudio user who has migrated to Mojave (macOS 10.14) or are contemplating migrating to it, you will likely eventually run into an issue where you're trying to access resources that are in Apple's new hardened filesystem sandboxes. Rather than reinvent the wheel by blathering about what that\u2026","rel":"","context":"In &quot;macOS&quot;","block_context":{"text":"macOS","link":"https:\/\/rud.is\/b\/category\/macos\/"},"img":{"alt_text":"Photo by Alexander Dummer on Unsplash","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/11\/alexander-dummer-261098-unsplash.jpg?fit=1200%2C801&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/11\/alexander-dummer-261098-unsplash.jpg?fit=1200%2C801&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/11\/alexander-dummer-261098-unsplash.jpg?fit=1200%2C801&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/11\/alexander-dummer-261098-unsplash.jpg?fit=1200%2C801&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/11\/alexander-dummer-261098-unsplash.jpg?fit=1200%2C801&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":5916,"url":"https:\/\/rud.is\/b\/2017\/05\/07\/plot-the-vote-making-u-s-senate-house-cartograms-in-r\/","url_meta":{"origin":5946,"position":2},"title":"Plot the Vote: Making U.S. Senate &#038; House Cartograms in R","author":"hrbrmstr","date":"2017-05-07","format":false,"excerpt":"Political machinations are a tad insane in the U.S. these days & I regularly hit up @ProPublica & @GovTrack sites (& sub to the GovTrack e-mail updates) as I try to be an informed citizen, especially since I've got a Senator and Representative who seem to be in the sway\u2026","rel":"","context":"In &quot;cartography&quot;","block_context":{"text":"cartography","link":"https:\/\/rud.is\/b\/category\/cartography\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/rep_gt-1.png?fit=1200%2C840&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/rep_gt-1.png?fit=1200%2C840&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/rep_gt-1.png?fit=1200%2C840&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/rep_gt-1.png?fit=1200%2C840&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/rep_gt-1.png?fit=1200%2C840&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":12626,"url":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/","url_meta":{"origin":5946,"position":3},"title":"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export)","author":"hrbrmstr","date":"2020-01-13","format":false,"excerpt":"UPDATE 2020-02-11 Apple now supports downloading transactions as CSV or OFX! (via MacObserver). I saw this CNBC article on an in-theory browser client-side-only conversion utility for taking Apple Card PDF statements and turning them into CSV files. Since I (a) never trust any browser or site and (b) the article\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3028,"url":"https:\/\/rud.is\/b\/2014\/09\/20\/chartingmapping-the-scottish-vote-with-r-rvestdplyrtidyrtopojsonggplot\/","url_meta":{"origin":5946,"position":4},"title":"Charting\/Mapping the Scottish Vote with R (an rvest\/dplyr\/tidyr\/TopoJSON\/ggplot tutorial)","author":"hrbrmstr","date":"2014-09-20","format":false,"excerpt":"The BBC did a pretty good job [live tracking the Scotland secession vote](http:\/\/www.bbc.com\/news\/events\/scotland-decides\/results), but I really didn't like the color scheme they chose and decided to use the final tally site as the basis for another tutorial using the tools from the Hadleyverse and taking advantage of the fact that\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4547,"url":"https:\/\/rud.is\/b\/2016\/07\/24\/mid-year-r-packages-update-summary\/","url_meta":{"origin":5946,"position":5},"title":"Mid-year R Packages Update Summary","author":"hrbrmstr","date":"2016-07-24","format":false,"excerpt":"I been updating some existing packages and github-releasing new ones (before a CRAN push). Most are \"cyber\"-related, but there are some general purpose ones. Here's a quick overview: docxtractr (CRAN, now, v0.2.0) was initially designed to make it easy to get data tables out of MS Word (docx) documents. The\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/5946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=5946"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/5946\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/5948"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=5946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=5946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=5946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}