41554 blogs · [ { "id": "01a0d4df-275f-7382-bb47-cf4cf53044f4", "title": "[Crypto] Time-based one-time password (TOTP) for 2FA, part II: YubiKey", "url": "https://yurichev.com/blog/TOTP2/", "published_at": "2026-09-13T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947ef734d0be", "title": "Time-based one-time password (TOTP) for 2FA, part I", "url": "https://yurichev.com/blog/TOTP1/", "published_at": "2026-09-09T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947ef7ef73f9", "title": "Unpacking a database of unknown type", "url": "https://yurichev.com/blog/rutracker/", "published_at": "2026-06-29T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947ef890c812", "title": "Amateur cryptography: decrypting TVT CCTV camera config files", "url": "https://yurichev.com/blog/TVT/", "published_at": "2026-06-28T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947ef973c7e9", "title": "Cracking simple XOR cipher with simulated annealing, part II", "url": "https://yurichev.com/blog/SA_XOR_nethack/", "published_at": "2026-06-21T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efa00d583", "title": "My new linkedin profile", "url": "https://yurichev.com/blog/linkedin/", "published_at": "2026-03-04T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efa626fe3", "title": "[SMT][Z3] Predicting Math.random() in Firefox using Z3 SMT-solver", "url": "https://yurichev.com/blog/xorshift/", "published_at": "2026-02-01T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efb4f02df", "title": "Hire an author/writer", "url": "https://yurichev.com/blog/writing/", "published_at": "2026-01-28T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efc10f7e6", "title": "[Crypto] Toy SSH client in ~2k SLOC of Python, v6", "url": "https://yurichev.com/blog/SSH6/", "published_at": "2026-01-19T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efc969b3e", "title": "[Math][Pentesting] Password requirements are harmful. A password with required digit/special character may be weaker. Part II.", "url": "https://yurichev.com/blog/password_req/", "published_at": "2026-01-11T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efcbb5ca8", "title": "[RevEng][CS] Fuzzy topological sorting", "url": "https://yurichev.com/blog/fuzzy_topo_sort/", "published_at": "2026-01-08T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efdb60842", "title": "IOCCC/mullender revisited, position-independent code, shellcode", "url": "https://yurichev.com/blog/PIC/", "published_at": "2026-01-04T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947efe3829d5", "title": "Hunting for extremal Latin squares using MaxSAT solver", "url": "https://yurichev.com/blog/LS/", "published_at": "2025-12-31T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947eff15e51e", "title": "[RevEng][x86][x64][C][newbies] Software reset in embedded devices", "url": "https://yurichev.com/blog/reset/", "published_at": "2025-12-31T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947effbd45b1", "title": "Testing word counting code using KLEE and CBMC", "url": "https://yurichev.com/blog/wc/", "published_at": "2025-12-24T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0003dee4", "title": "[Math] Intervals: examples of open intervals; fencepost errors", "url": "https://yurichev.com/blog/intervals_open_fence/", "published_at": "2025-12-18T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f01029ddc", "title": "[Math] Intervals: Apache Maven version numbers", "url": "https://yurichev.com/blog/intervals_maven/", "published_at": "2025-12-18T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f01ab080d", "title": "[Math] Intervals: examples of half-open intervals", "url": "https://yurichev.com/blog/intervals_half_open/", "published_at": "2025-12-17T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0204a24a", "title": "[Math] Intervals: examples of closed intervals", "url": "https://yurichev.com/blog/intervals_closed/", "published_at": "2025-12-17T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0301f78d", "title": "[Pentesting][Math] Bruteforce passwords using cartesian product", "url": "https://yurichev.com/blog/cartesian/", "published_at": "2025-12-17T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f03c20b57", "title": "[Pentesting][Math] Finding masks for Hashcat using combinatorics", "url": "https://yurichev.com/blog/hashcat_masks/", "published_at": "2025-12-14T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f04b27bb2", "title": "What is MQTT (IoT, smart homes) --- an explanation under 120 lines or 1100 words", "url": "https://yurichev.com/blog/mqtt/", "published_at": "2025-12-10T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f059d8775", "title": "[Math] Number of ways to insert 4 wires into 8-pin 8P8C Ethernet connector", "url": "https://yurichev.com/blog/ethernet/", "published_at": "2025-12-08T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f06424c11", "title": "Flatten function/operation in functional programming", "url": "https://yurichev.com/blog/flatten/", "published_at": "2025-12-07T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f068dbe1f", "title": "[Unix][C] Similarities between Unix symlinks and C/C++ pointers/references", "url": "https://yurichev.com/blog/symlink/", "published_at": "2025-12-03T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f06cf99f5", "title": "[Pentesting] Dahua (CCTV cameras) auth", "url": "https://yurichev.com/blog/dahua/", "published_at": "2025-12-01T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f074f9add", "title": "[Pentesting] ONVIF (CCTV cameras) auth", "url": "https://yurichev.com/blog/ONVIF/", "published_at": "2025-11-27T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f082e7864", "title": "[Pentesting] RTSP (CCTV cameras) auth", "url": "https://yurichev.com/blog/RTSP_auth/", "published_at": "2025-11-23T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0881b3c3", "title": "[Pentesting] HTTP auth, part III: rogue web-server", "url": "https://yurichev.com/blog/HTTP_auth_3/", "published_at": "2025-11-20T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0886780e", "title": "[Pentesting] HTTP auth, part II: digest", "url": "https://yurichev.com/blog/HTTP_auth_2/", "published_at": "2025-11-20T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f08c87654", "title": "[Pentesting] HTTP auth, part I: basic", "url": "https://yurichev.com/blog/HTTP_auth_1/", "published_at": "2025-11-20T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0953b06a", "title": "[Pentesting] Passwords from Wikipedia", "url": "https://yurichev.com/blog/passwords_from_wikipedia/", "published_at": "2025-11-20T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f09875c05", "title": "[RevEng] Challenge: Ukrainian receipts: the solution", "url": "https://yurichev.com/blog/receipts/", "published_at": "2025-11-19T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0a0f7a49", "title": "[RevEng] Toy decompiler", "url": "https://yurichev.com/blog/toy_decompiler/", "published_at": "2025-11-16T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0a277faf", "title": "[Pentesting] Walking passwords, part II", "url": "https://yurichev.com/blog/walking/", "published_at": "2025-11-12T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0b03e583", "title": "[Pentesting] The cost of cracking WPA2 (Wi-Fi) passwords in 2025", "url": "https://yurichev.com/blog/wifi/", "published_at": "2025-11-12T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0bb5f5d7", "title": "Two more uses of information entropy metric", "url": "https://yurichev.com/blog/entropy/", "published_at": "2025-11-09T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0cb52e65", "title": "Yet another XOR feature: a lamp turned on/off with several toggle switches", "url": "https://yurichev.com/blog/XOR/", "published_at": "2025-11-09T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0d4b121b", "title": "Recovering/undeleting short deleted files in 50 SLOC of pure C, any filesystem supported.", "url": "https://yurichev.com/blog/undelete/", "published_at": "2025-10-13T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0df8293c", "title": "Linux kernel compressed files have some text strings", "url": "https://yurichev.com/blog/linux_strings/", "published_at": "2025-10-01T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0ee04c10", "title": "Oracle zero-day vulnerability for sale", "url": "https://yurichev.com/blog/oracle/", "published_at": "2025-09-17T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0f38c103", "title": "[Crypto] Leaking IV in CBC mode", "url": "https://yurichev.com/blog/CBC_IV/", "published_at": "2025-09-15T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f0ffbf2ca", "title": "Yet another explanation of the Quicksort algorithm", "url": "https://yurichev.com/blog/qsort/", "published_at": "2019-11-22T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f109f0f39", "title": "[Linux] Simplest possible snapshot-style backups using rsync", "url": "https://yurichev.com/blog/bak/", "published_at": "2019-10-15T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f1133a137", "title": "Cracking simple XOR cipher with simulated annealing", "url": "https://yurichev.com/blog/SA_XOR/", "published_at": "2019-07-20T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f1165dc3e", "title": "Packing students into dorm using simulated annealing", "url": "https://yurichev.com/blog/students/", "published_at": "2019-06-27T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f117f0ed7", "title": "Make shortest cables in your rack using simulated annealing", "url": "https://yurichev.com/blog/cabling/", "published_at": "2019-06-26T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f12187ca0", "title": "Generating Malbolge code using simulated annealing", "url": "https://yurichev.com/blog/malbolge/", "published_at": "2019-06-25T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f127cd6f9", "title": "Worst sorting algorithm I ever saw: proving it using KLEE", "url": "https://yurichev.com/blog/weird_sort_KLEE/", "published_at": "2018-07-24T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f1283b1ad", "title": "Cracking simple LCG PRNG", "url": "https://yurichev.com/blog/LCG/", "published_at": "2017-03-01T23:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f13612266", "title": "Content-addressable storage", "url": "https://yurichev.com/blog/CAS/", "published_at": "2015-09-26T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f141a4ee3", "title": "Typeless programming languages (BCPL, B), C evolution and decompiling", "url": "https://yurichev.com/blog/typeless/", "published_at": "2015-09-07T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f1513d482", "title": "Fuzzy string matching + simplest possible spellchecking + hunting for typos and misspellings in Wikipedia", "url": "https://yurichev.com/blog/fuzzy_string/", "published_at": "2015-07-22T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f15675792", "title": "Tweaking LLVM Obfuscator + quick look into some of LLVM internals", "url": "https://yurichev.com/blog/llvm/", "published_at": "2015-05-15T22:00:00+00:00" }, { "id": "01a08c66-11ae-713d-af02-947f16149455", "title": "Making C compiler generate obfuscated code", "url": "https://yurichev.com/blog/58/", "published_at": "2010-12-06T23:00:00+00:00" } ] posts Claim your blog
Back to Dennis Yurichev
Blog · corpus.blog/blogs/yurichev.com/posts

Dennis Yurichev

yurichev.com

2026

2025

2019

2018

2017

2015

2010