diff --git a/_roadmap/blog_roadmap.drawio2.png b/_roadmap/blog_roadmap.drawio2.png index be9b4dd..d6f303f 100644 Binary files a/_roadmap/blog_roadmap.drawio2.png and b/_roadmap/blog_roadmap.drawio2.png differ diff --git a/context/anon_mobile.png b/context/anon_mobile.png index 9f5dd14..cdbfe35 100644 Binary files a/context/anon_mobile.png and b/context/anon_mobile.png differ diff --git a/context/anon_remote.png b/context/anon_remote.png index df57f77..fb1bdcf 100644 Binary files a/context/anon_remote.png and b/context/anon_remote.png differ diff --git a/context/anon_self.png b/context/anon_self.png index 688de80..e8ab7e1 100644 Binary files a/context/anon_self.png and b/context/anon_self.png differ diff --git a/context/private.png b/context/private.png index 80a3e14..99b3298 100644 Binary files a/context/private.png and b/context/private.png differ diff --git a/context/private_mobile.png b/context/private_mobile.png index 7279412..2d3c168 100644 Binary files a/context/private_mobile.png and b/context/private_mobile.png differ diff --git a/context/private_remote.png b/context/private_remote.png index 11ad124..8fa572d 100644 Binary files a/context/private_remote.png and b/context/private_remote.png differ diff --git a/context/private_self.png b/context/private_self.png index ea96b80..c941a7d 100644 Binary files a/context/private_self.png and b/context/private_self.png differ diff --git a/context/public.png b/context/public.png index 27ee84a..6ea183d 100644 Binary files a/context/public.png and b/context/public.png differ diff --git a/context/public_mobile.png b/context/public_mobile.png index 7d15f64..435ec97 100644 Binary files a/context/public_mobile.png and b/context/public_mobile.png differ diff --git a/context/public_remote.png b/context/public_remote.png index c601581..2fd1936 100644 Binary files a/context/public_remote.png and b/context/public_remote.png differ diff --git a/context/public_self.png b/context/public_self.png index 48826b1..009bd33 100644 Binary files a/context/public_self.png and b/context/public_self.png differ diff --git a/context/sensitive.png b/context/sensitive.png index 0d9c138..8422fcb 100644 Binary files a/context/sensitive.png and b/context/sensitive.png differ diff --git a/context/sensitive_remote.png b/context/sensitive_remote.png index 38e8607..37b83b4 100644 Binary files a/context/sensitive_remote.png and b/context/sensitive_remote.png differ diff --git a/context/sensitive_self.png b/context/sensitive_self.png index a67b017..c07312d 100644 Binary files a/context/sensitive_self.png and b/context/sensitive_self.png differ diff --git a/dnscrypt/1.png b/dnscrypt/1.png index 1243b4f..6ab4e8b 100644 Binary files a/dnscrypt/1.png and b/dnscrypt/1.png differ diff --git a/dnscrypt/2.png b/dnscrypt/2.png index aaff878..1f612c8 100644 Binary files a/dnscrypt/2.png and b/dnscrypt/2.png differ diff --git a/dnscrypt/3.png b/dnscrypt/3.png index 264e622..01d2fa4 100644 Binary files a/dnscrypt/3.png and b/dnscrypt/3.png differ diff --git a/dnscrypt/4.png b/dnscrypt/4.png index 3fc150a..572c4c1 100644 Binary files a/dnscrypt/4.png and b/dnscrypt/4.png differ diff --git a/dnscrypt/5.png b/dnscrypt/5.png index ccf4d79..326efb1 100644 Binary files a/dnscrypt/5.png and b/dnscrypt/5.png differ diff --git a/dnscrypt/7.png b/dnscrypt/7.png index 7f6b342..86d0fa3 100644 Binary files a/dnscrypt/7.png and b/dnscrypt/7.png differ diff --git a/dnscrypt/index.md b/dnscrypt/index.md index a838c9b..119774d 100644 --- a/dnscrypt/index.md +++ b/dnscrypt/index.md @@ -1,10 +1,10 @@ --- author: cynthia -date: 2025-06-01 +date: 2025-06-05 gitea_url: "http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions/issues/311" xmr: 84ybq68PNqKL2ziGKfkmHqAxu1WpdSFwV3DreM88DfjHVbnCgEhoztM7T9cv5gUUEL7jRaA6LDuLDXuDw24MigbnGqyRfgp --- -# DoT, DoH, DNSCrypt, DNS over Tor and Local DNS: What actually protects you? (and tutorials on how to set each of them up) +# DoT, DoH, DNSCrypt, DNS over Tor and Local DNS: What actually protects you? DNS is the most common way to resolve domain names into IP addresses. It's a pretty old protocol that still works, albeit with some shortcomings that have plagued the protocol over the years. The protocol lacks any encryption which allows any 3rd party with access to your connection (such as your ISP, etc.) to easily spy on DNS queries or even intercept and replace DNS responses to sabotage access to certain websites. Several solutions have popped up over the years to fix these issues, These mostly just act as wrappers around the DNS protocol in a way. This blogpost will measure the advantages and disadvantages of these solutions, and also offer a guide on how to set up each of them. diff --git a/file-verification/0.png b/file-verification/0.png index 68bd403..8c2f573 100644 Binary files a/file-verification/0.png and b/file-verification/0.png differ diff --git a/file-verification/10.png b/file-verification/10.png index fe40bb5..84415e9 100644 Binary files a/file-verification/10.png and b/file-verification/10.png differ diff --git a/file-verification/12.png b/file-verification/12.png index d9c8fe4..3b6f65b 100644 Binary files a/file-verification/12.png and b/file-verification/12.png differ diff --git a/file-verification/13.png b/file-verification/13.png index 4dd7e44..8867b19 100644 Binary files a/file-verification/13.png and b/file-verification/13.png differ diff --git a/file-verification/18.png b/file-verification/18.png index 6620dd0..4948392 100644 Binary files a/file-verification/18.png and b/file-verification/18.png differ diff --git a/file-verification/6.png b/file-verification/6.png index 0b086f9..f2f9f90 100644 Binary files a/file-verification/6.png and b/file-verification/6.png differ diff --git a/file-verification/8.png b/file-verification/8.png index 2d98ad3..5c6bb63 100644 Binary files a/file-verification/8.png and b/file-verification/8.png differ diff --git a/homeserver/image-1.png b/homeserver/image-1.png index d527782..4cfe8b4 100644 Binary files a/homeserver/image-1.png and b/homeserver/image-1.png differ diff --git a/homeserver/image-10.png b/homeserver/image-10.png index 016e49a..52827ab 100644 Binary files a/homeserver/image-10.png and b/homeserver/image-10.png differ diff --git a/homeserver/image-11.png b/homeserver/image-11.png index 6ad6af5..f08527d 100644 Binary files a/homeserver/image-11.png and b/homeserver/image-11.png differ diff --git a/homeserver/image-12.png b/homeserver/image-12.png index c26fbe0..c5957c4 100644 Binary files a/homeserver/image-12.png and b/homeserver/image-12.png differ diff --git a/homeserver/image-2.png b/homeserver/image-2.png index 94610e4..3610b46 100644 Binary files a/homeserver/image-2.png and b/homeserver/image-2.png differ diff --git a/homeserver/image-3.png b/homeserver/image-3.png index 44e607e..66a25da 100644 Binary files a/homeserver/image-3.png and b/homeserver/image-3.png differ diff --git a/homeserver/image-4.png b/homeserver/image-4.png index 36d39e9..df90c32 100644 Binary files a/homeserver/image-4.png and b/homeserver/image-4.png differ diff --git a/homeserver/image-5.png b/homeserver/image-5.png index 54c0deb..83c977f 100644 Binary files a/homeserver/image-5.png and b/homeserver/image-5.png differ diff --git a/homeserver/image-6.png b/homeserver/image-6.png index bd68d93..803e1b6 100644 Binary files a/homeserver/image-6.png and b/homeserver/image-6.png differ diff --git a/homeserver/image-7.png b/homeserver/image-7.png index 1bdcaf1..986a587 100644 Binary files a/homeserver/image-7.png and b/homeserver/image-7.png differ diff --git a/homeserver/image-8.png b/homeserver/image-8.png index ab492a0..89edcbc 100644 Binary files a/homeserver/image-8.png and b/homeserver/image-8.png differ diff --git a/homeserver/image-9.png b/homeserver/image-9.png index 2a1f89a..ba77ea8 100644 Binary files a/homeserver/image-9.png and b/homeserver/image-9.png differ diff --git a/homeserver/image.png b/homeserver/image.png index 81b64e0..941a39c 100644 Binary files a/homeserver/image.png and b/homeserver/image.png differ diff --git a/hypervisor_selfhosted/image-1.png b/hypervisor_selfhosted/image-1.png index fe2e522..d902d83 100644 Binary files a/hypervisor_selfhosted/image-1.png and b/hypervisor_selfhosted/image-1.png differ diff --git a/hypervisor_selfhosted/image-11.png b/hypervisor_selfhosted/image-11.png index 51ccc85..63da075 100644 Binary files a/hypervisor_selfhosted/image-11.png and b/hypervisor_selfhosted/image-11.png differ diff --git a/hypervisor_selfhosted/image-12.png b/hypervisor_selfhosted/image-12.png index b8c229c..a7d13b1 100644 Binary files a/hypervisor_selfhosted/image-12.png and b/hypervisor_selfhosted/image-12.png differ diff --git a/hypervisor_selfhosted/image-13.png b/hypervisor_selfhosted/image-13.png index 96ccb4b..1f50184 100644 Binary files a/hypervisor_selfhosted/image-13.png and b/hypervisor_selfhosted/image-13.png differ diff --git a/hypervisor_selfhosted/image-14.png b/hypervisor_selfhosted/image-14.png index 4b0e4e4..cbf6f42 100644 Binary files a/hypervisor_selfhosted/image-14.png and b/hypervisor_selfhosted/image-14.png differ diff --git a/hypervisor_selfhosted/image-15.png b/hypervisor_selfhosted/image-15.png index 88cdb9a..dbf9b1a 100644 Binary files a/hypervisor_selfhosted/image-15.png and b/hypervisor_selfhosted/image-15.png differ diff --git a/hypervisor_selfhosted/image-17.png b/hypervisor_selfhosted/image-17.png index 4fe3b4f..05ff04b 100644 Binary files a/hypervisor_selfhosted/image-17.png and b/hypervisor_selfhosted/image-17.png differ diff --git a/hypervisor_selfhosted/image-18.png b/hypervisor_selfhosted/image-18.png index bbea0c2..8443e1f 100644 Binary files a/hypervisor_selfhosted/image-18.png and b/hypervisor_selfhosted/image-18.png differ diff --git a/hypervisor_selfhosted/image-19.png b/hypervisor_selfhosted/image-19.png index 892b92c..1f5d625 100644 Binary files a/hypervisor_selfhosted/image-19.png and b/hypervisor_selfhosted/image-19.png differ diff --git a/hypervisor_selfhosted/image-2.png b/hypervisor_selfhosted/image-2.png index 7812318..a63732b 100644 Binary files a/hypervisor_selfhosted/image-2.png and b/hypervisor_selfhosted/image-2.png differ diff --git a/hypervisor_selfhosted/image-20.png b/hypervisor_selfhosted/image-20.png index 656760b..6b3d79f 100644 Binary files a/hypervisor_selfhosted/image-20.png and b/hypervisor_selfhosted/image-20.png differ diff --git a/hypervisor_selfhosted/image-21.png b/hypervisor_selfhosted/image-21.png index 9a4de89..3f687a6 100644 Binary files a/hypervisor_selfhosted/image-21.png and b/hypervisor_selfhosted/image-21.png differ diff --git a/hypervisor_selfhosted/image-22.png b/hypervisor_selfhosted/image-22.png index beb5694..eb1039a 100644 Binary files a/hypervisor_selfhosted/image-22.png and b/hypervisor_selfhosted/image-22.png differ diff --git a/hypervisor_selfhosted/image-23.png b/hypervisor_selfhosted/image-23.png index 701cb30..427dbd4 100644 Binary files a/hypervisor_selfhosted/image-23.png and b/hypervisor_selfhosted/image-23.png differ diff --git a/hypervisor_selfhosted/image-24.png b/hypervisor_selfhosted/image-24.png index 99ed0bb..d9ec515 100644 Binary files a/hypervisor_selfhosted/image-24.png and b/hypervisor_selfhosted/image-24.png differ diff --git a/hypervisor_selfhosted/image-25.png b/hypervisor_selfhosted/image-25.png index 7080f47..8788261 100644 Binary files a/hypervisor_selfhosted/image-25.png and b/hypervisor_selfhosted/image-25.png differ diff --git a/hypervisor_selfhosted/image-26.png b/hypervisor_selfhosted/image-26.png index b7ada61..151318f 100644 Binary files a/hypervisor_selfhosted/image-26.png and b/hypervisor_selfhosted/image-26.png differ diff --git a/hypervisor_selfhosted/image-28.png b/hypervisor_selfhosted/image-28.png index 82c3059..c25ac29 100644 Binary files a/hypervisor_selfhosted/image-28.png and b/hypervisor_selfhosted/image-28.png differ diff --git a/hypervisor_selfhosted/image-29.png b/hypervisor_selfhosted/image-29.png index c3dc638..8591ca8 100644 Binary files a/hypervisor_selfhosted/image-29.png and b/hypervisor_selfhosted/image-29.png differ diff --git a/hypervisor_selfhosted/image-3.png b/hypervisor_selfhosted/image-3.png index a189875..5ef1eb1 100644 Binary files a/hypervisor_selfhosted/image-3.png and b/hypervisor_selfhosted/image-3.png differ diff --git a/hypervisor_selfhosted/image-30.png b/hypervisor_selfhosted/image-30.png index af62bc2..5cd244a 100644 Binary files a/hypervisor_selfhosted/image-30.png and b/hypervisor_selfhosted/image-30.png differ diff --git a/hypervisor_selfhosted/image-31.png b/hypervisor_selfhosted/image-31.png index ab7436b..a5e453a 100644 Binary files a/hypervisor_selfhosted/image-31.png and b/hypervisor_selfhosted/image-31.png differ diff --git a/hypervisor_selfhosted/image-32.png b/hypervisor_selfhosted/image-32.png index 585ca85..6c591e8 100644 Binary files a/hypervisor_selfhosted/image-32.png and b/hypervisor_selfhosted/image-32.png differ diff --git a/hypervisor_selfhosted/image-4.png b/hypervisor_selfhosted/image-4.png index 6c15855..28dce24 100644 Binary files a/hypervisor_selfhosted/image-4.png and b/hypervisor_selfhosted/image-4.png differ diff --git a/hypervisor_selfhosted/image-5.png b/hypervisor_selfhosted/image-5.png index f7f5e69..fc966d4 100644 Binary files a/hypervisor_selfhosted/image-5.png and b/hypervisor_selfhosted/image-5.png differ diff --git a/hypervisor_selfhosted/image-6.png b/hypervisor_selfhosted/image-6.png index feec664..b0ff3f3 100644 Binary files a/hypervisor_selfhosted/image-6.png and b/hypervisor_selfhosted/image-6.png differ diff --git a/hypervisor_selfhosted/image-7.png b/hypervisor_selfhosted/image-7.png index 3263506..7c1ec1f 100644 Binary files a/hypervisor_selfhosted/image-7.png and b/hypervisor_selfhosted/image-7.png differ diff --git a/hypervisor_selfhosted/image-8.png b/hypervisor_selfhosted/image-8.png index 3c1a989..d823c3e 100644 Binary files a/hypervisor_selfhosted/image-8.png and b/hypervisor_selfhosted/image-8.png differ diff --git a/hypervisor_selfhosted/image-9.png b/hypervisor_selfhosted/image-9.png index 0df51fc..2189109 100644 Binary files a/hypervisor_selfhosted/image-9.png and b/hypervisor_selfhosted/image-9.png differ diff --git a/hypervisor_selfhosted/image.png b/hypervisor_selfhosted/image.png index f6a74a3..31dc76f 100644 Binary files a/hypervisor_selfhosted/image.png and b/hypervisor_selfhosted/image.png differ diff --git a/index.md b/index.md index ba1b387..0508f9d 100644 --- a/index.md +++ b/index.md @@ -19,6 +19,7 @@ With this new mkdocs blog version, we have completely changed how you can find b (Check out [this blogpost](whytheblog/index.md) for more details on our mission) ## Our latest contributed tutorials: +- 2025-06-05: [DoT, DoH, DNSCrypt, DNS over Tor and Local DNS: What actually protects you?](dnscrypt/index.md) - 2025-06-01: [Self-Hosting a Hypervisor on your Home Server](hypervisor_selfhosted/index.md) - 2025-05-30: [How to Self-Host a server at Home](homeserver/index.md) - 2025-05-30: [The Individual reigns supreme, no matter what the state says.](individualreignssupreme/index.md) diff --git a/individualreignssupreme/NSA.png b/individualreignssupreme/NSA.png index cf78f03..81b235f 100644 Binary files a/individualreignssupreme/NSA.png and b/individualreignssupreme/NSA.png differ diff --git a/individualreignssupreme/law.png b/individualreignssupreme/law.png index c1bab2d..022f97d 100644 Binary files a/individualreignssupreme/law.png and b/individualreignssupreme/law.png differ diff --git a/individualreignssupreme/police.png b/individualreignssupreme/police.png index 6029f27..7499fbc 100644 Binary files a/individualreignssupreme/police.png and b/individualreignssupreme/police.png differ diff --git a/individualreignssupreme/privacy.png b/individualreignssupreme/privacy.png index 1dc2cc2..2861ea5 100644 Binary files a/individualreignssupreme/privacy.png and b/individualreignssupreme/privacy.png differ diff --git a/individualreignssupreme/promises.png b/individualreignssupreme/promises.png index 3f019fd..cd11e53 100644 Binary files a/individualreignssupreme/promises.png and b/individualreignssupreme/promises.png differ diff --git a/individualreignssupreme/spy.png b/individualreignssupreme/spy.png index fa64970..8520f73 100644 Binary files a/individualreignssupreme/spy.png and b/individualreignssupreme/spy.png differ diff --git a/individualreignssupreme/taxes.png b/individualreignssupreme/taxes.png index fd7f1b1..33c2be1 100644 Binary files a/individualreignssupreme/taxes.png and b/individualreignssupreme/taxes.png differ diff --git a/individualreignssupreme/vote.png b/individualreignssupreme/vote.png index 7eeb35c..752bbd7 100644 Binary files a/individualreignssupreme/vote.png and b/individualreignssupreme/vote.png differ diff --git a/linux/image-1.png b/linux/image-1.png index 189dc37..ebcbb9e 100644 Binary files a/linux/image-1.png and b/linux/image-1.png differ diff --git a/linux/image-10.png b/linux/image-10.png index 29afbab..1aa5d22 100644 Binary files a/linux/image-10.png and b/linux/image-10.png differ diff --git a/linux/image-11.png b/linux/image-11.png index dada5d1..6fd98a0 100644 Binary files a/linux/image-11.png and b/linux/image-11.png differ diff --git a/linux/image-2.png b/linux/image-2.png index 759723d..e8fdcc5 100644 Binary files a/linux/image-2.png and b/linux/image-2.png differ diff --git a/linux/image-3.png b/linux/image-3.png index a66a81d..98e8c4e 100644 Binary files a/linux/image-3.png and b/linux/image-3.png differ diff --git a/linux/image-4.png b/linux/image-4.png index ab25ac6..a4d783d 100644 Binary files a/linux/image-4.png and b/linux/image-4.png differ diff --git a/linux/image-5.png b/linux/image-5.png index 7eb2658..affb412 100644 Binary files a/linux/image-5.png and b/linux/image-5.png differ diff --git a/linux/image-6.png b/linux/image-6.png index 4a24467..0dc8f36 100644 Binary files a/linux/image-6.png and b/linux/image-6.png differ diff --git a/linux/image-7.png b/linux/image-7.png index 428abba..2a54bd5 100644 Binary files a/linux/image-7.png and b/linux/image-7.png differ diff --git a/linux/image-8.png b/linux/image-8.png index a325064..6e3743d 100644 Binary files a/linux/image-8.png and b/linux/image-8.png differ diff --git a/maintainers/25.png b/maintainers/25.png index 574e28f..01fb4f3 100644 Binary files a/maintainers/25.png and b/maintainers/25.png differ diff --git a/plausiblydeniabledataprotection/38.png b/plausiblydeniabledataprotection/38.png index 18c2ee9..d3e875a 100644 Binary files a/plausiblydeniabledataprotection/38.png and b/plausiblydeniabledataprotection/38.png differ diff --git a/sensitivevm/106.png b/sensitivevm/106.png index 767655e..4af78aa 100644 Binary files a/sensitivevm/106.png and b/sensitivevm/106.png differ diff --git a/sensitivevm/image.png b/sensitivevm/image.png index 88e61e0..da6b650 100644 Binary files a/sensitivevm/image.png and b/sensitivevm/image.png differ diff --git a/veracrypt/41.png b/veracrypt/41.png index 1e9418a..0860528 100644 Binary files a/veracrypt/41.png and b/veracrypt/41.png differ diff --git a/whonix_hiddenservice/image-1.png b/whonix_hiddenservice/image-1.png index 750e0c2..05fba43 100644 Binary files a/whonix_hiddenservice/image-1.png and b/whonix_hiddenservice/image-1.png differ diff --git a/whonix_hiddenservice/image-2.png b/whonix_hiddenservice/image-2.png index 96ffcd1..e721110 100644 Binary files a/whonix_hiddenservice/image-2.png and b/whonix_hiddenservice/image-2.png differ diff --git a/whonix_hiddenservice/image-3.png b/whonix_hiddenservice/image-3.png index c901127..ae261fc 100644 Binary files a/whonix_hiddenservice/image-3.png and b/whonix_hiddenservice/image-3.png differ diff --git a/whonix_hiddenservice/image-5.png b/whonix_hiddenservice/image-5.png index 8b964e9..181fc9d 100644 Binary files a/whonix_hiddenservice/image-5.png and b/whonix_hiddenservice/image-5.png differ diff --git a/whonix_hiddenservice/image-6.png b/whonix_hiddenservice/image-6.png index 8e5a06a..e4beefc 100644 Binary files a/whonix_hiddenservice/image-6.png and b/whonix_hiddenservice/image-6.png differ diff --git a/whonix_hiddenservice/image-7.png b/whonix_hiddenservice/image-7.png index e94a86a..59f3c48 100644 Binary files a/whonix_hiddenservice/image-7.png and b/whonix_hiddenservice/image-7.png differ diff --git a/whonix_hiddenservice/image-8.png b/whonix_hiddenservice/image-8.png index 166cd12..ef5b5e1 100644 Binary files a/whonix_hiddenservice/image-8.png and b/whonix_hiddenservice/image-8.png differ diff --git a/whonix_hiddenservice/image-9.png b/whonix_hiddenservice/image-9.png index 95eb076..f6c78d4 100644 Binary files a/whonix_hiddenservice/image-9.png and b/whonix_hiddenservice/image-9.png differ diff --git a/whonix_hiddenservice/image.png b/whonix_hiddenservice/image.png index 720b98e..6f81f6b 100644 Binary files a/whonix_hiddenservice/image.png and b/whonix_hiddenservice/image.png differ diff --git a/whonixqemuvms/image-1.png b/whonixqemuvms/image-1.png index 9829952..51f03a1 100644 Binary files a/whonixqemuvms/image-1.png and b/whonixqemuvms/image-1.png differ diff --git a/whonixqemuvms/image-3.png b/whonixqemuvms/image-3.png index 2fb0eca..153e738 100644 Binary files a/whonixqemuvms/image-3.png and b/whonixqemuvms/image-3.png differ diff --git a/whonixqemuvms/image-4.png b/whonixqemuvms/image-4.png index e9eba52..d3cae98 100644 Binary files a/whonixqemuvms/image-4.png and b/whonixqemuvms/image-4.png differ diff --git a/whonixqemuvms/image-5.png b/whonixqemuvms/image-5.png index cbefa96..c822bc8 100644 Binary files a/whonixqemuvms/image-5.png and b/whonixqemuvms/image-5.png differ diff --git a/whonixqemuvms/image-6.png b/whonixqemuvms/image-6.png index c927041..840edf7 100644 Binary files a/whonixqemuvms/image-6.png and b/whonixqemuvms/image-6.png differ diff --git a/whonixqemuvms/image-7.png b/whonixqemuvms/image-7.png index 3145b4a..26bac35 100644 Binary files a/whonixqemuvms/image-7.png and b/whonixqemuvms/image-7.png differ diff --git a/whonixqemuvms/image.png b/whonixqemuvms/image.png index 830a652..c5f0104 100644 Binary files a/whonixqemuvms/image.png and b/whonixqemuvms/image.png differ