Update _site static files

master
Tait Hoyem 4 years ago
parent 38541caf42
commit 531e6cd0f7

@ -79,7 +79,7 @@
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/01/22/padding-and-margin.html">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/2020/01/22/padding-and-margin.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -85,7 +85,7 @@ Japan lags slightly behind with 80 percent encrypted traffic.</p>
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/01/26/rsa1.html">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/2020/01/26/rsa1.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -177,7 +177,7 @@ I will discuss this more in another article, but for the technically inclined:</
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/02/19/rsa2.html">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/2020/02/19/rsa2.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -176,7 +176,7 @@ so it is easy for devlopers to work into their own applications without worrying
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/04/02/rsa3.html">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/2020/04/02/rsa3.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -375,7 +375,7 @@ I am happy to improve this guide as time goes on if that is necessary.</p>
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/04/06/rsa4.html">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/2020/04/06/rsa4.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -85,7 +85,7 @@ I will likely have luck on a place like <a href="https://kijiji.ca">Kijiji</a> (
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/04/12/nas1.html">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/2020/04/12/nas1.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -51,7 +51,7 @@ it gets a random file from the specified directory if you give it one like so:</
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/04/21/rfi.html">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/2020/04/21/rfi.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -0,0 +1,178 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>The "Quiz Your Friends" Cross-Site Scripting Vulnerability | tait.tech</title>
<link rel="stylesheet" href="/assets/css/style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="wrapper">
<nav>
<input type="checkbox" id="menu">
<label for="menu">&#9776;</label>
<div class="menu-content">
<a href="/" class="nav-link" >Home</a>
<a href="/blog/" class="nav-link" >Blog</a>
<a href="/links/" class="nav-link" >Links</a>
<a href="/ideas/" class="nav-link" >Ideas</a>
<a href="https://github.com/TTWNO/" class="nav-link" target="_blank" rel="noopener noreferrer" >Code</a>
</div>
</nav>
<h1>The "Quiz Your Friends" Cross-Site Scripting Vulnerability</h1>
<h4 class="post-date line-under">Wednesday, April 22 2020</h4>
<div class="article">
<p>This was fun to write! I found a cross-site scripting (XSS) attack
in a well-known quiz hosting website.
I disclosed the vulnerability to them years ago, so I thought
now might be a good time to write about it.</p>
<p>In this first section I will explain what XSS is.</p>
<p>In the <a href="#executing-an-exploit">second section</a> I will show you how I found this exploit and how to reproduce it yourself.</p>
<h2 id="what-is-cross-site-scripting-xss">What is cross-site scripting (XSS)</h2>
<p>Cross-site scripting, XSS for short,
is a technique to execute arbitrary Javascript code on a user visitng a website
by linking to Javascript code stored on another website.</p>
<p>So for example:</p>
<p>I have a file on my website called <a href="/assets/js/hacked.js">hacked.js</a>.
If I was able to run this javascript file on anybody visiting a certain website <em>that is not mine</em>, this would be called cross-site scripting.</p>
<p>Click the above <code class="highlighter-rouge">hacked.js</code> link to view the code I use to “hack” this website.
Its safe, I promise ;)</p>
<p>Now, how can we get this code to execute when a user visits this site?</p>
<h3 id="how-do-these-happen">How Do These Happen?</h3>
<p>Most of the time, these attacks are done using poorly sanatized <code class="highlighter-rouge">&lt;input&gt;</code> elements.
Sanitization is when an input box of some type does not <a href="">escape</a> html characters like <code class="highlighter-rouge">&lt;</code> or <code class="highlighter-rouge">&gt;</code>.</p>
<p>Sanitization is when a program (usually on the server side),
will remove characters like <code class="highlighter-rouge">&lt;</code> and replace them with <a href="">escape characters</a>
which internally would be something like <code class="highlighter-rouge">&amp;lt;</code>,
but your browser would interpret that as “show me the character less than sign”.</p>
<h3 id="a-thought-experiment">A Thought Experiment</h3>
<p>The question is:</p>
<p>If we suppose that a website is built with sequenses like these: <code class="highlighter-rouge">&lt;body&gt;</code>, <code class="highlighter-rouge">&lt;p&gt;</code> (for paragraph), <code class="highlighter-rouge">&lt;link&gt;</code> and <code class="highlighter-rouge">&lt;b&gt;</code> for bold, then why can you also <em>see</em> the left and right angle bracket characters?
Why doesnt everything after me typing <code class="highlighter-rouge">&lt;b&gt;</code> turn bold?</p>
<p>The answer is:</p>
<p>There are special characters to type a visible left (&lt;)
and right angle bracket (&gt;) in a website.
If I type with the left and right bracket on my keyboard,
things will indeed <b>show up bold</b>.</p>
<p>This is the code for the sentence I wrote above:</p>
<pre class="terminal">
There are special characters to type a visible left (&amp;lt;)
and right angle bracket (&amp;gt;) in a website.
If I type with the left and right bracket on my keyboard,
things will indeed &lt;b&gt;show up bold&lt;/b&gt;.
</pre>
<p>Notice how all visible left angle brackets used an <code class="highlighter-rouge">&amp;lt;</code> to show them?</p>
<p>This is the core of an XSS exploit.</p>
<p>If when a site takes in input it does not convert all &lt;s and &gt;s to &amp;lt; and &amp;gt;,
then when this data is returned to the user the browser will interpret the user input being displayed <em>as HTML code</em>.</p>
<h2 id="how-i-found-this-exploit">How I Found This Exploit</h2>
<p>While filling in one of my friends surveys I thought it would be
funny for them to know it is me without anyone else knowing.
We were young and had <code class="highlighter-rouge">Inspect Element</code>ed a few things together,
so it was a safe bet that an HTML joke would let them know.</p>
<p>So I typed in my name like so:</p>
<p><code class="highlighter-rouge">BOLD_STEVE.JPG</code></p>
<p>Now in theory this should have shown in in the leaderboard as: “&lt;b&gt;Bold Steve&lt;/b&gt;
However, to my horror and excitement, I saw this in the leaderboard:</p>
<p><code class="highlighter-rouge">BOLD_STEVE_LEADERBOARD.JPG</code></p>
<p>The text “Bold Steve” showed up <strong>in bold</strong> on the leaderboard.
This told me all I needed to know. To add a <code class="highlighter-rouge">&lt;script&gt;</code> tag was next.</p>
<h4 id="hacking">Hacking:</h4>
<p>So I went on my merry way thinking about ways to use malicious javascript.
Then, I thought that might be mean, so I decided to warn users instead.
I filled in the name with a script tag and a call to <code class="highlighter-rouge">alert()</code> to warn the user about this site.</p>
<p><code class="highlighter-rouge">JAVASCRIPT_NAME.JPG</code></p>
<p>I ran out of room before I could finish it. Hmmm.
What if I do “Inspect Element” and manually override the max-length attribute?</p>
<p>The unfortunate truth is: this worked as well!</p>
<p>Not only could I manually set the max-length by changing it in the HTML,
but there were no client-side OR server-side checks to make sure the name I was sending was less than or equal to 20 characters.</p>
<p>If Javascript checked it, it would have stopped me (although maybe not a professional).
If the server checked it, it could have stopped almost anyone.</p>
<h5 id="server-side-validation">Server-Side Validation</h5>
<p>As a side note, here is a great reason why you should do most of your validation on the server side.
As a user, I can edit any of the HTML, CSS, or Javascript your server serves to me.</p>
<p>Imagine trying to fit in a script tag doing anything useful with 20 characters?</p>
<p><code class="highlighter-rouge">&lt;script src="http:"&gt;</code></p>
<p>Theres your 20 characters! No more! Good luck trying to do anything useful with this!</p>
<p>The Quiz My Friends server has <em>no such checks in place</em>.
Therefore, I can send an almost arbitrary load to them.
Being able to send something potentially very large (more than a few megabytes) is a vulnerability of its own.
Imagine being able to send entire executable progrmas as your “name” in one of these quizes?</p>
<h2 id="executing-an-exploit">Executing An Exploit</h2>
<p>Suppose were on a vulnerable site like <a href="https://www.quizyourfriends.com/">Quiz Your Friends</a>
and you decide you want to hack your friends quiz!
How can this be done?</p>
<h4 id="creating-a-quiz">Creating A Quiz</h4>
<p>Here is my quiz below:</p>
<p><code class="highlighter-rouge">CREATING_QUIZ.IMG</code></p>
<h4 id="setting-a-name-with-an-html-tag">Setting A Name With an HTML Tag</h4>
<p>Just like the image above, about how I found out about this vulnerability: go ahead and use an HTML tag in your name to test this out.</p>
<p><code class="highlighter-rouge">BOLD_ITALIC_STEVE.JPG</code></p>
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/04/22/quiz-your-friends.html">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>
</body>
</html>

