%title Outlook Safelinks A quick decoder for Outlooks safelinks "protection" {{{scheme (use-modules (web uri) (ice-9 regex)) (define uri (string->uri "https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgoogle.com%2F%3Fp1%3Dhello%26p2%3Dworld&data=04%7C01%7Chugo.hornquist%40liu.se%7C07769d4323fa49da8ae908d9b6569ce9%7C913f18ec7f264c5fa816784fe9a58edd%7C0%7C0%7C637741305400535204%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=nJBoGaNj2Ub58jLFpsMwhEdt6DH1m%2BMbyrFa7Qj5iBI%3D&reserved=0")) (define decoded (uri-decode (uri-query uri))) (write decoded) (newline) (define components (map (lambda (kv) (define idx (string-index kv #\=)) (cons (string->symbol (string-take kv idx)) (string-drop kv (1+ idx)))) (string-split (regexp-substitute/global #f (make-regexp "&") decoded 'pre (string #\us) 'post) #\us)) ) }}} {{{scheme (write (string-split (assoc-ref components 'data) #\|)) }}} 0 :: "04" 1 :: "01" 2 :: from email 3 :: uid? 4 :: uid? 5 :: "0" 6 :: "0" 7 :: uid? 8 :: "Unknown" 9 :: 10 :: "2000"