{"version": "https://jsonfeed.org/version/1", "title": "/dev/posts/ - Archive for 2015", "home_page_url": "https://www.gabriel.urdhr.fr", "feed_url": "/2015/feed.json", "items": [{"id": "http://www.gabriel.urdhr.fr/2015/12/09/dns-aggregator-tls/", "title": "DNS aggregation over TLS", "url": "https://www.gabriel.urdhr.fr/2015/12/09/dns-aggregator-tls/", "date_published": "2015-12-09T00:00:00+01:00", "date_modified": "2015-12-09T00:00:00+01:00", "tags": ["computer", "dns", "network", "tls", "privacy"], "content_html": "<p>In a <a href=\"https://www.gabriel.urdhr.fr/2015/02/14/recursive-dns-over-tls-over-tcp-443/\">previous\npost</a>, I tried\ndifferent solutions for tunnelling <a href=\"https://ant.isi.edu/tdns/index.html\">DNS over\nTLS</a>.  One of those solutions was\nusing a <a href=\"https://github.com/randomstuff/truncatednsd\">dedicated DNS-over-UDP fake\nservice</a> replying to all\nqueries with the truncate flag set: this was causing the stub\nresolvers to retry the query using a TCP-based virtual-circuit. This\nsolution is interesting because it is dead simple (it fits in a few\nline of codes) but it is clearly a hack. Here, I am using a dedicated\n<a href=\"https://github.com/randomstuff/dnsfwd\">DNS forwarder</a> aggregating all\nthe incoming DNS-over-UDP requests over a single persistent TCP\nvirtual-circuit.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/11/25/rr-use-after-free/", "title": "Debugging use-after-free with RR reverse execution", "url": "https://www.gabriel.urdhr.fr/2015/11/25/rr-use-after-free/", "date_published": "2015-11-25T00:00:00+01:00", "date_modified": "2015-11-25T00:00:00+01:00", "tags": ["computer", "debug", "gdb", "rr", "simgrid"], "content_html": "<p><a href=\"http://rr-project.org/\">RR</a> is a very useful tool for debugging. It\ncan record the execution of a program and then replay the exact same\nexecution at will inside a debugger. One very useful extra power\navailable since 4.0 is the support for <a href=\"http://robert.ocallahan.org/2015/10/rr-40-released-with-reverse-execution.html\">efficient reverse\nexecution</a>\nwhich can be used to find the root cause of a bug in your program\nby rewinding time. In this example, we reverse-execute a program from a\ncase of use-after-free in order to find where the block of memory was\nfreed.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/10/12/mutt-multiaccount/", "title": "Multiple accounts with mutt", "url": "https://www.gabriel.urdhr.fr/2015/10/12/mutt-multiaccount/", "date_published": "2015-10-12T00:00:00+02:00", "date_modified": "2015-10-12T00:00:00+02:00", "tags": ["computer", "mutt", "email"], "content_html": "<p>If you try to use mutt, you will wonder how you are supposed to <a href=\"https://www.df7cb.de/blog/2010/Using_multiple_IMAP_accounts_with_Mutt.html\">handle\nmultiple\naccounts</a>.\nYou will find suggestions to bind some keys to switch to different\naccounts, use hooks.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/09/29/private-postgresql/", "title": "Private PostgreSQL instance", "url": "https://www.gabriel.urdhr.fr/2015/09/29/private-postgresql/", "date_published": "2015-09-29T00:00:00+02:00", "date_modified": "2022-12-06T00:47:56+01:00", "tags": ["computer", "sql", "postgres"], "content_html": "<p>How to create a private on-demand PostgreSQL instance accessible only\nfor the local user over UNIX socket.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/09/28/elf-file-format/", "title": "The ELF file format", "url": "https://www.gabriel.urdhr.fr/2015/09/28/elf-file-format/", "date_published": "2015-09-28T00:00:00+02:00", "date_modified": "2015-09-28T00:00:00+02:00", "tags": ["computer", "system", "elf", "linker", "dwarf"], "content_html": "<p>Some notes on the ELF \ud83e\udddd file format with references, explanations and\nsome examples.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/09/01/simgrid-mc-rewrite/", "title": "SimGridMC: The Big Split (and Cleanup)", "url": "https://www.gabriel.urdhr.fr/2015/09/01/simgrid-mc-rewrite/", "date_published": "2015-09-01T00:00:00+02:00", "date_modified": "2015-09-01T00:00:00+02:00", "tags": ["computer", "simgrid", "system"], "content_html": "<p><a href=\"https://www.gabriel.urdhr.fr/2015/01/06/simgrid-mc-isolation/\">In my previous SimGrid post</a>, I\ntalked about different solutions for a better isolation between the\nmodel-checked application and the model-checker.  We chose to avoid\nthe (hackery) solution based multiple dynamic-linker namespaces in the\nsame process and use a more conventional process-based isolation.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/08/16/ftl-data/", "title": "FTL data file", "url": "https://www.gabriel.urdhr.fr/2015/08/16/ftl-data/", "date_published": "2015-08-16T00:00:00+02:00", "date_modified": "2015-08-16T00:00:00+02:00", "tags": ["computer", "video-game", "ftl", "reverse-engineering"], "content_html": "<p><a href=\"http://www.ftlgame.com/\">Faster Than Light</a> (FTL)\nis a very nice (and quite difficult)\nrogue-like-ish game with space battles, teleporters, management of the energy of\nyour ship, asteroid fields, alien species, droids (drones), etc.\nIt is quite cheap, <a href=\"https://defectivebydesign.org/\">DRM-free</a>\nand available natively on Intel-based GNU/Linux.\nThese are notes taken while trying to find out the format of the <code>.dat</code> files of\nthe game containing the game assets, ships statistics, events, etc.\nwhen I had not access to the internet to find the solution.\nThere is a companion C program, <a href=\"https://github.com/randomstuff/ftldat\">ftldat</a>,\nfor extracting the files within the archives and generating archives.\nUnsurprisingly, <a href=\"https://github.com/bwesterb/ftldat\">similar tools</a>\nwith the same name already exists. However, the description of the process\nof reverse-engineering a (very simple) binary format might be interesting for\nsomeone out there.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/07/29/i-can-has-systray/", "title": "I can has systray?", "url": "https://www.gabriel.urdhr.fr/2015/07/29/i-can-has-systray/", "date_published": "2015-07-29T00:00:00+02:00", "date_modified": "2015-07-29T00:00:00+02:00", "tags": ["computer", "gui", "kde"], "content_html": "<p>In Plasma 5, support for the <a href=\"http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html\">XEmbed</a>-based\n<a href=\"http://standards.freedesktop.org/systemtray-spec/systemtray-spec-latest.html\">\u201clegacy\u201d systray protocol</a>\nwas removed:\nonly the <a href=\"http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/\">new SNI protocol</a> is handled.\nHowever, a lot of applications still do not handle the new protocol:\nQt4 and Qt5 applications <a href=\"http://www.aegiap.eu/kdeblog/2015/02/comment-avoir-le-systray-sous-plasma5/\">can be fixed</a>\nby installing the <code>sni-qt</code> (currently in experimental) and <code>libdbusmenu-qt5</code> respectively\nbut other applications (such as GTK ones) must be patched/recompiled with SNI support.\nWithout this, windows disappear into oblivion \ud83d\ude3f.\nYou can have a seamless systray-enabled Plasma panel\nwith a single (OK, two) line of shell \ud83d\ude3c.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/07/04/html-pipeline-middleman/", "title": "Use HTML pipeline in Middleman", "url": "https://www.gabriel.urdhr.fr/2015/07/04/html-pipeline-middleman/", "date_published": "2015-07-04T00:00:00+02:00", "date_modified": "2015-07-04T00:00:00+02:00", "tags": ["computer", "middleman", "ruby", "html", "emoji", "markdown", "web"], "content_html": "<p>How to use <a href=\"https://github.com/jch/html-pipeline\"><code>html-pipeline</code></a> in\n<a href=\"https://middlemanapp.com/\">middleman</a>.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/05/29/core-file/", "title": "Anatomy of an ELF core file", "url": "https://www.gabriel.urdhr.fr/2015/05/29/core-file/", "date_published": "2015-05-29T00:00:00+02:00", "date_modified": "2015-05-29T00:00:00+02:00", "tags": ["computer", "system", "elf", "coredump"], "content_html": "<p>The Executable and Linkable Format (ELF) \ud83e\udddd is used for\ncompilation outputs (<code>.o</code> files), executables, shared libraries and core dumps.\nThe first cases are documented in the <a href=\"http://www.sco.com/developers/devspecs/gabi41.pdf\">System V ABI\nspecification</a>\nand the <a href=\"http://refspecs.linuxbase.org/elf/elf.pdf\">Tools Interface Standard (TIS) ELF\nspecification</a> but there does not\nseem to be much documentation about the usage of the ELF format for core dumps.\nHere are some notes on this.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/05/10/verify-a-debian-cd/", "title": "Verifying authenticity of Debian CDs", "url": "https://www.gabriel.urdhr.fr/2015/05/10/verify-a-debian-cd/", "date_published": "2015-05-10T00:00:00+02:00", "date_modified": "2015-05-10T00:00:00+02:00", "tags": ["computer", "debian"], "content_html": "<p>The <a href=\"https://www.debian.org/CD/verify\">official guide</a> for verifying\nthe authenticity of a Debian \ud83c\udf65 CD image is not so clear if you don't\nalready have an idea about what you are doing. Here is a translation in\nterms of shell commands.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/04/29/journald-workflow/", "title": "Logging message workflow with journald", "url": "https://www.gabriel.urdhr.fr/2015/04/29/journald-workflow/", "date_published": "2015-04-29T00:00:00+02:00", "date_modified": "2020-07-30T23:00:00+02:00", "tags": ["computer", "system", "log", "syslog", "systemd", "journald"], "content_html": "<p>A short summary of the logging message workflow with\n<a href=\"http://www.freedesktop.org/software/systemd/man/systemd-journald.service.html\">systemd-journald</a>\n(and the different formats and sockets involved).</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/03/29/update-firefox-os/", "title": "Updating Firefox OS", "url": "https://www.gabriel.urdhr.fr/2015/03/29/update-firefox-os/", "date_published": "2015-03-29T00:00:00+01:00", "date_modified": "2015-03-29T00:00:00+01:00", "tags": ["computer", "firefox"], "content_html": "<p>I updated a <a href=\"http://www.geeksphone.com/\">Geeksphone</a> Peak from\n<a href=\"https://www.mozilla.org/fr/firefox/os/\">Firefox OS</a> 1.1 to Firefox OS\n2.1 and it was not that easy.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/03/02/bundler-starter-kit/", "title": "Bundler starter kit", "url": "https://www.gabriel.urdhr.fr/2015/03/02/bundler-starter-kit/", "date_published": "2015-03-02T00:00:00+01:00", "date_modified": "2015-03-02T00:00:00+01:00", "tags": ["computer", "ruby"], "content_html": "<p><a href=\"http://bundler.io/\">Bundler</a> is a tool to manage Ruby gem\ndependencies, install them and setup the execution environment. The\nhomepage shows how to use it to install the gems alongside the ruby\ninstallation/systemwide which is not so great. For some reason, I\ninitially didn't find the option to install the gems locally\n(<code>--path</code>) and have been using horrible environment variable\nmodifications to avoid the systemwide installation. In fact, this is\nquite simple\u2026</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/02/15/broadband-protocol-stack/", "title": "The broadband protocol stacks", "url": "https://www.gabriel.urdhr.fr/2015/02/15/broadband-protocol-stack/", "date_published": "2015-02-15T00:00:00+01:00", "date_modified": "2021-05-25T21:27:22+02:00", "tags": ["computer", "network", "broadband", "dsl"], "content_html": "<p>The Broadband Forum as a lot of <a href=\"http://www.broadband-forum.org/technical/trlist.php\">technical\nreports</a> about\nthe xDSL architecture but it is not so easy to find a good description\nof the global architecture. Those are ASCII-art protocol stack I\ninferred from those documents. What is in there may be wrong, feel free\nto correct me.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/02/14/recursive-dns-over-tls-over-tcp-443/", "title": "Recursive DNS over TLS over TCP 443", "url": "https://www.gabriel.urdhr.fr/2015/02/14/recursive-dns-over-tls-over-tcp-443/", "date_published": "2015-02-14T00:00:00+01:00", "date_modified": "2019-12-13T00:53:18+01:00", "tags": ["computer", "network", "dns", "tls", "privacy"], "content_html": "<p>You might want to use an open recursive DNS servers if your ISP's DNS\nserver is lying. However, if your network/ISP is intercepting all DNS\nrequests, a standard open recursive DNS server won't help. You might\nhave more luck by using an alternative port or by forcing the usage of\nTCP (<code>use-vc</code> option in recent versions of glibc) but it might not\nwork. Alternatively, you could want to talk to a (trusted) remote\nrecursive DNS server over secure channel such as TLS: by using DNS\nover TLS over TCP port 443 (the HTTP/TLS port), you should be able to\navoid most filtering between you and the recursive server.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/01/22/elf-linking/", "title": "ELF loading and dynamic linking", "url": "https://www.gabriel.urdhr.fr/2015/01/22/elf-linking/", "date_published": "2015-01-22T00:00:00+01:00", "date_modified": "2015-01-22T00:00:00+01:00", "tags": ["computer", "system", "elf", "linker", "linux", "multiarch"], "content_html": "<p>Some notes on ELF \ud83e\udddd loading and dynamic linking mainly for GNU userland\n(<code>ld.so</code>, <code>libc</code>, <code>libdl</code>) running on top of the Linux kernel. Some\nprior knowlegde on the topic (virtual memory, shared objects,\nsections) might be useful to understand this.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/01/15/recover-a-password-in-a-process-memory/", "title": "Recover a (forgotten) password in a process memory", "url": "https://www.gabriel.urdhr.fr/2015/01/15/recover-a-password-in-a-process-memory/", "date_published": "2015-01-15T00:00:00+01:00", "date_modified": "2015-01-15T00:00:00+01:00", "tags": ["computer", "system", "thunderbird"], "content_html": "<p>Today, I managed to forget a password but I had a Icedove (Thunderbird) process\nrunning containing the password.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/01/11/logstash-vhost-combined/", "title": "nginx, Logstash and vhost-combined log format", "url": "https://www.gabriel.urdhr.fr/2015/01/11/logstash-vhost-combined/", "date_published": "2015-01-11T00:00:00+01:00", "date_modified": "2015-01-11T00:00:00+01:00", "tags": ["computer", "log", "apache", "nginx"], "content_html": "<p>The Apache HTTP server ships with a\n<a href=\"http://httpd.apache.org/docs/2.4/programs/split-logfile.html\"><code>split-logfile</code></a>\nutility which parses Combined Log File entries prefixed with the virtual host:\nsome notes about this and its inclusion in nginx and\n<a href=\"http://logstash.net/\">logstash</a>.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2015/01/06/simgrid-mc-isolation/", "title": "Better isolation for SimGridMC", "url": "https://www.gabriel.urdhr.fr/2015/01/06/simgrid-mc-isolation/", "date_published": "2015-01-06T00:00:00+01:00", "date_modified": "2015-01-06T00:00:00+01:00", "tags": ["simgrid", "system", "computer", "linker", "linux", "simulation", "elf"], "content_html": "<p>In an attempt to simplify the development around the SimGrid\nmodel-checker, we were thinking about moving the model-checker out in\na different process. Another different approach would be to use a\ndynamic-linker isolation of the different components of the process.\nHere is a summary of the goals, problems and design issues surrounding\nthese topics.</p>\n"}]}