@ -0,0 +1,2 @@
alert("Warning! This site is insecure and open to an attack called XSS. You are now being redirected to an article about this vulnerability.");
window.href = "https://tait.tech/2020/04/22/quiz-your-friends.html";

@ -28,6 +28,18 @@
<table class="post-list">
<tr>
<td>
<h3 class="post-title"><a class="post-title-link" href="/2020/04/22/quiz-your-friends.html">The "Quiz Your Friends" Cross-Site Scripting Vulnerability</a></h2>
<span class="post-date">22 April 2020</span>
<div class="post-excerpt"><p>This was fun to write! I found a cross-site scripting (XSS) attack
in a well-known quiz hosting website.
I disclosed the vulnerability to them years ago, so I thought
now might be a good time to write about it.</p>
</div>
</td>
</tr>
<tr>
<td>
<h3 class="post-title"><a class="post-title-link" href="/2020/04/21/rfi.html">rfi: A Simple Linux utility to get a random file from a directory</a></h2>
@ -97,7 +109,7 @@ These are the everyday tools of many privacy advocates and computer nerds.</p>
</table>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/blog/">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/blog/">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -1,4 +1,138 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.0">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2020-04-22T02:38:30+00:00</updated><id>http://localhost:4000/feed.xml</id><entry><title type="html">rfi: A Simple Linux utility to get a random file from a directory</title><link href="http://localhost:4000/2020/04/21/rfi.html" rel="alternate" type="text/html" title="rfi: A Simple Linux utility to get a random file from a directory" /><published>2020-04-21T00:00:00+00:00</published><updated>2020-04-21T00:00:00+00:00</updated><id>http://localhost:4000/2020/04/21/rfi</id><content type="html" xml:base="http://localhost:4000/2020/04/21/rfi.html">&lt;p&gt;I made a &lt;a href=&quot;https://lbry.tv/@tait:7/rfi:5&quot;&gt;little video&lt;/a&gt; about this script I wrote:&lt;/p&gt;
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.0">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2020-04-24T18:09:21+00:00</updated><id>http://localhost:4000/feed.xml</id><entry><title type="html">The “Quiz Your Friends” Cross-Site Scripting Vulnerability</title><link href="http://localhost:4000/2020/04/22/quiz-your-friends.html" rel="alternate" type="text/html" title="The &quot;Quiz Your Friends&quot; Cross-Site Scripting Vulnerability" /><published>2020-04-22T00:00:00+00:00</published><updated>2020-04-22T00:00:00+00:00</updated><id>http://localhost:4000/2020/04/22/quiz-your-friends</id><content type="html" xml:base="http://localhost:4000/2020/04/22/quiz-your-friends.html">&lt;p&gt;This was fun to write! I found a cross-site scripting (XSS) attack
in a well-known quiz hosting website.
I disclosed the vulnerability to them years ago, so I thought
now might be a good time to write about it.&lt;/p&gt;
&lt;p&gt;In this first section I will explain what XSS is.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&quot;#executing-an-exploit&quot;&gt;second section&lt;/a&gt; I will show you how I found this exploit and how to reproduce it yourself.&lt;/p&gt;
&lt;h2 id=&quot;what-is-cross-site-scripting-xss&quot;&gt;What is cross-site scripting (XSS)&lt;/h2&gt;
&lt;p&gt;Cross-site scripting, XSS for short,
is a technique to execute arbitrary Javascript code on a user visitng a website
by linking to Javascript code stored on another website.&lt;/p&gt;
&lt;p&gt;So for example:&lt;/p&gt;
&lt;p&gt;I have a file on my website called &lt;a href=&quot;/assets/js/hacked.js&quot;&gt;hacked.js&lt;/a&gt;.
If I was able to run this javascript file on anybody visiting a certain website &lt;em&gt;that is not mine&lt;/em&gt;, this would be called cross-site scripting.&lt;/p&gt;
&lt;p&gt;Click the above &lt;code class=&quot;highlighter-rouge&quot;&gt;hacked.js&lt;/code&gt; link to view the code I use to “hack” this website.
Its safe, I promise ;)&lt;/p&gt;
&lt;p&gt;Now, how can we get this code to execute when a user visits this site?&lt;/p&gt;
&lt;h3 id=&quot;how-do-these-happen&quot;&gt;How Do These Happen?&lt;/h3&gt;
&lt;p&gt;Most of the time, these attacks are done using poorly sanatized &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements.
Sanitization is when an input box of some type does not &lt;a href=&quot;&quot;&gt;escape&lt;/a&gt; html characters like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt; or &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Sanitization is when a program (usually on the server side),
will remove characters like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt; and replace them with &lt;a href=&quot;&quot;&gt;escape characters&lt;/a&gt;
which internally would be something like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;amp;lt;&lt;/code&gt;,
but your browser would interpret that as “show me the character less than sign”.&lt;/p&gt;
&lt;h3 id=&quot;a-thought-experiment&quot;&gt;A Thought Experiment&lt;/h3&gt;
&lt;p&gt;The question is:&lt;/p&gt;
&lt;p&gt;If we suppose that a website is built with sequenses like these: &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;body&amp;gt;&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;p&amp;gt;&lt;/code&gt; (for paragraph), &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;link&amp;gt;&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;b&amp;gt;&lt;/code&gt; for bold, then why can you also &lt;em&gt;see&lt;/em&gt; the left and right angle bracket characters?
Why doesnt everything after me typing &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;b&amp;gt;&lt;/code&gt; turn bold?&lt;/p&gt;
&lt;p&gt;The answer is:&lt;/p&gt;
&lt;p&gt;There are special characters to type a visible left (&amp;lt;)
and right angle bracket (&amp;gt;) in a website.
If I type with the left and right bracket on my keyboard,
things will indeed &lt;b&gt;show up bold&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;This is the code for the sentence I wrote above:&lt;/p&gt;
&lt;pre class=&quot;terminal&quot;&gt;
There are special characters to type a visible left (&amp;amp;lt;)
and right angle bracket (&amp;amp;gt;) in a website.
If I type with the left and right bracket on my keyboard,
things will indeed &amp;lt;b&amp;gt;show up bold&amp;lt;/b&amp;gt;.
&lt;/pre&gt;
&lt;p&gt;Notice how all visible left angle brackets used an &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;amp;lt;&lt;/code&gt; to show them?&lt;/p&gt;
&lt;p&gt;This is the core of an XSS exploit.&lt;/p&gt;
&lt;p&gt;If when a site takes in input it does not convert all &amp;lt;s and &amp;gt;s to &amp;amp;lt; and &amp;amp;gt;,
then when this data is returned to the user the browser will interpret the user input being displayed &lt;em&gt;as HTML code&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-i-found-this-exploit&quot;&gt;How I Found This Exploit&lt;/h2&gt;
&lt;p&gt;While filling in one of my friends surveys I thought it would be
funny for them to know it is me without anyone else knowing.
We were young and had &lt;code class=&quot;highlighter-rouge&quot;&gt;Inspect Element&lt;/code&gt;ed a few things together,
so it was a safe bet that an HTML joke would let them know.&lt;/p&gt;
&lt;p&gt;So I typed in my name like so:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BOLD_STEVE.JPG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now in theory this should have shown in in the leaderboard as: “&amp;lt;b&amp;gt;Bold Steve&amp;lt;/b&amp;gt;”
However, to my horror and excitement, I saw this in the leaderboard:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BOLD_STEVE_LEADERBOARD.JPG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The text “Bold Steve” showed up &lt;strong&gt;in bold&lt;/strong&gt; on the leaderboard.
This told me all I needed to know. To add a &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag was next.&lt;/p&gt;
&lt;h4 id=&quot;hacking&quot;&gt;Hacking:&lt;/h4&gt;
&lt;p&gt;So I went on my merry way thinking about ways to use malicious javascript.
Then, I thought that might be mean, so I decided to warn users instead.
I filled in the name with a script tag and a call to &lt;code class=&quot;highlighter-rouge&quot;&gt;alert()&lt;/code&gt; to warn the user about this site.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;JAVASCRIPT_NAME.JPG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I ran out of room before I could finish it. Hmmm.
What if I do “Inspect Element” and manually override the max-length attribute?&lt;/p&gt;
&lt;p&gt;The unfortunate truth is: this worked as well!&lt;/p&gt;
&lt;p&gt;Not only could I manually set the max-length by changing it in the HTML,
but there were no client-side OR server-side checks to make sure the name I was sending was less than or equal to 20 characters.&lt;/p&gt;
&lt;p&gt;If Javascript checked it, it would have stopped me (although maybe not a professional).
If the server checked it, it could have stopped almost anyone.&lt;/p&gt;
&lt;h5 id=&quot;server-side-validation&quot;&gt;Server-Side Validation&lt;/h5&gt;
&lt;p&gt;As a side note, here is a great reason why you should do most of your validation on the server side.
As a user, I can edit any of the HTML, CSS, or Javascript your server serves to me.&lt;/p&gt;
&lt;p&gt;Imagine trying to fit in a script tag doing anything useful with 20 characters?&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;script src=&quot;http:&quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Theres your 20 characters! No more! Good luck trying to do anything useful with this!&lt;/p&gt;
&lt;p&gt;The Quiz My Friends server has &lt;em&gt;no such checks in place&lt;/em&gt;.
Therefore, I can send an almost arbitrary load to them.
Being able to send something potentially very large (more than a few megabytes) is a vulnerability of its own.
Imagine being able to send entire executable progrmas as your “name” in one of these quizes?&lt;/p&gt;
&lt;h2 id=&quot;executing-an-exploit&quot;&gt;Executing An Exploit&lt;/h2&gt;
&lt;p&gt;Suppose were on a vulnerable site like &lt;a href=&quot;https://www.quizyourfriends.com/&quot;&gt;Quiz Your Friends&lt;/a&gt;
and you decide you want to hack your friends quiz!
How can this be done?&lt;/p&gt;
&lt;h4 id=&quot;creating-a-quiz&quot;&gt;Creating A Quiz&lt;/h4&gt;
&lt;p&gt;Here is my quiz below:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;CREATING_QUIZ.IMG&lt;/code&gt;&lt;/p&gt;
&lt;h4 id=&quot;setting-a-name-with-an-html-tag&quot;&gt;Setting A Name With an HTML Tag&lt;/h4&gt;
&lt;p&gt;Just like the image above, about how I found out about this vulnerability: go ahead and use an HTML tag in your name to test this out.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BOLD_ITALIC_STEVE.JPG&lt;/code&gt;&lt;/p&gt;</content><author><name></name></author><summary type="html">This was fun to write! I found a cross-site scripting (XSS) attack in a well-known quiz hosting website. I disclosed the vulnerability to them years ago, so I thought now might be a good time to write about it.</summary></entry><entry><title type="html">rfi: A Simple Linux utility to get a random file from a directory</title><link href="http://localhost:4000/2020/04/21/rfi.html" rel="alternate" type="text/html" title="rfi: A Simple Linux utility to get a random file from a directory" /><published>2020-04-21T00:00:00+00:00</published><updated>2020-04-21T00:00:00+00:00</updated><id>http://localhost:4000/2020/04/21/rfi</id><content type="html" xml:base="http://localhost:4000/2020/04/21/rfi.html">&lt;p&gt;I made a &lt;a href=&quot;https://lbry.tv/@tait:7/rfi:5&quot;&gt;little video&lt;/a&gt; about this script I wrote:&lt;/p&gt;
&lt;pre class=&quot;terminal&quot;&gt;
$ rfi

