tag:blogger.com,1999:blog-62936725382988792912024-03-13T00:58:10.957+01:00Johann N. Löfflmann's Weblogthe most interesting computer science is under the surfaceJohann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.comBlogger27125tag:blogger.com,1999:blog-6293672538298879291.post-21351342800276296042023-09-30T16:30:00.003+02:002023-09-30T16:30:39.990+02:00Jacksum: How to skip files during hash calculation or the verification process<p>You could skip files during the hash calcualation process so that you do not create hash values at all for particular files and/or you could skip files during the verification process.<br /></p><h2 style="text-align: left;">Skip files during hash calculation<br /></h2><p>To keep the example short, let's say we don't want to hash program libraries. Those files usually end with .dll on Windows, and with .so on GNU/Linux.</p><h3 style="text-align: left;">1. Create a list of files</h3><div style="text-align: left;"><span style="font-family: inherit;">Let's say we want to list all files in the current working directory (.) and below.</span><br /></div><p>On GNU/Linux and macOS:</p><p><span style="font-family: courier;">> find . -type f > files.list</span><br /></p><p>On Windows:</p><p><span style="font-family: courier;">> dir /A-D /B /S . > files.list</span><br /></p><p>Using Jacksum:</p><p><span style="font-family: courier;">> jacksum --style files-only . > files.list</span><br /></p><h3 style="text-align: left;">2. Modify the file list as required</h3><div style="text-align: left;">The -v option for grep and findstr lists files only that do not match the criteria given. You can use regular expressions. The $ at the end marks the end of a string.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span style="font-family: inherit;">On GNU/Linux or macOS:</span></div><div style="text-align: left;"><span style="font-family: inherit;"><br /></span></div><div style="text-align: left;"><span style="font-family: courier;">> grep -v ".so$" files.list > files-filtered.list</span></div><div style="text-align: left;"><span style="font-family: inherit;"><br /></span></div><div style="text-align: left;"><span style="font-family: inherit;">On Windows:</span></div><div style="text-align: left;"><span style="font-family: inherit;"><br /></span></div><div style="text-align: left;"><span style="font-family: courier;">> findstr /V ".dll$" files.list > files-filtered.list</span></div><h3 style="text-align: left;">3. Hash the file list</h3><div style="text-align: left;"><span style="font-family: inherit;">We can hash that list using the Jacksum option -L (or --file-list):</span><br /></div><p><span style="font-family: courier;">> jacksum -a sha256 -L files-filtered.list > hashes.sha256</span><br /></p><p></p><p></p><p><br /></p><h2 style="text-align: left;">Skip files during the verification process</h2><p>If you want to ignore particular paths from a hash file you can do it in a similar way. <br /></p><h3 style="text-align: left;">1. Modify the hash file as required<br /></h3><p>On GNU/Linux or macOS:</p><p><span style="font-family: courier;">> grep -v ".so$" hashes.sha256 > hashes-filtered.sha256<br /></span></p><p>On Windows:</p><p><span style="font-family: courier;">> findstr /V ".dll$" hashes.sha256 > hashes-filtered.sha256<br /></span></p><h3 style="text-align: left;">2. Start the integrity verification process<br /></h3><p><span style="font-family: courier;">> jacksum -a sha256 -c hashes-filtered.sha256 .</span></p><p>Note: the dot at the end of the command says: verify not only the integrity of the paths stored in the hashes.sha256, but also read the current working directory (.) and all files below (-r max is set implicitly). With that you will also find new files that have been added after the file called hashes.sha256 was produced. Without the dot you will verify the files only that have a trace in hashes-filtered.sha256.<br /></p><p><br /></p><p><br /></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-75086611587310518682023-09-23T23:59:00.003+02:002023-09-24T01:16:38.127+02:00How to create unique and secure passwords for websites with a master password and Jacksum<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLsLSoI3HD_eK0G2F-2abIOTAKBb_2mPfqDwgilUhOeWn5Uk-bwoLNUR8YZuULTLItvu3ouP1tYI6U-sXkWBrz-vJAKZJ1p7oKRJVAX4APcbVFskn_5YAuwpP8ivyix4FzD8Mblu6YDe3ikoDGz-P-1ds-MIMbYmMpzpTL42OwBbJiGDup_rK0qWOMA9g/s1020/firefox_J0CwyAO7MK.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="829" data-original-width="1020" height="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLsLSoI3HD_eK0G2F-2abIOTAKBb_2mPfqDwgilUhOeWn5Uk-bwoLNUR8YZuULTLItvu3ouP1tYI6U-sXkWBrz-vJAKZJ1p7oKRJVAX4APcbVFskn_5YAuwpP8ivyix4FzD8Mblu6YDe3ikoDGz-P-1ds-MIMbYmMpzpTL42OwBbJiGDup_rK0qWOMA9g/s320/firefox_J0CwyAO7MK.jpg" width="320" /></a></div><br /> <a href="https://jacksum.net" target="_blank">Jacksum</a> <a href="https://jacksum.net/en/release-notes.html">3.7.0</a> introduced a new feature: read text from the console without echoing, hash that string using your preferred hash-function and encode the hash-value using your preferred encoding. In other words, you can treat Jacksum as a password generator that generates the actual password for a website.<br /><p></p><p>Example:</p><p><span style="font-family: courier;">> jacksum -q password -a ascon-hash -8 -E z85<br />Password: facebook.com do-not-use-this-password<br />Cvn7Zojybu819s=b</ClQ/-5S@[%X@*F0?I?mlcb</span><br /></p><p>Reads a password or passphrase from the console, not including any line-termination characters. You can use that mode to generate both unique and strong passwords for websites. The returned hash values will be stronger than anything a normal human brain could remember, and nothing needs to be stored on disk. If the password is compromised, the master password will still remain secret. Oh, please do not use the password from the example above, because now it is known to all people who read this article.</p><p>Some notes and recommendations:<br /></p><ul style="text-align: left;"><li>Combine a master password with website-specific information, such as the domain name, to get unique passwords. In the example above I have used facebook.com<br /></li><li>For the master password you should use a strong password that is at least 8 characters long; the longer, the better, and you should be able to remember it easily. Again, please do not use the password from the example above.<br /></li><li>You should use a non-broken, strong cryptographic hash algorithm for the task. In the example I have used "ascon-hash" which is supported since version 3.7.0 of Jacksum. For more information about the Ascon-Hash, please type `jacksum -h ascon-hash`. Of course, if you like it stronger, you could also use sha3-512 for example.<br /></li><li>Set the character set explicitly if you use multiple different operating systems or environments that do not use UTF-8 for the console by default, and make sure to remember the character set as well. In the example above I have used option -8 which sets UTF-8 for both stdout and stderr. See also `jacksum -h -8`.<br /></li><li>You can use all of the available characters for the password.</li><li>You can copy and paste the password to the prompt, but it is better if you remember it and type it, as this trains your brain to remember the password, and your brain will be the only place where the master password resides.</li><li>Dependent on the allowed characters of the website login you can select one of the encodings that Jacksum supports. See also `jacksum -h -E`. In the example above I have used z85 which perfectly works for most websites.<br /></li></ul><p>Due to security reasons the following limits apply:</p><ul style="text-align: left;"><li>You won't see the password that you enter; in other words, echoing is disabled to prevent shoulder-surfing attacks.</li><li>Only the hash is printed by default; it is not possible to print the password in clear text, even if particular format options such as -F or --style are set. Use option "-q readline" if you prefer echoing.</li><li>Operating system piping is not possible, because we want to make sure that the password is coming from a keyboard and not transfer passwords in clear text between processes via piping.</li><li>Operating system redirection is not possible, because a console is required to enter the password. Use the options -o/-O to save the hash to a file if you do no wish to see the hash value in the console.</li><li>To minimize the lifetime of sensitive data in memory, the password is cleared from memory after processing. Java's String interning is not used for the password.</li></ul><p>Stay safe!</p><p>Regards,<br />Johann</p><p> </p><p><br /></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-28506945259508779952023-08-30T23:40:00.002+02:002023-08-30T23:40:42.909+02:00Fixed the 10µF/25V Tantalkondensator on C15 on the mainboard of the Commodore C64 floppy drive VC 1541, restored an old prg of mine and refreshed my memory<p>Vor kurzem habe ich mir diesen tollen Adapter gekauft, der es mir erlauben sollte ein C64-Diskettenlaufwerk über USB an meinen PC anzubinden und so alte C64-Disketten auslesen zu können.<br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjpISVpDsCr5U-nzC_eoDciKs1IPwlPsA3In5o3UXFNvuCMw8to0-K7_bVtNwD32p58qHvCFmij_NUuUD29UJjnc7kHhIGWL74EQjsmiTaxrIULZTX_8UHhhWp2dvELWwvsaovxLuMzNSdzucjww-gAOGwIpyhLSufL6gMXh39dOq8VsJ-y037iJqAs1Do" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="646" data-original-width="1559" height="241" src="https://blogger.googleusercontent.com/img/a/AVvXsEjpISVpDsCr5U-nzC_eoDciKs1IPwlPsA3In5o3UXFNvuCMw8to0-K7_bVtNwD32p58qHvCFmij_NUuUD29UJjnc7kHhIGWL74EQjsmiTaxrIULZTX_8UHhhWp2dvELWwvsaovxLuMzNSdzucjww-gAOGwIpyhLSufL6gMXh39dOq8VsJ-y037iJqAs1Do=w580-h241" width="580" /></a></div><br />Mein Commodore Diskettenlaufwerk VC 1541 lag über 30 Jahre lang gut verstaut vor Staub und Wasser in einer Aufbewahrungsbox und ich ging davon aus, dass ich es genauso wieder schnell in Betrieb nehmen könnte, wie ich es damals hineintat. Pustekuchen. Leider qualmte das Diskettenlaufwerk unmittelbar nach dem Einschalten aus den Lüftungsschlitzen wie eine antike Dampflok und auch olfaktorisch merkte ich schnell dass was nicht stimmte. Mit anderen Worten: es stank - und zwar gewaltig - nach verbranntem Elektronikbauteil! Schnell abgeschaltet, abgesteckt, abkühlen lassen, dann das Laufwerk auf den Bauch gedreht. Vier Schräubchen sind schnell gelöst und ich habe den Gehäusedeckel abgemacht. Sofort fällt mein Blick auf einen kleinen, verkohlten Stumpf, vor kurzem noch ein Kondensator - möglicherweise, denn die Werte kann ich nicht mehr erkennen. Auf C15 steckt er jedenfalls. Schnell gegoogelt. Aha, ein Tantal-Kondensator, <span><span itemprop="name">10µF/25V. Gibts für 0,35 €, Versandkosten 5,95 €. Na toll. Egal. Bestellt. Gleich mehrere - man weiss ja nie.</span></span><p></p><p><span><span itemprop="name"><b>Vorher:</b></span></span></p><p><span><span itemprop="name"> </span></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiB5XXjDjT5HeVxNyhr02EQZOtsBOGvXe7LiBQRvTiU1lFZ0Z-EeFDV3iAf6jD-Db7-xlBocu6B53mJwu93zCaxoYc9GOZ4P6XTKwxI7-rxY_umIcv_tNOBK3ouSCgEhxj2_riUa6LTTs3c7iLYuoWT7DKLgBkby_FBGYJe7FaTj4g7gc74gFlOS49dTt4" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="594" data-original-width="790" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiB5XXjDjT5HeVxNyhr02EQZOtsBOGvXe7LiBQRvTiU1lFZ0Z-EeFDV3iAf6jD-Db7-xlBocu6B53mJwu93zCaxoYc9GOZ4P6XTKwxI7-rxY_umIcv_tNOBK3ouSCgEhxj2_riUa6LTTs3c7iLYuoWT7DKLgBkby_FBGYJe7FaTj4g7gc74gFlOS49dTt4" width="319" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiNT6QIM4YrD0m2x84Yfq46m98C9qu_RhdxtuCarLZj7klWZov2KKEx5APScmLAc-fM2C0VoiIPpD5J9oHNHqUbbjKgAMuxQpzYHGxgCr8xj1G5CmYgqXYnOPlNoyChXhtMfpcIyulPyQLaB7ZuPudjeeh6trODhJzkb-NIlPpLNlfYB-A0_OFhax3sWRs" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>Ein paar Tage später: Lötkolben heiss gemacht und weg mit dem alten, neuen rein. <br /><p></p><p><span><span itemprop="name"><b>Nachher:</b></span></span></p><p><span><span itemprop="name"><br /></span></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiZoP74-BfABTGTjwbIHSVs_M6zQPrl-5rJVF3153s5pAytvj8iWR8dBqWOegTtA3HOM5kd_3FcNs3evid8Sb0SjemqjoaV8aN4SdyZ8OKUUHAnauSGCyot6J3iE3FtU7qzyrPsG9c8bNGFyFiuevawTEncbfhfTcHPvGfvdjpqmWyGLI4IkoFPGkSCv6Y" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="593" data-original-width="790" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiZoP74-BfABTGTjwbIHSVs_M6zQPrl-5rJVF3153s5pAytvj8iWR8dBqWOegTtA3HOM5kd_3FcNs3evid8Sb0SjemqjoaV8aN4SdyZ8OKUUHAnauSGCyot6J3iE3FtU7qzyrPsG9c8bNGFyFiuevawTEncbfhfTcHPvGfvdjpqmWyGLI4IkoFPGkSCv6Y" width="320" /></a></div><p></p><p><span><span itemprop="name"></span></span></p><p>Test mit dem Adapter verlief auch ohne Probleme. Perfekt. Dann lesen wir doch mal das 5 1/4 Zoll-Diskettchen hier aus und schauen, was ich damals <strike>Nutzloses</strike> Nützliches programmiert habe ab dem Jahre 1984 und den folgenden meiner Kindheit. Aha, "potenzen.prg", "gleichungen.prg", "weihnachten.prg" usw. - klingt alles vielversprechend, auch wenn ich mich zugegeben nur noch sehr vage erinnere. VICE runtergeladen, installiert, erstes Programm geladen ...<br /></p><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgBJcEi4SFKYhr5usgFdHw1wUKPiPl1KF6VUP50YShi58pvXq_YQVHrUiSeAhrlzDypJ_gxKQ4KRxElgOLSG10TL9y3A-3BNUVbeepCUGD4NOIyUm9eX937qk4A98mtOLaTD4e-7g6GCHXhxuFjDKv-AsJmqkelYTfhKfD-GjfFGcxtCmN-CPxByvKcdZw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="435" data-original-width="576" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEgBJcEi4SFKYhr5usgFdHw1wUKPiPl1KF6VUP50YShi58pvXq_YQVHrUiSeAhrlzDypJ_gxKQ4KRxElgOLSG10TL9y3A-3BNUVbeepCUGD4NOIyUm9eX937qk4A98mtOLaTD4e-7g6GCHXhxuFjDKv-AsJmqkelYTfhKfD-GjfFGcxtCmN-CPxByvKcdZw" width="318" /></a></div><br /> Und RUN it baby ...<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi1jRoCtWM3UfCukrvNM3Ty4ZyCmRoX5U8ap5BaqUlA1NDiXmFh77_VCQ0bX7OZN2xg3FRUSH6Jz5znPTELGCEtcGvDsHizzglcEvSNgrW62fp2EBH-UFY1xAhfxjVhm1PGP--nfGfTLolWwxuRpo-S9_PpUHvx_jUWw8cT4WZPxArQ1mppNE8mvEfvFBE" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="436" data-original-width="576" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEi1jRoCtWM3UfCukrvNM3Ty4ZyCmRoX5U8ap5BaqUlA1NDiXmFh77_VCQ0bX7OZN2xg3FRUSH6Jz5znPTELGCEtcGvDsHizzglcEvSNgrW62fp2EBH-UFY1xAhfxjVhm1PGP--nfGfTLolWwxuRpo-S9_PpUHvx_jUWw8cT4WZPxArQ1mppNE8mvEfvFBE" width="317" /></a></div><br /><p></p><p>Ach ich sage euch, es ist wunderbar, wenn man sehr alte Erinnerungen durch selbst reaktivierte alte Hardware auffrischen kann :-) Ach ja. Seufz. Nun gut. Deckel drauf, Schrauben rein und wieder ab damit in den Keller. Sehr gute Bewertung für den ebay-Händler für den tollen Adapter!</p><p>Mission completed.<br /></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-4247237033257833292022-06-19T23:59:00.014+02:002022-06-20T09:50:44.219+02:00CVE-2021-44832: Find vulnerable .jar files using Jacksum 3.4.0 or later<p>In December 2021, a zero-day remote code execution vulnerability (CVE-2021-442281, Base Score 10.0) was found in Apache Log4j, a widely used Java logging library. The vulnerability was publicly disclosed via GitHub on Dec 9, 2021. The vulnerability allows attackers to take full control of systems without authentication. The vulnerability is also known as "log4shell".<br /><br />Many recommendations out there suggest the user to find the filenames by typing the GNU/Linux command<br /><br /><span style="font-family: courier;">find / -iname "*log4j*"</span><br /><br />or to find live processes with log4j in their names<br /><br /><span style="font-family: courier;">ps aux | grep –i 'log4j'<br />lsof | grep –i "log4j"<br /></span><br />The problem with those approaches is that you won't find the vulnerable jar files if the file names have been renamed. You know, sometimes some vendors simply rename libs to whatever reason original jar files. Also in Java's classpath the name of the .jar file is irrelavant, from a security perspective it is the vulnerable classes in the jar file that really matter.<br /><br />So a better approach is not to search only for their names, search also for their hashes!<br /><br />This receipt can be used at any time a new critical vulnerability is found - even if it is not in log4j. Nonetheless I will use the log4j example to demonstrate how it works.<br /><br /></p><h3 style="text-align: left;">1. Identify the files/libs that are vulnerable</h3><p><br />CVE-2021-44832 tells us that the issue has been fixed in Log4j 2.17.1 (for Java 8), 2.12.4 (for Java 7) and 2.3.2 (for Java 6). See also <a href="https://logging.apache.org/log4j/2.x/security.html#CVE-2021-44832">https://logging.apache.org/log4j/2.x/security.html#CVE-2021-44832</a><br /><br />In other words all other older releases are vulnerable.<br /><br /></p><h3 style="text-align: left;">2. Download all vulnerable libs</h3><p>If you don't find older libs on the apache page, you can go to mavencentral to download all vulnerable libs. Go to <a href="https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core">https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core</a><br />You should download all vulnerable libs and not just those that are affected by CVE-2021-44832.<br /><br /></p><h3 style="text-align: left;">3. Create hashes from the libs</h3><p>Since we want to minimize false positives and minimize hash collisions, we use a non-broken, crytographic well known modern hash algorithm: SHA-3-256<br />which is the default in Jacksum 3.4.0. Go to the directory where all the libs have been stored and run<br /><br /><span style="font-family: courier;">jacksum -a sha3-256 --header --no-path -O log4j.hashes .</span><br /><br />Note: you don't need to specify -a, because the default is already sha3-256, but it is not guaranteed that future Jacksum releases have the same default algorithm, so it is recommended to specify the algorithm even you don't need to. You can set --header to print invocation args so you will know by which Jacksum version, which algorithm, and when the hashes were generated. Set the option called --no-path, because we don't need the path, we are just interested in the file name. The file will be written to log4j.hashes, and it will be overwritten if it exists.<br /><br /></p><h3 style="text-align: left;">4. Optional: test with the current working directory</h3><p><span style="font-family: courier;">jacksum -w log4j.hashes .</span><br /><br /></p><h3 style="text-align: left;">5. Optional: edit log4j.hashes and add CVS info to it</h3><p>For example you could change the line from<br /><br /><span style="font-family: courier;">d5a4aa7b06fd43b142caae4381e94ddbff840886470135b0f4314181e2b9bb27 <b>log4j-core-2.17.0.jar</b></span></p><p><span style="font-family: inherit;">to</span></p><p><span style="font-family: courier;">d5a4aa7b06fd43b142caae4381e94ddbff840886470135b0f4314181e2b9bb27 <b>original: log4j-core-2.17.0.jar, vulnerability: CVE-2021-44832</b></span><br /><br />and repeat that with additional comments.<br /><br /></p><h3 style="text-align: left;">6. Go and let find all files that match any of the hashes in log4j.hashes </h3><p>You can use Jacksum 3.4.0 or later to do that job:<br /><br /><span style="font-family: courier;">jacksum -w log4j.hashes /</span><br /><br />Hint: with this approach you can not only find vulnerable libraries, you can also find copyright protected material, pornography, software in particular versions - anything that you know the digital hashes of.<br /><br /></p><h3 style="text-align: left;">Bonus: search your system for any Jacksum libraries:</h3><p><span style="font-family: courier;">jacksum -w jacksum.hashes /</span></p><p><span style="font-family: courier;"></span></p><h3>Downloads</h3><p>You find Jacksum at <a href="https://jacksum.net">https://jacksum.net</a>, and <a href="https://github.com/jonelo/jacksum">https://github.com/jonelo/jacksum</a>. If you don't like the CLI, you can also use the File Browser Integration which comes with a GUI called HashGarten which is available for Microsoft Windows, macOS, and GNU/Linux.</p><p><br /></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-22497731436570512302022-06-05T00:33:00.000+02:002022-06-05T00:33:17.480+02:00Announcement: HashGarten - a GUI for Jacksum<h2 style="text-align: left;">Announcement <br /></h2><p>I am pleased to announce HashGarten - a GUI for Jacksum. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv9XBP23ga1WVG-ZvIgE3gLHpN88LShuVmz2L9uTA6N1NFKlErYZnR1tMlWt6zLSZXpJMPSq_L86eBK9RRgFc3F0pR_s-54XLtgQbuK_brV0MQCnYn74o_OQNLoizzCxRB1iuMIs4pzVjlxq8H_yrlhNiKxLtEr9kJ76LnBVbkTRITyhmVGryhe9rY/s899/HashGarten%20announcement.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="899" data-original-width="600" height="665" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv9XBP23ga1WVG-ZvIgE3gLHpN88LShuVmz2L9uTA6N1NFKlErYZnR1tMlWt6zLSZXpJMPSq_L86eBK9RRgFc3F0pR_s-54XLtgQbuK_brV0MQCnYn74o_OQNLoizzCxRB1iuMIs4pzVjlxq8H_yrlhNiKxLtEr9kJ76LnBVbkTRITyhmVGryhe9rY/w446-h665/HashGarten%20announcement.png" width="446" /></a></div><br /><h2 style="text-align: left;">What the heck ... <br /></h2><p>Well, for those who don't know what I am talking about ...</p><ul style="text-align: left;"><li>A GUI is a graphical user interface</li><li>A hash is the result of a hash function. A hash function maps a bit string of arbitrary length to a bit string of fixed length. In other words, a hash is like a fingerprint for data, and you can use hashes to verify integrity of files for instance.<br /></li><li>Jacksum is the free, friendly, and open source hash tool from the neighborhood, Jacksum supports more than 470 hash functions and many features, see also <a href="https://jacksum.net">https://jacksum.net</a></li><li>"Garten" is the German word for "garden" as you guys from the US probably know - it is the same word as in Kindergarten.<br /></li><li>HashGarten is the GUI for Jacksum. It allows you to access algorithms and features from Jacksum in a comfortable, graphical way.</li></ul><h2 style="text-align: left;">Screenshot</h2><p>HashGarten can run standalone and it can be accessed by the SendTo feature of your file brower, it looks like this (light and dark themes are supported) ...</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB64e_zFuJRYRdoJmf362usDAOaqTLO6zKCFP1lONaRVWvHQeJzwYPBv9GLMeQvrpzpDE7WHNheaDn_4mG6t4h28EXnmT9_QuYx4VsfPXuLrKPB_Eg9JUZjgnR5-foIR7We51w9UOwQUk3AleMm7Ksl5c1zAPYxlRTu-3oTCKvufuqjwrILpreDc2z/s1247/HashGarten-0.9.0-select-algorithm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="648" data-original-width="1247" height="328" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB64e_zFuJRYRdoJmf362usDAOaqTLO6zKCFP1lONaRVWvHQeJzwYPBv9GLMeQvrpzpDE7WHNheaDn_4mG6t4h28EXnmT9_QuYx4VsfPXuLrKPB_Eg9JUZjgnR5-foIR7We51w9UOwQUk3AleMm7Ksl5c1zAPYxlRTu-3oTCKvufuqjwrILpreDc2z/w629-h328/HashGarten-0.9.0-select-algorithm.png" width="629" /></a></div><br /><p> </p><h2 style="text-align: left;">Download <br /></h2><p>You can download Jacksum and HashGarten as part of the Jacksum File Browser Integration at <a href="https://jacksum.net">https://jacksum.net</a> <br /></p><p><br /></p><h2 style="text-align: left;">Credits</h2><p>The announcement image above was made by using the great graphics from <a href="http://icons8.com">icons8.com</a> and it's Mega Creator.<br /></p><p>Both the light and dark look and feel of HashGarten's GUI is powered by the fantastic looking FlatLaF for Java Swing desktop apps, see also <a href="https://www.formdev.com/flatlaf/">https://www.formdev.com/flatlaf/</a></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-91564053131318571922022-05-11T20:39:00.012+02:002022-05-11T22:54:03.892+02:00Eclipse Temurin Download Buttons are now available!<p></p><p>Eclipse Temurin Download Buttons are now available at <a class="status-link unhandled-link" href="https://adoptium.net/de/temurin/buttons/" rel="noopener noreferrer" target="_blank" title="https://adoptium.net/de/temurin/buttons/"><span class="invisible">https://</span><span class="ellipsis">adoptium.net/de/temurin/button</span><span class="invisible">s/</span></a> to promote Eclipse Temurin.</p><p>Eclipse Temurin is the name of the OpenJDK distribution from Adoptium. Those free prebuild OpenJDK binaries are great for both developing and running (not only) FOSS that is written in Java.<br /></p><p></p><p>The button request was initiated by issue <a href="https://github.com/adoptium/website-v2/issues/395">https://github.com/adoptium/website-v2/issues/395</a><span class="ellipsis"> ;-)</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe19rt0iHD16L9QCPy-f_qbxPimowJMbsmGdobQy5XI1B7nn352kdu17qyZ_E5gDPUaOzvre51fbtw8AMmsM6WIpYjt83MBu-s4CRtlL4yEZzlxvnWtRUHxM8kj1u5pzKVRv0vk6E5Dcq7_i-H4R59Na19xTO3O9Ic_cGXH9g_CUZnOxW0fa6c5WLy/s1904/eclipse-temurin-download-buttons.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="994" data-original-width="1904" height="347" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe19rt0iHD16L9QCPy-f_qbxPimowJMbsmGdobQy5XI1B7nn352kdu17qyZ_E5gDPUaOzvre51fbtw8AMmsM6WIpYjt83MBu-s4CRtlL4yEZzlxvnWtRUHxM8kj1u5pzKVRv0vk6E5Dcq7_i-H4R59Na19xTO3O9Ic_cGXH9g_CUZnOxW0fa6c5WLy/w664-h347/eclipse-temurin-download-buttons.png" width="664" /></a></div><p><br /></p><p>Oh, and just in case you have set Security<a class="mention hashtag status-link" href="https://fosstodon.org/tags/Security" rel="noopener noreferrer" target="_blank"><span></span></a> Headers at your Web Server, don't forget to adjust your Content Security Policy so that the images from adoptium.net can be loaded properly. See also <a href="https://scotthelme.co.uk/content-security-policy-an-introduction/">https://scotthelme.co.uk/content-security-policy-an-introduction/</a></p><p></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-91061740671796049762021-09-12T19:11:00.004+02:002021-09-12T19:19:36.075+02:00Find algorithms to a hash value using Jacksum<p> If you need to find the algorithm to a CRC, checksum or hash value you can use Jacksum.</p><p>For those who don't know: Jacksum is a free and cross platform data integrity software tool. For more information go to <a href="https://jacksum.net">https://jacksum.net</a><br /></p><p>Let's keep things simple and let's pretend that you know your algorithm returns a message digest of 16 bits, and the the message digest is d893 in hex, lowercase. Input was 050000 in hex, lowercase. You can call jacksum with the following options:</p><ul style="text-align: left;"><li>Option -a unknown:16 means you don't know the algorithm, but at least you know it returns 16 bits</li><li>Option -E hex means you want a hexadecimal encoding for the message digest</li><li>Option -q hex:050000 means you want to calcualate the message digest from the hex input 050000 quickly</li><li>Option -e d893 means an expected hash value of d893, expressed as hex<br /></li></ul><p><span style="font-family: courier;">jacksum -a unknown:16 -q hex:050000 -E hex -e d893</span> </p><p>produces the following output:</p><p><span style="font-size: small;"><span style="font-family: courier;">Trying 13 algorithms with a width of 16 bits that are supported by Jacksum 3.0.0 ...<br /><br />Trying 30 CRC algorithms with a width of 16 bits by testing against well known CRCs ...<br />crc:16,1021,FFFF,false,false,FFFF<br /> --> CRC-16/GENIBUS<br /><br />Trying all CRC algorithms with a width of 16 bits by brute force (be patient!) ...<br />crc:16,1021,FFFF,false,false,FFFF<br />crc:16,37D2,FFFF,true,false,FFFF<br />crc:16,3E2D,0000,true,false,FFFF<br />crc:16,4175,FFFF,true,false,FFFF<br />crc:16,4A5B,FFFF,true,true,0000<br />crc:16,5A41,FFFF,true,false,FFFF<br />crc:16,5C63,FFFF,true,true,0000<br />crc:16,6287,FFFF,true,true,0000<br />crc:16,649C,0000,false,true,FFFF<br />crc:16,6D55,FFFF,true,true,0000<br />crc:16,75AC,FFFF,true,false,FFFF<br />crc:16,7D64,FFFF,false,false,FFFF<br />crc:16,81A6,FFFF,true,false,FFFF<br />crc:16,B9F9,FFFF,true,true,0000<br />crc:16,C3D6,FFFF,false,false,FFFF<br />crc:16,D436,0000,true,false,FFFF<br />crc:16,D6D2,0000,false,true,FFFF<br />crc:16,DA9C,FFFF,true,false,FFFF<br />crc:16,E03E,FFFF,false,false,FFFF<br />crc:16,F701,FFFF,true,false,FFFF<br /><br /><br />Jacksum: algorithms tested: 1048620<br />Jacksum: algorithms found: 21<br /><br />Jacksum: elapsed time: 6 s, 460 ms</span></span><br /></p><p>Means Jacksum has tested more than one million algorithms in about 7
seconds and it found 21 matching algorithms. Each of those returns the
same CRC value. Test with more input/output sequences and/or longer
input sequences in order to find the right algorithm. The most likely
algorithm is printed with a name if it is a well known CRC. In this
example it has been identified as the CRC-16/GENIBUS.</p>
<p>Once you have identified the correct algorithm, you can calculate your own input data using the CRC definitions that have been found:</p><p><span style="font-family: courier;">jacksum -a crc:16,1021,FFFF,false,false,FFFF -E hex -q hex:</span><span style="font-family: courier;">050000<br />d893 3<br /></span></p><p>The output "d893 3" means that 3 bytes have been read (050000) in order to produce the 16 bit (2 byte) hexadecimal value d893 using the algorithm as defined by -a.<br /></p><p>Mission completed.</p><p>Cheers,<br />Johann <br /></p><p><br /></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-26431145420442597072021-09-12T18:32:00.001+02:002021-09-12T18:38:42.624+02:00Be very careful with echo on Windows<p>Recently one of my users of Jacksum reported a strange behavior if echo is used on Microsoft Windows.</p><p>For those who don't know: Jacksum is a data integrity tool which can (not only) calculate and verify hash values. For more information go to <a href="https://jacksum.net">https://jacksum.net</a></p><p>So the report (which was sent privately to me) was this:</p><p><span style="font-size: small;"><span style="font-family: courier;">jacksum -q "txt:Hello World!"<br />d0e47486bbf4c16acac26f8b653592973c1362909f90262877089f9c8a4536af</span></span></p><p>that is correct, but if Jacksum reads from stdin and echo on Windows is used, it returns a completely different hash:</p><p><span style="font-size: small;"><span style="font-family: courier;">echo "Hello World!" | jacksum -<br />61ab266cecda9b9885aedbbb5b3d9914738cec74930301ec7b68312b6b436b8b <stdin></span></span></p><p>Is Jacksum right?</p><p>Yes, Jacksum is right. The problem is with the echo command on Windows!</p><p>I started Jacksum with "--verbose summary" which gives us additional information:<br /></p><p><span style="font-family: monospace;"><span style="font-size: small;">echo "Hello
World!" | jacksum --verbose summary -<br />
61ab266cecda9b9885aedbbb5b3d9914738cec74930301ec7b68312b6b436b8b
<stdin><br />
<br />
Jacksum: files read successfully: 1<br />
Jacksum: files read with errors: 0<br />
Jacksum: total bytes read: 17<br />
Jacksum: total bytes read (human readable): 17 bytes<br />
<br />
Jacksum: elapsed time: 139 ms</span><br /></span></p><p>As you can see, Jacksum have read 17 bytes from stdin (the 3rd line of the
summary). "Hello World!" (without quotes) are just 12 characters, what are the other 5 characters?</p><p>I pasted the output of echo to a file ...</p><p><span style="font-family: monospace;">echo "Hello World!" > hello.txt</span></p><p>and loaded the file in a hex editor (<a class="moz-txt-link-freetext" href="https://hexed.it">https://hexed.it</a> will work perfectly well for that task)</p><p></p><p><img alt="" src="data:image/png;base64,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" /></p>As you can see, the Windows echo <br />
<p></p><p>
- does not only transfers the Hello World! to the pipe (Hello
World! => 12 bytes), but also ...<br /> - it appends the Windows carriage return, line feed chars (0x0D, 0x0A
=> 2 bytes) which is expected on Windows<br />- it doesn't strip the quotes (2x" => 2 bytes) - which is probably not known to everybody, and<br />
- <b>ATTENTION!</b>: it doesn't strip the blank that is between
the 2nd quote (") and the redirection sign (>) => 1 byte<br /></p><p>That means a </p><p><span style="font-family: monospace; font-size: small;">echo "Hello World!" > hello2.txt</span></p><p>would even add more blanks to the output.</p><p><img alt="" src="data:image/png;base64,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" /><br /><br /></p><p>And even if we would do this:</p><p><span style="font-family: monospace; font-size: small;">echo Hello World!> hello3.txt</span></p><p>the CR LF will always be there, because there is no -n option (which GNU/Linux and macOS have for example).</p><p>So the workaround on <b>Microsoft Windows 10</b> we found is this:</p><p><span style="font-family: courier;"><span style="font-size: small;">echo | set /p="Hello World!"
| jacksum -<br />d0e47486bbf4c16acac26f8b653592973c1362909f90262877089f9c8a4536af <stdin></span><br /></span></p><p>which produces the expected hash.</p><p>Mission completed.</p><p>BTW, on <b>GNU/Linux and macOS</b> you can still use echo as expected, but you need to use single quotes rather than double quotes, because the ! has a special meaning on many *nix-shells:<br /><br /><span style="font-family: courier;"><span style="font-size: small;">$ echo -n 'Hello World!' | jacksum -<br />d0e47486bbf4c16acac26f8b653592973c1362909f90262877089f9c8a4536af <stdin><br /></span></span></p><p>Cheers,<br />Johann<br /></p><p></p><p></p><p></p><p></p><p></p><p></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-71419445630707349652021-09-06T00:46:00.004+02:002021-09-23T00:33:37.031+02:00Jacksum 3 is on the web!<p>I am pleased to announce that Jacksum 3 has been released! <br /></p><p>Jacksum 3 is a major release. I call it the "good things will take time" release ;-)</p><p>See also <a href="https://jacksum.net">https://jacksum.net</a></p><p>Detailed release notes at <a href="https://jacksum.net/en/release-notes.html">https://jacksum.net/en/release-notes.html</a><br /></p><p>Here is an eagle view comparison chart with Jacksum 1.7.0. There was never an official Jacksum 2 release and I lifted the version number immediately to 3 due to the feature richness of Jacksum 3.</p><p> </p>
<table>
<tbody><tr>
<th><br /></th>
<th>Jacksum 1.7.0 <br /></th>
<th>Jacksum 3.0.0</th>
</tr>
<tr>
<th span="2"><br />Algorithm support</th>
</tr>
<tr>
</tr>
<tr>
<td>Supported Algorithms (including different lengths)</td>
<td>58</td>
<td>470</td>
</tr>
<tr>
<td>Default algorithm</td>
<td>SHA-1</td>
<td>SHA-3-256</td>
</tr>
<tr>
<td>Full SHA-3 family support</td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>Full SHA-2 family support</td>
<td>no*1</td>
<td>yes</td>
</tr>
<tr>
<td>Full BLAKE-family support </td>
<td>no</td>
<td>almost*2</td>
</tr>
<tr>
<td>Full FNV-familiy support*3<br /></td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>Customizable CRCs<br /></td>
<td>yes</td>
<td>yes</td>
</tr>
<tr>
<td>Modern non-US modern national standards*4</td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>Older non-US national standards*5</td>
<td>yes</td>
<td>yes</td>
</tr>
<tr>
<td>All algos from round three of the NIST SHA-3 competition*6 <br /></td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>proposals from the NIST crypto workshops*7 <br /></td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>eXtendable Output Functions (XOF) as cryptographic hash functions*8 <br /></td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<th span="2"><br />Multi core/processor support</th>
</tr>
<tr>
</tr><tr>
<td>multiple algorithms calculation<br /></td>
<td>yes*9</td>
<td>yes</td>
</tr>
<tr>
<td>multiple algorithms calculation simultanously</td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>parallel hash calculation for files</td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>multi processor support for checking files</td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<th span="2"><br />Other highlights</th>
</tr>
<tr>
<td>Finding an algorithm/CRC by knowing both data and hash<br /></td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>Select algorithms that match a bit width or a search string<br /></td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>producing the output in a format you want <br /></td>
<td>yes</td>
<td>yes</td>
</tr>
<tr>
<td>checking an output produced by a foreign software using parser definitions <br /></td>
<td>no</td>
<td>yes</td>
</tr>
<tr>
<td>License<br /></td>
<td>GPLv2+</td>
<td>GPLv3+</td>
</tr>
</tbody></table>
<p></p><p> </p><p></p><p>*1 SHA-512/224, SHA-512/256 were missing, because those algos were introduced in March 2012.</p><p>*2 BLAKE-[224,384,256,512], BLAKE2s-[8..256/8], BLAKE2b-[8..512/8], and BLAKE3 are supported; BLAKE2sp and BLAKE2bp are not yet supported </p>*3 including FNV-0, FNV-1, and FNV-1a for all bit lengths [32,64,128,256,512,1024]<p>*4 Streebog-[256,512] (Russia, GOST R 34.11-2012); SM3 (China);
Kupyna[256,384,512] (Ukraine, DSTU 7564:2014); LSH-256-[224,256],
LSH-512-[224,256,384,512] (South Korea, KS X 3262)</p><p>*5 GOST, GOST Crypto-Pro (Russia, GOST R 34.11-94); HAS-160 (KISA, South Korea) <br /></p><p> *6 all five candidates from round 3 the NIST SHA-3 competition were BLAKE, Groestl, JH, Keccak, and Skein<br /></p><p> *7 before the SHA-3 competition they were proposals from the NIST crypto workshops called FORK-256, DHA-256, and VSH-1024</p><p>*8 SHAKE128, SHAKE256, KangarooTwelve, MarsupilamiFourteen<br /></p><p>*9 while a file is read only once if multiple algorithms have been
selected, the actual hash calculation occurred sequentially and not in
parallel</p><p></p><p><br /></p><p><br /> </p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-21792908957254533712020-09-19T12:27:00.002+02:002020-09-19T12:28:36.671+02:00An AppImage for the NumericalChameleon, problems and solutions<h2 style="text-align: left;">Preface</h2><h3 style="text-align: left;">What is an AppImage?</h3><p>AppImage is a format for distributing portable software on Linux without needing superuser permissions to install the application. See also https://appimage.org/<br /></p><h3 style="text-align: left;">What is the NumericalChameleon?</h3><p>The NumericalChameleon is a free, open source unit converter running on the desktop on Windows, macOS, and Linux. It supports more than 6000 units in more than 90 categories. It is entirely written in Java. See also http://numericalchameleon.net</p><h3 style="text-align: left;">The Goal <br /></h3><p>On GNU/Linux the NumericalChameleon already supports several ways for a deployment: .deb, .rpm, self extracting file and a bzip2 compressed tarball. I wanted to support .AppImage as well, but I run into problems. That article should help other developers to bypass those issues that I have been facing with.<br /></p><h2 style="text-align: left;">Problems and Solutions<br /></h2><p>While I was working on the .AppImage for the NumericalChameleon two major problems arise. To say it in advance, without code modification the AppImage did not work out of the box. Fortunately the code changes can be minimized.<br /></p><h3 style="text-align: left;">Problem 1: Restart of the application didn't work</h3><p>There are situations where the user has to restart the app. For example, if the user selects a different language for the GUI or if the user selects an option in order to let render the frame decoration by Java rather then by the operating system. The NumericalChameleon also offers the user to force a restart explicitly by selecting the menu item called "Restart" from the program menu. Example:</p><p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqIAAAFqCAYAAADBUji3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7N0HuJ1VlTD+KTrzjTP/b76pYBfpBNJ7gSSEFjoEKSEBQm9SRbr03ptYQHovKh1EpQUCKNWGICWhiRS7SFn//dvnrpv3XtJvZlQ8J8969t5rr17ed5/3nHvyN1/60pdiTvA3f/M3bWhDG9rQhja0oQ1taMN8w6zOlk34m0MOOSQeeeSRePHFF+PXv/513HvvvfHTn/40HnvssXjwwQfjxBNPjC9/+cuV+Oyzz47zzz8/TjnllIo7/vjjK/6kk06qdF/96lfji1/8YifYx3PWWWfVfXzgwgsvjIsvvrjyojvnnHMqWJ933nlx8sknd9KS8ZWvfKXSnXHGGXHqqafW0V7qOfbYYysdPWw54YQT6to86czJ+drXvlbHlMkPNhrxm9NBRso/88wzK84cH1py+EsuuzM+1ujswbE19wFZ3ePExuOOOy6OOOKIyi9W9OClSzzoxwtS1+mnn15H/HB8Rg/EM2UZQcaPTjL5mzGDR3vBBRdUnH0AR17qbOe/nX/64OiDTz3t/Lfz3/TLPh7y7OMD7fy389/O/8w4sfH9nv/bbrtttudMZ9B6EL3//vtj+vTp8ctf/jK+/e1vxw9+8IN6CL377rur0qOOOiqOPvroOOywwyrT3nvvHQcccEDst99+ceihh8a+++4bBx98cCfdkUceWYsDCK69L3zhCxVPBpn28B100EGdQfn85z9f6T/72c9W2ejpMyZY49l9991jjz32qLTsgeP4McccU+nSHslSVPSyjV601uZ07r///hVnH7CBnpRBD5y99PHwww/vjAG99ukmM2N24IEHVkg5/GQLfvoBHkVInzVao7ias40/cHTCoxVPQB86MtFlkSkOctloT6HA46WTPXBsR0c2OSmPLDLa+W/nP31mA/52/tv5b+e/nf92/tv5n9f8f+Mb35jtOZPMehC988474+mnn47XX389brjhhnjooYfinnvuiW9961s1kBR97nOfi1133TW23XbbTthtt91qQSiGffbZpzOYAmSeBbP99tvHDjvs0IlPmXvttVflI5usnXfeOSZNmhRbb7111cVhNLvsskuF7bbb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" /></p><p>If a restart is being triggered, the current implementation determines the Java class that is being called when the user double clicks on the (portable or non-portable) jarball. It passes that class (along with some program args) to the startJarApplication method. The following is a short excerpt from the source of the NumericalChameleon 3.0.0:<br /></p><p><span style="font-size: small;"><span style="background-color: black;"><span style="color: #04ff00;"><span style="font-family: courier;"> Class clazz = isPortable() ? net.numericalchameleon.launchers.MainGUIPortable.class : net.numericalchameleon.launchers.MainGUI.class;<br /> ProcessHelper.startJarApplication(JVMoptions, clazz, args);</span></span></span></span><br /></p><p>See also <a href="https://github.com/jonelo/n16n-desktop" target="_blank">https://github.com/jonelo/n16n-desktop</a><br /></p><p>The startJarApplication method basically finds both the java executable binary and the .jar file that were used to start
the app. It builds a
new process using ProcessBuilder and starts it so that a new process with a new PID gets created. The parent process simply exists and the new process will survive. <br /></p><p>That approach worked perfectly fine on all supported operating systems Windows, Linux, and macOS. However it failed on Linux with the .AppImage, because it is the AppImage itself that starts its contained application. The AppImage does that by mounting its payload in read only mode and calling an AppRun script that launches the JVM which launches the .jar file. So knowning the path to the java executable isn't helpful in this case, because it will change each time the AppImage starts.</p><h3 style="text-align: left;">Solution to Problem 1: Check whether we are running from an .AppImage?</h3><p>The solution to the problem 1 is to determine whether the app is running from an .AppImage. And if it does, we have to restart the AppImage binary rather than the .jar file. To to that we can check, whether we are on Linux, because .AppImages are Linux only and we can check whether the system proberty called java.home starts with "/tmp/.mount", because that is the mount point that AppImage uses to mount its payload. If we are runnig from an AppImage, we also need to know the path to the .AppImage file itself. This can be done by passing the $APPIMAGE environement variable as a system property to the application launcher called AppRun:<br /></p><pre><span style="font-size: x-small;"><span style="font-family: courier;"># -- snip --<br /># start the application in the expected working folder
../openjdk/bin/java -Dapplication.appimage="$APPIMAGE" -jar nc.jar "$@"</span>
</span></pre><p> And in Java land, we need to add some code to achieve that:<br /></p><p><span style="background-color: black;"><span style="color: #04ff00;"><span style="font-size: x-small;"><span style="font-family: courier;"><br /><span style="font-size: small;"> if (System.getProperty("os.name").equalsIgnoreCase("Linux")<br /> && System.getProperty("java.home").startsWith("/tmp/.mount_")) {<br /> ...<br /> String appimage = System.getProperty("application.appimage");</span></span></span><br /></span></span></p><p>Since we now know the entire path to the AppImage, it is easy to restart the AppImage using a standard ProcessBuilder.</p><p><br /></p><h3 style="text-align: left;">Problem 2: Files are not writable<br /></h3><p>The NumericalChameleon comes with a lot of files, many of them can be modified by the user. For example, if the user would like to load historic or current exchange rates, the user can do that by selecting the appropriate function in the app. However, since the AppImage mounts everything in ready-only mode, persistance is disabled and the app data cannot be updated by the user. The user has to wait for an updated AppImage. Well, since I am not going to upload an updated AppImage every day, those volatile data should be continued to be updated by the user on demand. The NC stores all changable data in the folder called data.<br /></p><h3 style="text-align: left;">Solution to Problem 2: let's use a symlink to /tmp<br /></h3><p>Let's see whether we can find a solution for problem 2 that doesn't require any code chages in Java land. Since all files in the AppImage are being mounted ready-only and cannot be changed, the app image needs to hardcode a path that is available on all Linux platforms and it also must be accessible by the user. The home folder is not an option here, because the user's home is unknown at the time when the AppImage is being built. The solution is to use the /tmp path, because /tmp has the sticky bit set by default and it is writable by the user. So we bake a symlink called data that points to /tmp/.NumericalChameleon/data into the AppImage. The preciding dot is to mark that folder hidden on Linux. Here is an excerpt from my build script:</p><p><span style="font-size: x-small;"><span style="font-family: courier;"># -- snip --<br /># prepare a pointer to /tmp which is both known and user writable<br />mv "${n16nDir}/data" "${n16nDir}/data.ori"<br />cd "${n16nDir}"<br />ln -s /tmp/.NumericalChameleon/data data<br />cd -<br />"./${appImageTool}" --no-appstream "${appdir}" "${outdir}/${outfile}"<br /></span></span></p><p>If the application starts, we simply need to check whether there is an up to date data folder and if it isn't, we simply copy the actual data folder from the mounted .AppImage mount point to /tmp/.NumericalChameleon/data:</p><p><span style="font-size: x-small;"><span style="font-family: courier;"># -- snip --<br />if [[ $refresh -eq 1 ]]; then<br /> mkdir -p /tmp/.NumericalChameleon<br /> printf "copying data files to %s\n" "$dataFolder"<br /> cp -r ../data.ori/. "$dataFolder"<br /> printf "%s\n" "$currentVersion" > "$versionFile"<br />fi<br /><br /># start the application in the expected working folder</span><span style="font-family: courier;"> <br />../openjdk/bin/java -Dapplication.appimage="$APPIMAGE" -jar nc.jar "$@"</span></span></p><p><span style="font-family: courier;"> </span></p><p><br /></p><p>And now we also can update the exchange rates on the fly:<br /></p><p><span style="font-size: small;"><span style="background-color: black;"><span style="color: #04ff00;"><span style="font-family: courier;">./NumericalChameleon-x86_64.AppImage --filter ebc.europa.eu --continue</span></span></span></span><br /></p><p>Mission completed.<br /></p><p>The next release of the NumericalChameleon will also support the AppImage :-)<br /></p><p></p><p><br /></p>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-13536637438749499502019-10-13T13:32:00.002+02:002019-10-13T14:16:35.082+02:00AHT Fix - restore the Apple Hardware Test on your (old) Mac<div>
This article applies to you only if you have an old Mac that was released before June 2013. Yes, this article is about old hardware that is still out there. It is even still traded on ebay for exmaple. So I am pleased to announce AHT Fix. The tiny app restores the Apple Hardware Test on older Macs (released before June 2013) where Mac OS X, OS X or macOS has been reinstalled from scratch. Please also have a look at the "Implementation details and credits" in this article.</div>
<div>
<br /></div>
<h2>
The Problem</h2>
<div>
<div>
<i>„Apple Hardware Test (AHT) contains a suite of diagnostics that will test the hardware of your computer. […] If your Mac was released after June 2013, you will use Apple Diagnostics rather than Apple Hardware Test (AHT).“</i> See also <a href="https://support.apple.com/en-us/HT201257">https://support.apple.com/en-us/HT201257</a></div>
</div>
<div>
<br /></div>
<div>
If you have reinstalled an older Mac from scratch, the diagnostic tools might no longer be available. If there is content in <span style="background-color: rgba(27 , 31 , 35 , 0.0470588); color: #24292e; font-family: , "consolas" , "liberation mono" , "menlo" , monospace; font-size: 13.600000381469727px;">/System/Library/CoreServices/.diagnostics</span> you are affected. Unless you have the original disks that came with your Mac, there seems to be no way to restore the AHT.</div>
<div>
<br /></div>
<h2>
The Solution</h2>
<div>
AHT Fix. You can grab a copy from <a href="https://johann.loefflmann.net/en/software/index.html#ahtfix">https://github.com/jonelo/ahtfix</a></div>
<div>
<br /></div>
<div>
The application will determine the model of your Mac, query an Apple server, download the appropriate AHT binaries and restore it on your Mac. And once restored you just need to follow the instructions at <a href="https://support.apple.com/en-us/HT201257">https://support.apple.com/en-us/HT201257</a> in order to perform all hardware diagnostics on your Mac.</div>
<div>
<br />
<b>Note: </b>Starting with El Capitan (OS X 10.11) there is a new feature called System Integrity Protection (SIP) that prevents the modificaiton of a number of operating sytem directories by default.<br />
In order to use AHTFix on El Capitan and later you have to disable SIP temporarily. <br />
See also <a href="https://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html">https://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html</a><br />
<br />
<h3>
System Requirements</h3>
<div>
<ul>
<li>A Mac, released before June 2013</li>
<li>Mac OS X 10.6 or later</li>
<li>SIP disabled if you run El Capitan (OS X 10.11) or later</li>
<li>An internet connection (any bandwidth)</li>
</ul>
</div>
</div>
<h3>
Implementation details and credits</h3>
<div>
<div>
<div>
On <a href="https://github.com/upekkha/AppleHardwareTest">https://github.com/upekkha/AppleHardwareTest</a> you find detailed instructions from Claude Becker how to restore the AHT manually. I put those instructions (and a few more) to a bash script so that you can restore the AHT in a comfortable way.<br />
<br />
I also would like to thank Apple for hosting the AHT binaries on their servers. That really helps users to restore the AHT on Macs that would be otherwise incomplete.</div>
</div>
</div>
<h3>
</h3>
<h3>
</h3>
<div>
<ul>
</ul>
<div>
<br /></div>
</div>
<div>
<br /></div>
Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-9071527705367108572019-01-19T14:29:00.000+01:002019-01-29T22:22:04.928+01:00How to create a .jar association for your OpenJDKFrom Java 11, <a href="https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later">Oracle has changed the license of their JDK</a>, so you probably may want (or even have) to move to OpenJDK, and if you have moved already to OpenJDK, you may have noticed that clicking on a .jar didn't work anymore as it did with Oracle JDK binaries. This is because most of the pre-build OpenJDK binaries are coming without an installer on Microsoft Windows. Fortunately, it is easy to fix - with <a href="https://johann.loefflmann.net/en/software/jarfix/index.html" target="_blank">jarfix</a>.<br />
<br />
In the following example I show you how to use jarfix in order to setup the .jar association for your OpenJDK.<br />
<br />
<br />
<b>1. Download the OpenJDK</b><br />
<br />
Download the OpenJDK from the source of your choice. You could get it from <a href="http://jdk.java.net/" target="_blank">http://jdk.java.net/</a> or <a href="https://adoptopenjdk.net/" target="_blank">https://adoptopenjdk.net</a> for example. Actually there are many more sources where you can get it, but I have downloaded the latest OpenJDK from https://adoptopenjdk.net, and extracted the .zip file to C:\Applications\jdk-11.0.1+13<br />
<br />
<br />
<b>2. Download jarfix</b><br />
<br />
Download jarfix.exe from the <a href="https://johann.loefflmann.net/en/software/jarfix/index.html" target="_blank">jarfix homepage</a>
and store the .exe on a folder of your choice on your harddrive. On my
Windows instance, I have stored the jarfix.exe to C:\Applications\jarfix\<br />
<br />
<br />
<br />
<br />
<b>3. Create a jarfix config file</b><br />
<br />
Create a jarfix.ini file to C:\Applications\jarfix\ with the following content:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">[jarfix]</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">options=/a </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">action="C:\Applications\jdk-11.0.1+13\bin\javaw.exe" -jar "%1" %*</span><br />
<br />
<br />
Those entries tell jarfix to setup a .jar association with the OpenJDK in C:\Applications\jdk-11.0.1+13\ - you may want to modify that path according to the actual path that you have choosen at step 1. The line called "options=/a" is optional, it tells jarfix to create a "Open as Administrator" menu entry in order to run .jar files also under the Admin account.<br />
<br />
Hint: you can run jarfix /x in order to extract an example jarfix.ini file which has a lot of useful examples for a Java developer on Windows.<br />
<br />
<b>Update January 27, 2019:</b> from Jarfix version 3 you can recreate
hijacked .jar associations out of the box (by a double click without an .ini file) not only for the Oracle JDK, but also for the OpenJDK from
Azul Systems. <br />
<br />
<br />
<br />
<b>4. Run jarfix using the config file</b><br />
<br />
Open a Windows Command Prompt or simply hit both the Windows Key and R in order to enter the following command:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">C:\Applications\jarfix\jarfix.exe /c</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZRQrDZiO_bqOqifCHjRv36bbKiuxtO-n3fwdMRu2u0DpQTlU9PkFWuQvZDTo3rpWzFvGNIOwMx64F-CDzDIfTlosI5jC3aVIApxWFUwOrU5zwjYgz75HHMxzquwu4n5xIy3ub9jZwYhI/s1600/jarfix-c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="206" data-original-width="399" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZRQrDZiO_bqOqifCHjRv36bbKiuxtO-n3fwdMRu2u0DpQTlU9PkFWuQvZDTo3rpWzFvGNIOwMx64F-CDzDIfTlosI5jC3aVIApxWFUwOrU5zwjYgz75HHMxzquwu4n5xIy3ub9jZwYhI/s1600/jarfix-c.png" /></a></div>
<br />
<b>Update January 27, 2019:</b> from Jarfix version 3 it is not necessary
anymore to pass the option /c as a parameter. If a .ini file exists with
the same name as the .exe in the same directory, jarfix will read the .ini file in order to initialize itself with the values from the .ini. In other words, you can simply double click on jarfix.exe and the content of jarfix.ini will be taken into account.<br />
<br />
<b></b><br />
<b></b><br />
<b></b><br />
<b></b><br />
<b></b><br />
<b></b><br />
<b><br /></b>
<b>5. Test it</b><br />
<br />
If you have run "jarfix /x" at step 3, you can double click on the existing jartest.jar in C:\Applications\jarfix in order to test whether it works as expected:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXSD06AFmnEk841QVG6XXVsQStdkzLNXlAU84a9isPyDUEBLfrp_z10ottSau4QPChRjpdFpV0sR882IN_0zGDouctBOSvsyc88sUxOZ1z07C4g_ZkZO64ft7BZjx-dEMOhlHh6G76cxA/s1600/jartest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="266" data-original-width="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXSD06AFmnEk841QVG6XXVsQStdkzLNXlAU84a9isPyDUEBLfrp_z10ottSau4QPChRjpdFpV0sR882IN_0zGDouctBOSvsyc88sUxOZ1z07C4g_ZkZO64ft7BZjx-dEMOhlHh6G76cxA/s1600/jartest.png" /></a></div>
<br />
<br />
<br />
As you can see above we have launched the OpenJDK from AdoptOpenJDK by double-clicking on a .jar file.<br />
<br />
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com1tag:blogger.com,1999:blog-6293672538298879291.post-87719442416406492202018-07-12T22:26:00.002+02:002023-08-30T22:10:39.791+02:00How to install or update your preferred JDK with one single command on macOS or GNU/Linux?What is your preferred JRE/JDK? Is it the Oracle JDK from oracle.com or the JRE from java.com, the OpenJDK from jdk.java.net or the OpenJDK from adoptopenjdk.net or zulu.org? Whatever your preference is, you can install or update the JDK with only one single command on macOS or GNU/Linux with the bash script called update_jdk.<br />
<br />
You can download it from here for free:<br />
<a href="https://github.com/jonelo/bashberries/blob/master/bin/update_jdk" target="_blank">https://github.com/jonelo/bashberries/blob/master/bin/update_jdk</a><br />
<br />
And here comes the one-liner:<br />
<br />
<pre style="background-color: #f6f8fa; border-radius: 3px; box-sizing: border-box; color: #24292e; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13.6px; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13.6px; line-height: inherit; margin: 0px; overflow: visible; padding: 0px; word-break: normal; word-wrap: normal;">URL=https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz
sudo ./update_jdk -az -s $URL -t openjdk10 /opt/java/jdk/</code></pre>
The command above downloads the OpenJDK 10 from adoptopenjdk.net (you can specify the source and type with -s and -t), extracts it, applies the latest time zone data from IANA by downloading, extracting and calling the latest time zone updater (you have to accept the Oracle license by specifying the -a option) and it saves .version files that store the URI of the actual download for re-run purposes (see below). In /opt/java/jdk/ you will then find symlinks that point to the latest latest updated OpenJDK 10 folder (and the latest tzupdater.jar if you run the script with -z). Now you have a fixed path that you can use to configure your IDE, apps, whatever.<br />
<pre style="background-color: #f6f8fa; border-radius: 3px; box-sizing: border-box; color: #24292e; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13.6px; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13.6px; line-height: inherit; margin: 0px; overflow: visible; padding: 0px; word-break: normal; word-wrap: normal;">$ /opt/java/jdk/openjdk10_latest/bin/java -version
openjdk version "10.0.1-adoptopenjdk" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1-adoptopenjdk+10)
OpenJDK 64-Bit Server VM (build 10.0.1-adoptopenjdk+10, mixed mode)</code></pre>
If you re-run the script above, it will only download the bits if they are different from those that you have downloaded already (it simply compares the .version file), updates the JDK that you have specified with -t and recreates the symlinks. So with the update_jdk script you stay up to date the easy way.<br />
<br />
<br />
<b>Update Aug 24, 2018:</b><br />
bash-dwarfs has been renamed to bashberries<br />
<br />
<b>Update Sep 23, 2018:</b><br />
update_jre has been renamed to update_jdk<br />
<br />
<b>Update Oct 13, 2019:</b><br />
Option -s requires an exact URL that points to a JRE/JDK tarball, because it appears that the filenames on the servers are too volatile and future changes to them cannot be predicted.<br />
Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-23111938223427110112018-06-17T23:03:00.001+02:002018-06-17T23:03:37.550+02:00NumericalChameleon is running in the web browser using WebswingToday I run the <a href="http://numericalchameleon.net/" target="_blank">NumericalChameleon</a> (a Swing based app) in my web browser on my desktop by using <a href="https://webswing.org/" target="_blank">Webswing</a>. It really works like a charm! The NC GUI acts in just the same way as it does when running natively. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL9TzBVV9qk9syZD_Xu5dbxippIwxVH5O9cZQP2BHD565GJ8fHawb67bzpmsLSDEAvUCZOuK8ZWFdEVsjJ-M30wfKv50ba9W4mykVH9mU5A9uUGEEIwTQhurNQ_eLKXmVnhFnq7d-HDjw/s1600/nc-in-edge-using-webswing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1028" data-original-width="1600" height="409" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL9TzBVV9qk9syZD_Xu5dbxippIwxVH5O9cZQP2BHD565GJ8fHawb67bzpmsLSDEAvUCZOuK8ZWFdEVsjJ-M30wfKv50ba9W4mykVH9mU5A9uUGEEIwTQhurNQ_eLKXmVnhFnq7d-HDjw/s640/nc-in-edge-using-webswing.png" width="640" /></a></div>
<h3>
</h3>
<h3>
It works like a charm - in the web browser on the desktop</h3>
I downloaded and installed Webswing 2.5.4. and I did no modifications
on the NumericalChameleon 2.1.0. I just copied the NC folder to the
Webswing demo folder and entered some values at the configuration dialog
such as Name, Icon, Home Folder, Working Directory, Class Path, etc. After I have configured it in Webswing, the app appears in the app list of Webswing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrc1L75UGeL6CZKtlFCk_r_bILpu73K0Vnh85HUoegH0S2T-P_akBCuMGBqkNXMEFaZ3fEOs6mL6Dg5rXqs1DG1P2mhKj27B__oFu8sy3S49FSzUvtNQXJHGrngO9dOJBWKfNqqAmWG8E/s1600/Webswing-list-with-numericalchameleon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1028" data-original-width="1600" height="409" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrc1L75UGeL6CZKtlFCk_r_bILpu73K0Vnh85HUoegH0S2T-P_akBCuMGBqkNXMEFaZ3fEOs6mL6Dg5rXqs1DG1P2mhKj27B__oFu8sy3S49FSzUvtNQXJHGrngO9dOJBWKfNqqAmWG8E/s640/Webswing-list-with-numericalchameleon.png" width="640" /></a></div>
<br />
<br />
<br />
<br />
The NC GUI acts in just the same way as it does when running natively on bare metal.<br />
<br />
Even theme
selection, language selection, restarting the app, updating exchange
rates and audio was working (at least when the process is running on localhost)! The performance is surprisingly good, although a little bit slower if I compare it with native performance.<br />
<br />
One (minor) problem I found was that opening help and opening data
tables didn't work, because the help files and data tables are stored
locally as HTML. In the log I found traces of
"WebPaintDispatcher:notifyOpenLinkAction", so the action was recognized,
but no action happened.<br />
<br />
Normal http links were working, however. <br />
<h3>
It didn't work well on the smart phone, though</h3>
I also tried to access the above setup on my smart phone, but without
having a screen keyboard, the usage of a Swing app in the browser is
very limited, especially if I rely on entering numbers to a software. Also it seems not to be possible to move windows around inside
the browser. At least it was pretty funny to hear the numbers spoken by NC on
my desktop audio boxes when I pushed the play sound button on my
smartphone ;-)<br />
<br />
<br />
<h3>
Summary </h3>
In the web browser on the desktop using Webswing, the Swing based app NumericalChameleon is working pretty well actually. It is worth to try it!<br />
<br />
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-41868926419132336572018-03-11T17:40:00.006+01:002018-03-11T18:02:18.810+01:00... and all I got was this lousy T-shirtTo be honest, it is not a lousy T-shirt at all, it is great T-shirt from the <a href="https://www.linuxfoundation.org/" target="_blank">Linux Foundation</a> actually. It has a simplified <a href="https://en.wikipedia.org/wiki/Tux" target="_blank">Tux</a> icon and a little riddle on its front:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2DSLeK652vazoa8E1Ffl2Y6bcaf9UV-3rllmpqXsD96MZL_hExo5GsHLxWCFph5679XJQSShUdy8NFYFzAnQUqpEKSGsPIdEUGP08LLgMbeMR4qLTkkdNBcmzEqJHoCqFl0x4i8RqVU4/s1600/T-Shirt+Linux+Foundation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2DSLeK652vazoa8E1Ffl2Y6bcaf9UV-3rllmpqXsD96MZL_hExo5GsHLxWCFph5679XJQSShUdy8NFYFzAnQUqpEKSGsPIdEUGP08LLgMbeMR4qLTkkdNBcmzEqJHoCqFl0x4i8RqVU4/s1600/T-Shirt+Linux+Foundation.png" /></a></div>
<br />
<br />
<b>Warning:</b> don't scroll down if you want to solve the riddle by your own. Scroll down in order to see how I solved the riddle. <br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
. <br />
.<br />
<b>2nd WARNING </b><br />
DON'T SCROLL DOWN IF YOU WANT TO SOLVE IT BY YOUR OWN !!!<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
<b> Last WARNING</b><br />
Ok, either you have solved the riddly by your own or you are simply too curious ;-)<br />
OK, FEEL FREE TO SCROLL DOWN IF YOU WANT TO SEE THE SOLUTION !!!<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
Actually, I was wondering whether I can solve the riddle by using the <a href="http://numericalchameleon.net/" target="_blank">NumericalChameleon</a> (yeah, you know I am the author of it, don't you?) and I am glad to announce that it can be used to solve the riddle as well. I entered the bitstream at the category "Positional Notations, Radix 2-36", and converted the value to hex. Since the Unicode character set is a superset of ASCII, and numbers 0 - 127 have the same meaning in ASCII as they have in the Unicode character set, it was possible to prefix each hex number by 00 in order to satisfy the expected input format at the "Unicode® Characters (Basic Multilingual Plane)" category. Below you see screenshots of both the NumericalChameleon (with the solution) and a hex editor in the background (with the solution) in order to verify the result.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc7GmHdO2BVpgEU6sMKPY_eOHOY0GdNOzNGHtBUVbSwl4QDlnzBaMCRB2y5tDTgqtduVeHSljYyN_3oSRwRRUk90vQUSEuuzMufnPpEFZdzPq_GgYOZK5TNNz2D4OTtnRaJIp_8Aarb4c/s1600/open+source.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="930" data-original-width="1044" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc7GmHdO2BVpgEU6sMKPY_eOHOY0GdNOzNGHtBUVbSwl4QDlnzBaMCRB2y5tDTgqtduVeHSljYyN_3oSRwRRUk90vQUSEuuzMufnPpEFZdzPq_GgYOZK5TNNz2D4OTtnRaJIp_8Aarb4c/s1600/open+source.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-50534167359923255802017-10-22T22:19:00.004+02:002018-08-24T11:21:40.621+02:00How to open your browser from bash on Windows (WSL), GNU/Linux, macOS and SolarisSometimes it can be useful to open a browser from your bash. I have developed a bash function that does exactly that - and since I am a fan of multiple operating systems - the function works not only on GNU/Linux, macOS, and Solaris but also on the bash on Windows as part of the WSL (Windows Subsystem for Linux).<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff; background-color: #000228}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style><br />
<div>
<br /></div>
<div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff; background-color: #000228}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
<br />
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;">function openBrowser() {</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>URL=$1</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>OS=$(uname -s)</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>case "$OS" in</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>Darwin)</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>open "$URL"</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>;;</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>Linux)</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>if [[ "$(cat /proc/sys/kernel/osrelease)" =~ "Microsoft" ]]; then</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span># We are in bash on WSL (Windows Subsystem for Linux)</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span># We don't need a Linux-Browser and an X-Server,</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span># we just can call iexplore.exe,</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span># see also https://msdn.microsoft.com/en-us/commandline/wsl/interop</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>if [[ "(uname -p)" == "x86_64" ]]; then</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>/mnt/c/Program\ Files/Internet\ Explorer/iexplore.exe "$URL" 2> /dev/null</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>else</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>/mnt/c/Program\ Files\ \(x86\)/Internet\ Explorer/iexplore.exe "$URL" 2> /dev/null</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>fi</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>else</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>xdg-open "$URL"</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>fi</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>;;</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>Solaris)</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>/usr/dt/bin/sdtwebclient "$URL"</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>;;</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>*)</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>printf "Not supported on %s\n" "$OS"</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>;;</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-converted-space"> </span>esac</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;">}</span></div>
</div>
<div>
<br /></div>
<div>
To use the function in your bash-script, simply source the file that contains the function - I called the file network.include. You find the file as well at the repository of my tiny project called bashberries - that is a tiny collection of both bash scripts and bash includes, released under the terms of the Apache 2.0 license. The script below calls the function from above and opens the <a href="https://github.com/jonelo/bashberries" target="_blank">homepage to bashberries</a>:</div>
<div>
<br /></div>
<div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff; background-color: #000228}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
<br />
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;">#!/usr/bin/env bash</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;">. ./network.include</span></div>
<div class="p1">
<span class="s1" style="font-family: "courier new" , "courier" , monospace;">openBrowser https://github.com/jonelo/bash-dwarfs</span></div>
</div>
<div>
<br /></div>
<div>
Best regards,</div>
<div>
Johann<br />
<br />
<b>Update Oct 23, 2017:</b><br />
uname -r is not reliable enough, it does not work on the wls beta with Ubuntu 14.04 for example, better is to do a <span style="background-color: white; color: green; font-family: "menlo"; font-weight: bold;">cat /proc/sys/kernel/osrelease</span><br />
<span style="background-color: white; color: green; font-family: "menlo"; font-weight: bold;"><b style="caret-color: rgb(0, 0, 0); color: black; font-family: -webkit-standard;"><br /></b></span>
<span style="background-color: white; color: green; font-family: "menlo"; font-weight: bold;"><b style="caret-color: rgb(0, 0, 0); color: black; font-family: -webkit-standard;">Update Oct 23, 2017:</b></span><br />
<span style="background-color: white; color: green; font-family: "menlo"; font-weight: bold;"><span style="color: black; font-weight: normal;">bash-dwarfs has been renamed to bashberries.</span></span><br />
<span style="background-color: white; color: green; font-family: "menlo"; font-weight: bold;"><span style="color: black; font-weight: normal;"><br /></span></span></div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff; background-color: #000228}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-84767114949647097782017-06-09T23:17:00.002+02:002017-06-09T23:28:01.982+02:00macOS: To use the java command-line tool you need to install a JDK - are you kidding me?Recently I detected an error message on macOS saying that it seems to be required to install a JDK in order to just use the java command-line tool. A JRE is not enough? Really? Are you kidding me?<br />
<br />
The screenshot below shows the error message in German: "Um das java-Befehlszeilenprogramm nutzen zu können, musst du ein Java-Entwicklerpaket installieren." In English it means: "To use the java command-line tool you need to install a JDK".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpUIF-dgdBAOm0clbYE5wRdCa1PXG8LQdgTlKKJR0ZdC1u0P8QcSofqu6o0XeKSn8whpHmOWSKfpkdvSHEkB_D8yfqkYzhdB_SECJA-S0oaKaF2-ZOBBU1TxtwHYPLnO3SRGbdU1FSrtw/s1600/JRE+is+not+enough+on+macOS.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="244" data-original-width="539" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpUIF-dgdBAOm0clbYE5wRdCa1PXG8LQdgTlKKJR0ZdC1u0P8QcSofqu6o0XeKSn8whpHmOWSKfpkdvSHEkB_D8yfqkYzhdB_SECJA-S0oaKaF2-ZOBBU1TxtwHYPLnO3SRGbdU1FSrtw/s1600/JRE+is+not+enough+on+macOS.png" /></a></div>
<br />
Since I am a developer, I always installed the JDK on my Mac and I detected that phenomenon very late. Actually the web is full of those traces - however, without a suitable solution in my opinion. Well, I simply don't want to tell my users to install a JDK if a simple JRE is enough. Any existing JRE on the system should do the job in my humble opinion.<br />
<br />
Here we go, here is my little bash launcher that tries its best to launch java even if you have installed a JRE only on your Mac:<br />
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">#!/bin/bash</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">if [[ ! -z $JAVA_HOME ]]; then</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> JEXEC=$JAVA_HOME/bin/java</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">else</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> LIBEXEC=$(/usr/libexec/java_home 2> /dev/null | head -1)</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> # is there a JDK?</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> if [[ ! -z $LIBEXEC ]]; then</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> JEXEC="$LIBEXEC/bin/java"</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> else</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> # is there a JRE?</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> JRE=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> if [[ -f "$JRE" ]]; then</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> JEXEC="$JRE"</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> else</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> JEXEC=java</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> fi</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> fi</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">fi</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">"$JEXEC" "$@"</span></div>
<br />
The script checks for the JAVA_HOME environment variable and if that is not set, it checks for any registered JDKs by calling /usr/libexec/java_home and if that didn't return anything, it simply uses the JRE that could be available at a well known path on macOS (tested with both Java 8u131 and Java 9-ea) and if that fails as well, it uses java and if even that fails it means you really don't have any Java installed and you should get the error message above again.<br />
<br />
I use the launcher above already as part of the Jacksum macOS Finder integration. See also<br />
<a href="http://jacksum.net/de/tutorials/integration_jacksum_osx_finder.html">http://jacksum.net/de/tutorials/integration_jacksum_osx_finder.html</a><br />
<br />
Feel free to use the launcher script for your Java app as well if it meets your needs.<br />
<br />
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-1575207269466086022017-05-28T21:34:00.001+02:002017-05-28T21:39:58.650+02:00Solaris' pargs, penv, pfiles, pmap, pstack, and pwdx on macOSThree weeks ago I posted <a href="http://loefflmann.blogspot.com/2017/05/solaris-pargs-penv-pfiles-pmap-and-pstack-on-Linux.html">Solaris' pargs, penv, pfiles, pmap, and pstack on GNU/Linux</a> and since I am also a Mac user, I thought it could be a good idea to have those commands also on macOS. Here we go ...<br />
<br />
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<div style="font-family: Menlo; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">function pargs() { L=$(ps ww $1 | tail -1); echo ${L:27}; }</span></div>
<div style="font-family: Menlo; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">function penv() { L=$(pargs $1); C=${#L}; L=$(ps wwe $1 | tail -1); L=${L:27}; echo ${L:$C} | tr ' ' '\n'; }</span></div>
<div style="font-family: Menlo; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">function pfiles() { lsof -p $1; }</span></div>
<div style="font-family: Menlo; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">function pmap() { vmmap $1; }</span></div>
<div style="font-family: Menlo; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">function pstack() { echo "thread backtrace all" | lldb -p $1; }</span></div>
<div style="font-family: Menlo; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">function pwdx() { L=$(lsof -a -d cwd -p $1 | tail -1); echo /${L#*/}; }</span></div>
</div>
<br />
Since there is no access to a proc file system on macOS (at least not by default), both pargs and penv call the ps command and pmap calls vmmap. Furthermore pwdx calls lsof with the current working directory descriptor request in order to get the required info. Since "ps wwe" returns not only the environment variables for the given process but also the program arguments on macOS, we need to strip the program arguments from the output. This has been done by calling pargs, determining the length of that output and cutting that length from the string again before we pass it to the tr command that gives us an environment variable for each line. For blog purposes I have shortened the variable names, L stands for line and C for count.<br />
<br />
<b>References:</b><br />
http://wiki.bash-hackers.org/syntax/pe<br />
http://yongsun.me/2009/01/tips-the-equivalents-of-ldd1-and-pmap1-on-mac-os-x/Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-32363317074865546012017-05-07T12:35:00.002+02:002017-05-07T12:46:12.552+02:00Solaris' pargs, penv, pfiles, pmap, and pstack on GNU/LinuxI really like the p-commands on Sun/Oracle Solaris and I miss those on GNU/Linux.
Therefore I have gathered/created rudimental equivalent one-liners that work on a PID.
<br />
<br />
I have added the following functions to my ~/.bash_aliases file that is being sourced by my ~/.bashrc. pargs, penv, and pmap are gathering the proc file system, while pfiles and pstack are calling lsof resp. gdb.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">function pargs() { cat /proc/$1/cmdline | tr '\0' ' ' | sed 's/ $/\n/g'; } <br />function penv() { cat /proc/$1/environ | tr '\0' '\n'; } <br />function pfiles() { lsof -p $1; } </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">function pmap() { cat /proc/$1/maps; } <br />function pstack() { sudo gdb --pid=$1 --batch -ex "thread apply all bt"; } </span><br />
<br />
Note that due to a kernel hardening (ptrace protection) on Ubuntu 10.10 and later you need to call gdb under the control of sudo, or alternatively modify the ptrace_scope property. See also <a href="https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection">https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection</a> and <a href="https://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process">https://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process</a><br />
<br />
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-76534132432886549612017-02-10T22:20:00.001+01:002017-02-10T23:03:50.476+01:00How the NumericalChameleon Installer obtains the latest JRE for Windows<div>
Today I will explain how the NumericalChameleon installer obtains the latest Java Runtime Environment (JRE) for Microsoft Windows.</div>
<div>
<br /></div>
The NumericalChameleon (<a href="http://numericalchameleon.net/">http://numericalchameleon.net</a>) is written in Java and it relies on a JRE that is installed on your system. The NumericalChameleon installer checks at first whether a JRE is installed. If there is one, everything is fine and the installer will continue with a normal installation. If there is none, the installer downloads the latest JRE offline installer from Oracle and launches it. The offline installer installs the JRE on your system and once it is installed, it will give back the control to the NumericalChameleon installer that continues with the installation until the NumericalChameleon software package is installed as well.<br />
<div>
<br /></div>
<div>
Below you find a screenshot of the NumericalChameleon installer, localized in German, running on Windows 10 x64 while downloading the latest JRE offline installer:<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFffygry_Dqu1OUO_by6EoFKKTdFkCc97BFipN_A_DBoiClT00QvXAeWB0GcGBpUgekYwxH-DMin2sCE5QqN-7PtVoBUrfXZSxammrejQ9SyypLG7NDSbhphPN8xNVAQqlEp4RrZ7pDog/s1600/NC+Installer+on+Windows.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFffygry_Dqu1OUO_by6EoFKKTdFkCc97BFipN_A_DBoiClT00QvXAeWB0GcGBpUgekYwxH-DMin2sCE5QqN-7PtVoBUrfXZSxammrejQ9SyypLG7NDSbhphPN8xNVAQqlEp4RrZ7pDog/s1600/NC+Installer+on+Windows.png" /></a></div>
<br /></div>
<div style="text-align: center;">
<img src="webkit-fake-url://44e3b967-7f81-4e1f-9bf0-bc0acc185d8c/image.tiff" /></div>
<div>
<br /></div>
<div>
Since the actual locations of the JRE offline exe installers are different for each Java version, and those locations are both unpredictable and volatile, it is important for the NumericalChameleon installer to rely on well known static URIs, because the installer binary cannot be changed/patched anymore once it is deployed on the web.<br />
<div>
<div>
<br /></div>
<div>
Those well known URIs are redirects in the .htaccess file on my Apache server actually, and the redirects are being updated every day. I create those redirects by parsing the website that has the locations of the Windows JRE offline installers.</div>
<div>
<br /></div>
<div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">$ cat bin/update_htaccess</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">#!/</span>bin/bash</div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">HTACCESS="$HOME/numericalchameleon/.htaccess"</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">STATIC="$HOME/numericalchameleon/.htaccess.static"</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal; min-height: 16px;">
<span style="font-variant-ligatures: no-common-ligatures;"></span><br /></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
cat $STATIC > $HTACCESS</div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal; min-height: 16px;">
<span style="font-variant-ligatures: no-common-ligatures;"></span><br /></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
# the locations of the JRE offline installers</div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
URL="https://www.java.com/en/download/manual.jsp"</div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">CONTENT=$(curl -s "$URL")</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal; min-height: 16px;">
<span style="font-variant-ligatures: no-common-ligatures;"></span><br /></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
IDENTIFIER="Windows Offline</a>"</div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">if [[ "$CONTENT" =~ BundleId=([^\"]+)\"\>[[:space:]]*"$IDENTIFIER" ]]; then</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> printf "Redirect /get_java_win32bit http://javadl.oracle.com/webapps/download/AutoDL?BundleId=%s\n" ${BASH_REMATCH[1]} >> $HTACCESS</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">fi</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal; min-height: 16px;">
<span style="font-variant-ligatures: no-common-ligatures;"></span><br /></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">IDENTIFIER="Windows Offline (64-bit)</a>"</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">if [[ "$CONTENT" =~ BundleId=([^\"]+)\"\>[[:space:]]*"$IDENTIFIER" ]]; then</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"> printf "Redirect /get_java_win64bit http://javadl.oracle.com/webapps/download/AutoDL?BundleId=%s\n" ${BASH_REMATCH[1]} >> $HTACCESS</span></div>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">fi</span></div>
</div>
<div>
<span style="font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div>
<span style="font-variant-ligatures: no-common-ligatures;">The .htaccess.static file just contains entries that never change. The update_htaccess script runs by cron periodically on the server in order to have entries that are up to date.</span></div>
<div>
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;"></span></span><br />
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">$ crontab -l | tail -1</span></span></span></div>
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">
</span></span>
<br />
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">9 3 * * * cd bin; ./update_htaccess</span></span></span></div>
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">
</span></span>
<div>
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;"><br /></span></span></span></div>
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">
<div>
<span style="font-variant-ligatures: no-common-ligatures;">After the cron was running, updated redirects can be found in the </span>.htaccess file. In the example below the redirects are from Java 8u121:</div>
</span></span></div>
<div>
<span style="font-variant-ligatures: no-common-ligatures;"></span><br />
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">$ tail -2 .htaccess</span></span></div>
<span style="font-variant-ligatures: no-common-ligatures;">
</span>
<br />
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">Redirect /get_java_win32bit http://javadl.oracle.com/webapps/download/AutoDL?BundleId=218831_e9e7ea248e2c4826b92b3f075a80e441</span></span></div>
<span style="font-variant-ligatures: no-common-ligatures;">
</span>
<div style="background-color: #000228; color: white; font-family: Menlo; font-size: 14px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-variant-ligatures: no-common-ligatures;">Redirect /get_java_win64bit http://javadl.oracle.com/webapps/download/AutoDL?BundleId=218833_e9e7ea248e2c4826b92b3f075a80e441</span></span></div>
<span style="font-variant-ligatures: no-common-ligatures;">
</span></div>
<div>
<br /></div>
<div>
<div>
The installer can now rely on the fixed addresses below, dependent whether a 32 bit or a 64 bit system has been found:</div>
<div>
<ul>
<li><a href="http://numericalchameleon.net/get_java_win32bit">http://numericalchameleon.net/get_java_win32bit</a></li>
<li><a href="http://numericalchameleon.net/get_java_win64bit">http://numericalchameleon.net/get_java_win64bit</a></li>
</ul>
</div>
</div>
<div>
Now you know how the NumericalChameleon installer gets the latest JRE on Windows.</div>
<div>
<br /></div>
<div>
<b>Hint:</b> if the approach above should ever fail and the redirects are not being created, the current installer will fail with a 404. In that case you can simply install the JRE manually before you start the NumericalChameleon installer. In that case the installer won't even go to the internet, because the condition is met already that a JRE has to be installed.</div>
<div>
<br /></div>
</div>
</div>
Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-69564134351481899512016-06-06T22:38:00.000+02:002016-06-06T22:40:21.035+02:00The NumericalChameleon 2.0.0 is on the webI am pleased to announce that the NumericalChameleon 2.0.0 is on the web: <br />
<b><br /></b>
<b><a href="http://numericalchameleon.net/">http://NumericalChameleon.net</a></b><br />
<br />
<br />
The NumericalChameleon is free, open source, cross platform and
comprehensive software in order to convert units with a precision of up
to 1000 decimal places. It supports more than 5200 units in 93 categories, including not only all important physical units, but also useful units in non-standard categories like exchange rates, time zones, spoken numbers (literally and by audio), roman numerals, geographic coordinates, radixes, fractions, checksums, bits&bytes, screen resolutions, colorcodes, unicodes, international dial codes, calendar and holiday calculations and many more.<br />
<br />
<br />
Release notes for the version 2.0.0 are at<br />
<br />
<a href="http://numericalchameleon.net/en/release-notes.html">http://numericalchameleon.net/en/release-notes.html</a><br />
<br />
Kind Regards,<br />
Johann<br />
<br />
<br />
<br />
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-1942065042039253712016-02-14T15:58:00.000+01:002016-02-14T17:03:23.325+01:00A logo for JacksumJacksum is a free cross platform checksum utility. It exists since July 2002. Time to create a logo for it.<br />
<br />
<h3>
Considerations:</h3>
Jacksum is entirely written in Java, it
runs on Apple's OS X, Microsoft Windows, GNU/Linux, and any other operating system
that has a Java Runtime Environment. So Jacksum is really cross
platform, without the need for the user to recompile it. The purpose of Jacksum is to compute and
verify checksums, mainly to check whether a data transfer was successful.<br />
<br />
Actually "<i>Jacksum</i>" is a synthetic word made of
<b>JA</b>va
and <b>C</b>hec<b>KSUM</b> and I wanted to create a logo that reflects both the J as in Java (cross platform feature) and the check as in checksum.
Checkboxes usually have a rectangle shape and the circle should reflect
the comprehensiveness of the sum of all Jacksum's features. Black as in Jack and green as in successful check. <br />
<br />
Furthermore the logo should be recognized even it has been resized to 16x16 pixels. That is important, because Jacksum also supports the File Browser Integration. So it was clear to make a very simple logo, but not simpler.<br />
<br />
<h3>
The logo: </h3>
Here it is:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4B9sKausVOWaHtO4qIVvsM_8Ow2tI2dKsTk7IpsTIVO-yUImpmbc16SWLdE2jiTuYSPTywBedCdLKmrfGbblg9DV3V_Dk_dzrh5rb5JabDQoGTM3M7O-dSClh00UuHEfuyKbQ3Db5SVU/s1600/jacksum_icon_128x128.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4B9sKausVOWaHtO4qIVvsM_8Ow2tI2dKsTk7IpsTIVO-yUImpmbc16SWLdE2jiTuYSPTywBedCdLKmrfGbblg9DV3V_Dk_dzrh5rb5JabDQoGTM3M7O-dSClh00UuHEfuyKbQ3Db5SVU/s400/jacksum_icon_128x128.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
And the icon resized to 16x16 pixels, integrated in the Windows Explorer (menu is localized in German):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANMnQMUu9e_s1RM-3hUnsxB58tdToD1MQgwcuFo_zmZ_xqR8Xgn56Hm4yLqkVXPLi6oqFRKyJB8Gyt7GgqkEBp9lNwxkyOeJ8VYFEAaorkJ76Gbtyq4tnIimAtfyORtAMjGul8YiHl90/s1600/jacksum_at_sendto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANMnQMUu9e_s1RM-3hUnsxB58tdToD1MQgwcuFo_zmZ_xqR8Xgn56Hm4yLqkVXPLi6oqFRKyJB8Gyt7GgqkEBp9lNwxkyOeJ8VYFEAaorkJ76Gbtyq4tnIimAtfyORtAMjGul8YiHl90/s1600/jacksum_at_sendto.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
And on the website called <a href="http://jacksum.net/">jacksum.net</a> it will look like this:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUJZxHKWztA6zuEgy-VVJgtka89ivNzlqYttMoNP7QRH5sYZdjh2XFSz0xLtAlNCl0i7DrPYyKjAsdad7fstbAU2V0zgKaTN812FLoGe_lVkCXOp0TGBkQe67rzZJpH0jwTO4IUFKzVqY/s1600/jacksum.net.website.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUJZxHKWztA6zuEgy-VVJgtka89ivNzlqYttMoNP7QRH5sYZdjh2XFSz0xLtAlNCl0i7DrPYyKjAsdad7fstbAU2V0zgKaTN812FLoGe_lVkCXOp0TGBkQe67rzZJpH0jwTO4IUFKzVqY/s1600/jacksum.net.website.png" /></a></div>
<br />
Stay tuned, there will be more announcements with respect to Jacksum in the near future.<br />
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-16446221986805181392015-06-27T13:15:00.003+02:002016-10-21T22:46:30.437+02:00How to protect your privacy in the text editor called Atom 1.0Yesterday Atom 1.0 was released and the way to protect your privacy
has slightly changed compared to earlier versions. So this is actually an update to my blog that I wrote nine months
ago. See also
<a class="moz-txt-link-freetext" href="http://loefflmann.blogspot.de/2014/09/how-to-protect-your-privacy-in-text.html">http://loefflmann.blogspot.de/2014/09/how-to-protect-your-privacy-in-text.html</a><br />
<br />
Screenshots have been taken on a Mac, but instructions apply to all platforms that are supported by Atom 1.0 (OS X 10.8 or later, Windows 7 & 8, RedHat Linux, and Ubuntu Linux).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPdQRt1q4Z1Ek2XskqI-RMC4cNaGQUdrzBIH0kZo6l40eVMF5V09qmuwilPNd64ihNSWkg3mS4adsIqeQRgFL85yTudpJQsJKfdhD6o7RpAqCevyzpndIywky0ajS2UT3ewIswdwmkdzM/s1600/atom1.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPdQRt1q4Z1Ek2XskqI-RMC4cNaGQUdrzBIH0kZo6l40eVMF5V09qmuwilPNd64ihNSWkg3mS4adsIqeQRgFL85yTudpJQsJKfdhD6o7RpAqCevyzpndIywky0ajS2UT3ewIswdwmkdzM/s640/atom1.0.png" width="474" /></a></div>
<br />Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-66034211823692159372015-03-07T00:14:00.001+01:002016-10-21T22:46:01.790+02:00osxapp_vers has been committed to githubThree days ago I blogged about <a href="http://loefflmann.blogspot.de/2015/03/finding-os-x-version-and-build-in-install-os-x-app.html" target="_blank">how to find the OS X version and build information in an Install*OS X*.app</a>. I have put the lines to a script, improved it, tested it and committed it to github. See also <a href="https://github.com/jonelo/osxapp_vers">https://github.com/jonelo/osxapp_vers</a><br />
<br />
Have fun,<br />
JohannJohann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0tag:blogger.com,1999:blog-6293672538298879291.post-84452080509373930362015-03-03T21:22:00.001+01:002018-03-11T16:59:29.417+01:00Finding the OS X version and build information in an Install*OS X*.app<h3>
The problem</h3>
If you have downloaded [Mac] OS X from the the Apple App Store, the installer is stored to the folder called /Applications and the application name is equal for all update releases of a particular OS X version. For example, the Yosemite installer can be found in "/Applications/Install OS X Yosemite.app" and if you open it, it provides information that it is going to install OS X 10.10. Unfortunately it doesn't tell you whether it is going to install OS X 10.10, OS X 10.10.1 or OS X 10.10.2. In other words, the GUI is not suitable to determine the exact OS X version that the installer is loaded with. Both the update number and the build number are not visible. Screenshot below shows the installer of 10.10.2:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk91P6Cx2De5eLa7ulE4bxZ_-rrKSZqvpIMKUTQzRiaD0CZVFAIcJHgZZ2LwzwKcKBta7fsOo1a-40uJGSz-uapHFFguOl3tFbkNGv_n5eg6eGiOPq8euGUZbkAnaaJkZ_XMHc64j-5go/s1600/Install+OS+X+Yosemite.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk91P6Cx2De5eLa7ulE4bxZ_-rrKSZqvpIMKUTQzRiaD0CZVFAIcJHgZZ2LwzwKcKBta7fsOo1a-40uJGSz-uapHFFguOl3tFbkNGv_n5eg6eGiOPq8euGUZbkAnaaJkZ_XMHc64j-5go/s1600/Install+OS+X+Yosemite.png" width="320" /></a></div>
<br />
<br />
You can find the OS X version and build information of your running OS X, see also <a href="https://support.apple.com/en-us/HT201260">https://support.apple.com/en-us/HT201260</a> - IMHO it should be possible to get those details before an actual installation as well.<br />
<br />
So the question is how to find the complete OS X product version and build version in an "Install*OS X*.app package?<br />
<br />
<h3>
Eleven code lines to success</h3>
The command line tool called sw_vers can print out both the product version and the build version of an installed product. Example from Mavericks:<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
$ sw_vers</div>
<div style="font-family: Menlo; font-size: 11px;">
ProductName:<span class="Apple-tab-span" style="white-space: pre;"> </span>Mac OS X</div>
<div style="font-family: Menlo; font-size: 11px;">
ProductVersion:<span class="Apple-tab-span" style="white-space: pre;"> </span>10.9.5</div>
<div style="font-family: Menlo; font-size: 11px;">
BuildVersion: <span class="Apple-tab-span" style="white-space: pre;"> </span>13F34</div>
<br />
The idea is to get access to the sw_vers respectively the version information that is stored in the installer image.<br />
<br />
At first we need to mount the InstallESD.img that is stored in /Applications/Install*OS X* Installer.app/Contents/SharedSupport. Note that in the example below, the environment variable APPNAME has to be set to the name of the installer app, in case of Yosemite it is "Install OS X Yosemite.app". Also set DEBUG to /dev/stdout in order to see the output of the mount actions. The $$ will be replaced by the pid of the shell which will be our unique number for the session in order to avoid collisions with other potential volumes.<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<pre class="prettyprint linenums" wrap="">hdiutil attach "/Applications/$APPNAME/Contents/SharedSupport/InstallESD.dmg" -noverify -nobrowse -mountpoint /Volumes/InstallESD.$$ > $DEBUG
</pre>
</div>
<br />
Once that is done, we can mount the BaseSystem.dmg<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<pre class="prettyprint linenums" wrap="">hdiutil attach "/Volumes/InstallESD.$$/BaseSystem.dmg" -noverify -nobrowse -mountpoint /Volumes/BaseSystem.$$ > $DEBUG
</pre>
</div>
<br />
Now we have access to sw_vers. However, calling the /Volume/BaseSystem.<pid>/usr/bin/sw_vers won't give us the results we expect, though. Actually it still gathers version information from the host system and not from the mounted volume. That is because the version number is read from the absolute path called /System/Library/CoreServices/SystemVersion.plist. Below is an excerpt from the SystemVersion.plist on the host system running Mavericks.<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>ProductBuildVersion</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>13F34</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>ProductCopyright</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>1983-2014 Apple Inc.</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>ProductName</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Mac OS X</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>ProductUserVisibleVersion</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>10.9.5</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>ProductVersion</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>10.9.5</string></div>
<br />
If we use a changed root environment in order to let read sw_vers the correct file sounds like an easy solution, but tests have shown that it didn't work with the latest Yosemite installer. Well, why not simply mimic the sw_vers functionality by reading the xml file called /Volumes/BaseSystem.$$/System/Library/CoreServices/SystemVersion.plist using bash's regular expression build-in features? That approach is even faster than initiating a changed root environment, root permissions are not required and it is more comfortable than to print out the entire xml:<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<pre class="prettyprint linenums" wrap="">XMLCONTENT=$(<"/Volumes/BaseSystem.$$/System/Library/CoreServices/SystemVersion.plist")
if [[ "$XMLCONTENT" =~ \<key\>ProductVersion\</key\>[[:space:]]*\<string\>([0-9\.]+)\</string\> ]]; then
printf "ProductVersion: %s\n" ${BASH_REMATCH[1]}
fi</pre>
</div>
<br />
XMLCONTENT stores the content of the plist file and the first expression in the brackets resp. ${BASH_REMATCH[1] stores the complete product version of OS X.<br />
<br />
In order to extract the build version information, we can enter:<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<pre class="prettyprint linenums" wrap="">if [[ "$XMLCONTENT" =~ \<key\>ProductBuildVersion\</key\>[[:space:]]*\<string\>([0-9A-Z]+)\</string\> ]]; then
printf "BuildVersion: %s\n" ${BASH_REMATCH[1]}
fi</pre>
</div>
<br />
If the desired information has been gathered, we just need to unmount the two volumes again in reverse order for cleanup purposes:<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<pre class="prettyprint linenums" wrap="">hdiutil detach "/Volumes/BaseSystem.$$" > $DEBUG
hdiutil detach "/Volumes/InstallESD.$$" > $DEBUG
</pre>
</div>
<br />
<h3>
The solution</h3>
Put the eleven code lines above to a small script called osxapp_vers, set execute permissions to it, set APPNAME to an appropriate value and set DEBUG to /dev/null ...<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<pre class="prettyprint linenums" style="font-size: 11px;" wrap="">chmod +x ./osxapp_vers
export APPNAME="Install OS X Yosemite.app"
export DEBUG="/dev/null"
</pre>
</div>
<br />
... and you can determine the Installer OS X app's product version and build version just by calling:<br />
<br />
<div style="font-family: Menlo; font-size: 11px;">
<pre class="prettyprint linenums" wrap="">./osxapp_vers
ProductVersion: 10.10.2
BuildVersion: 14C109
</pre>
</div>
<br />
Note: I have tested the solution above on all my [Mac] OS X downloads from the Apple App Store and I can confirm that this article applies at least to Mac OS X 10.7.5 (Lion) until OS X 10.10.2 (Yosemite).<br />
<br />
Mission completed ;-)<br />
<br />
<h3>
Update on March 4, 2015</h3>
The build version is not a hex value and therefore the regular expression has to be ([0-9A-Z]) instead of ([0-9A-F]). I have fixed the bug in the code above.<br />
<br />
<div>
<h3>
Update on March 7, 2015</h3>
See also <a href="https://loefflmann.blogspot.de/2015/03/osxappvers-has-been-committed-to-github.html">https://loefflmann.blogspot.de/2015/03/osxappvers-has-been-committed-to-github.html</a><br />
<br /></div>
Johann N. Löfflmannhttp://www.blogger.com/profile/05130534559134526701noreply@blogger.com0