@ -69,6 +69,23 @@ system would also integrate well with idea 1.2</p>
<p>With the Linux Speakup project already written, would this mean I
could just plug a RPi up to a braille display and be on my merry way?</p>
<h4 id="14-accessible-meme-description">1.4 Accessible Meme Description</h4>
<p>Using a image matching algorithm (no idea which one or how).
Or, frankly, even a scaled down image with binary closeness algorithm.</p>
<p>Either way, take the best matching picture and use that as the basis to describe the picture.
Unsure how I would go about describing unlimited amount of new memes, but that is to be seen.</p>
<p>Best idea is to get in contact with the guys who make <a href="https://imgflip.com/memegenerator">this meme generator</a> as most memes there are at least partially described.</p>
<h4 id="15-talking-anarchy">1.5 Talking Anarchy</h4>
<p>I would like to make a Linux distro which combines the easy of installation of <a href="https://www.anarchylinux.org/">Anarchy Linux</a>
with the speech tools available from <a href="https://talkingarch.info/">Talking Arch</a>.</p>
<p>This should require relatively little effort, as Talking Arch has a tool to build your own ISOs with additional packages (IIRC).</p>
<h3 id="2-nix-ideas">2. *NIX Ideas</h3>
<h4 id="21-fansensor-driver-for-my-old-toshiba">2.1 Fan/Sensor Driver for My Old Toshiba</h4>
@ -156,7 +173,7 @@ Seems liks fun.</p>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/ideas/">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/ideas/">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -75,7 +75,7 @@ Those are <a href="/ideas/">here</a>.</p>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -193,7 +193,7 @@
<p>All my big projects are on my <a href="/">homepage</a>.</p>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/links/">beta.tait.tech</a>, which is also not hosted by Amazon.
This page is mirrored on <a href="https://beta.tait.tech/links/">beta.tait.tech</a>; it is not hosted by Linode.
</footer>
</div>

@ -29,6 +29,10 @@
<lastmod>2020-04-21T00:00:00+00:00</lastmod>
</url>
<url>
<loc>http://localhost:4000/2020/04/22/quiz-your-friends.html</loc>
<lastmod>2020-04-22T00:00:00+00:00</lastmod>
</url>
<url>
<loc>http://localhost:4000/blog/</loc>
</url>
<url>

Loading…
Cancel
Save