mirror of
http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions.git
synced 2025-07-02 11:56:40 +00:00
541 lines
20 KiB
HTML
541 lines
20 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="description" content="">
|
|
<meta name="author" content="">
|
|
<link rel="shortcut icon" href="../../../../../../assets/img/favicon.png">
|
|
|
|
<title>Peer-to-Peer Large File Sharing (Torrents over I2P)</title>
|
|
|
|
<!-- Bootstrap core CSS -->
|
|
<link href="../../assets/css/bootstrap.css" rel="stylesheet">
|
|
<link href="../../assets/css/xt256.css" rel="stylesheet">
|
|
|
|
|
|
|
|
<!-- Custom styles for this template -->
|
|
<link href="../../assets/css/main.css" rel="stylesheet">
|
|
|
|
|
|
|
|
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
<!--[if lt IE 9]>
|
|
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
|
<![endif]-->
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<!-- Static navbar -->
|
|
<div class="navbar navbar-inverse-anon navbar-static-top">
|
|
<div class="container">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand-anon" href="\index.html">The Nihilism Opsec Blog</a>
|
|
</div>
|
|
<div class="navbar-collapse collapse">
|
|
<ul class="nav navbar-nav navbar-right">
|
|
|
|
<li><a href="/about.html">About</a></li>
|
|
<li><a href="/blog.html">Categories</a></li>
|
|
|
|
<li><a href="/contact.html">Contact</a></li>
|
|
</ul>
|
|
</div><!--/.nav-collapse -->
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<!-- +++++ Posts Lists +++++ -->
|
|
<!-- +++++ First Post +++++ -->
|
|
<div id="anon2">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<a href="../index.html">Previous Page</a></br></br><p><img src="../../assets/img/user.png" width="50px" height="50px"> <ba>oxeo0 - 2025 / 03 / 14</ba></p>
|
|
<h1>Peer-to-Peer Large File Sharing (Torrents over I2P)</h1>
|
|
<img src="0.0.png" style="width:250px">
|
|
<p> </p>
|
|
<p><img src="../logos/daturagit.png" style="width:100px"> <u>Sidenote:</u> Help us improve this tutorial by letting us know if there's anything missing or incorrect on this <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions/issues/17">git issue</a> directly!</p>
|
|
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /grey -->
|
|
|
|
<!-- +++++ Second Post +++++ -->
|
|
<div id="anon3">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>Introduction</b></h2>
|
|
|
|
<p>
|
|
Torrenting is a popular way to share large files. It allows users to share them without having to trust the central server.<br>
|
|
However, back in 2004 when <a href="https://en.wikipedia.org/wiki/BitTorrent">BitTorrent protocol</a> was invented, nobody really thought about making it anonymous or even encrypted.
|
|
Thus torrenting requires client to share their IP address publicly. This means that torrenting can be used to track people's activities on the Internet.
|
|
In order to protect your privacy and anonymity, you should use a VPN or anonymizing proxy (like I2P) when sharing files over BitTorrent protocol.
|
|
</p>
|
|
|
|
<p>
|
|
We already know how to <a href="../p2ptorrents/index.html">share files with BitTorrent client over VPN</a>. While this is secure, fast and convenient, it doesn't make us truly anonymous.
|
|
</p>
|
|
|
|
<p>
|
|
In this tutorial, we'll configure an I2P router to share files using the I2P bittorrent client.
|
|
</p>
|
|
|
|
<p>
|
|
Using torrents with I2P has several benefits:
|
|
<ul>
|
|
<li><b>Full anonymity</b> - while VPN masks the IP address of the client, I2P gets rid of IP addresses entirely replacing them with destination tunnel addresses.</li><br>
|
|
<li><b>Decentralization</b> - it works without trackers or a central authority.</li><br>
|
|
<li><b>Free</b> (as in price) - you don't need to buy a VPN service for both Alice and Bob.</li><br>
|
|
<li><b>Traffic obfuscation</b> - I2P has transit tunnels which make it harder to fingerprint torrent traffic.</li><br>
|
|
</ul>
|
|
</p>
|
|
<p>
|
|
But it also comes with several drawbacks:
|
|
<ul>
|
|
<li><b>Speed</b> - I2P is much slower than VPN because it routes the traffic through several hops.</li><br>
|
|
<li><b>Convenience</b> - I2P needs to build the tunnels for some time before torrenting. It's best to keep it running in the background to get faster tunnels which may be inconvenient.</li><br>
|
|
</ul>
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon2">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>Why I2P, not Tor?</b></h2><br><br>
|
|
|
|
<p>
|
|
Both I2P and Tor are encrypted overlay networks which aim to deliever privacy and anonymity for servers and clients.
|
|
They use <a href="https://en.wikipedia.org/wiki/Onion_routing">onion</a> or <a href="https://en.wikipedia.org/wiki/Garlic_routing">garlic</a> routing to hide originating and destination IP addresses. To discover servers on the network, they both use Distributed Hash Table (DHT).<br>
|
|
However while Tor is designed mostly for client-server applications, I2P takes more <a href="https://en.wikipedia.org/wiki/Peer-to-peer">peer-to-peer</a> approach.
|
|
In I2P, every node is encouraged to act as a relay for others. Your I2P client will accept transit tunnels to participate in anonymizing traffic of other nodes. This also has the benefit of obscuring you traffic volume preventing bandwidth correlation attacks.
|
|
On the other hand, Tor relays are usually ran by volounteers on separate Tor instances, they require high bandwidth and stable internet connection so most of them run in datacenters.
|
|
</p>
|
|
|
|
<p>
|
|
Another very important aspect is that Tor still doesn't support <a href="https://en.wikipedia.org/wiki/User_Datagram_Protocol">UDP</a> traffic which torrents require to function. It's possible to do <a href="https://www.whonix.org/wiki/Tunnel_UDP_over_Tor">UDP tunneling over Tor</a> but it's not very efficient and requires specific configuration.<br>
|
|
The Tor community <a href="https://blog.torproject.org/bittorrent-over-tor-isnt-good-idea/">discourages</a> usage of Tor for torrenting.<br>
|
|
I2P on the other hand is built on top of UDP and is much better suited for torrenting. Over the years, the torrenting ecosystem in I2P matured to the point where even qBittorrent introduced <a href="https://news.itsfoss.com/qbittorrent-4-6-0/">experimental I2P support</a>.<br>
|
|
However in this guide we'll use the bittorrent client built specifically for I2P - <a href="https://i2pgit.org/i2p-hackers/i2p.i2p/-/tree/master/apps/i2psnark">I2PSnark</a>.
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon1">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>Prerequisites</b></h2><br><br>
|
|
|
|
<p>
|
|
It's assumed Alice and Bob have a working internet connection, a Debian 12 with a desktop environment and root access to their computers.<br>
|
|
They can have firewall or NAT (I2P can do <a href="https://en.wikipedia.org/wiki/NAT_traversal">NAT traversal</a>) but it would be ideal to have the ability to open one UDP port on the router.
|
|
It's also possible to run I2P on a separate machine in your LAN (like a NAS or Raspberry PI running Debian). I2P greatly benefits from running constantly since it can discover faster tunnels over time.
|
|
</p>
|
|
|
|
<p>
|
|
Here's a simplified graph showcasing how the file will be sent over I2P network:<br><br>
|
|
|
|
<img src="0.1.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon2">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>I2P Installation</b> (Alice AND Bob)</h2><br><br>
|
|
|
|
<p>
|
|
Both Alice and Bob need to install I2P on their computers. The steps listed below are up-to-date as of now, but always check the <a href="https://geti2p.net/en/download/debian">official guide</a> in case something has changed since this guide was written.<br>
|
|
|
|
Install packages used for adding repositories and signing keys:
|
|
|
|
<pre><code class="nim">alice@alicepc:~$ sudo apt update
|
|
alice@alicepc:~$ sudo apt-get install apt-transport-https lsb-release curl
|
|
</code></pre>
|
|
|
|
Add I2P repository signed by their key:
|
|
|
|
<pre><code class="nim">alice@alicepc:~$ echo "deb [signed-by=/usr/share/keyrings/i2p-archive-keyring.gpg] https://deb.i2p.net/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/i2p.list
|
|
</code></pre>
|
|
|
|
Import signing key:
|
|
|
|
<pre><code class="nim">alice@alicepc:~$ curl -o /tmp/i2p-archive-keyring.gpg https://geti2p.net/_static/i2p-archive-keyring.gpg
|
|
alice@alicepc:~$ sudo cp /tmp/i2p-archive-keyring.gpg /usr/share/keyrings
|
|
</code></pre>
|
|
|
|
Finally, install I2P:
|
|
|
|
<pre><code class="nim">alice@alicepc:~$ sudo apt-get update
|
|
alice@alicepc:~$ sudo apt-get install i2p i2p-keyring
|
|
</code></pre>
|
|
|
|
If you decided to go with I2P on separate server, you may need to make Web UI accessible on your local network:
|
|
|
|
<pre><code class="nim">alice@alicepc:~$ sudo sed -i 's/127\.0\.0\.1/0\.0\.0\.0/g' /var/lib/i2p/i2p-config/clients.config.d/00-net.i2p.router.web.RouterConsoleRunner-clients.config
|
|
alice@alicepc:~$ sudo systemctl restart i2p
|
|
</code></pre>
|
|
|
|
</p>
|
|
|
|
<p>
|
|
Repeat the <b>same steps</b> on Bob's machine.
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon1">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>I2P Setup</b> (Alice AND Bob)</h2><br><br>
|
|
|
|
<p>
|
|
By now, Alice and Bob have I2P running in the background on their computers.<br>
|
|
<b>Both of them</b> need to do initial configuration of their I2P routers.<br>
|
|
The I2P Console should be accessible at <a href="http://localhost:7657"><b>http://localhost:7657</b></a>. If I2P was installed on a different machine, change <b>localhost</b> to the IP address of that machine.
|
|
</p>
|
|
|
|
<p>
|
|
Navigating to this address, you should be greeted with configuration wizard:<br><br>
|
|
<img src="1.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Select theme (I recommend dark of course):<br><br>
|
|
|
|
<img src="2.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Agree to the terms of speedtest service:<br><br>
|
|
|
|
<img src="3.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Bandwidth test should now begin:<br><br>
|
|
|
|
<img src="4.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
It should finish in a few seconds:<br><br>
|
|
|
|
<img src="5.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Now you can choose how much bandwidth you want to use for I2P. You also set the transit bandwidth expressed as a percentage of total I2P bandwidth. It's recommended to keep it at 80%:<br><br>
|
|
|
|
<img src="6.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Configuring I2P web browsing is a topic for a whole different guide. For now, we will just configure I2P for torrenting so skip this section by clicking <b>Next</b>:<br><br>
|
|
|
|
<img src="7.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
The configuration wizard should be completed, just click <b>Finished</b>:<br><br>
|
|
|
|
<img src="8.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Now you should be redirected to the <b>I2P Console</b>. Here you can find the links to I2P-native apps and services.<br>
|
|
You can also configure your I2P Router settings and see its <b>uptime</b> (in green), <b>bandwidth statistics</b> (in red) and <b>network status</b> (in blue):<br><br>
|
|
|
|
<img src="9.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
As you can see, my network status is <b>Firewalled</b>. I2P should work just fine behind firewalls, however to get faster speeds and better tunnels, we can <b>open UDP port on your firewall</b>.<br>
|
|
This is <b>entirely optional</b> so if you don't have the ability to expose port to the internet, just <a href="#i2psnark-config">skip to the next section</a>.<br>
|
|
In I2P the port is choosen randomly at the time of installation. To check it which port needs to be opened, go to the <b>configuration page</b>:<br><br>
|
|
|
|
<img src="10.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Select the <b>Network</b> tab:<br><br>
|
|
|
|
<img src="11.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Scroll down a bit and check which UDP port was chosen. In my case it's <b>14496</b>. On your main router or firewall you can forward this UDP port.<br>
|
|
The actual instructions will differ across firewall vendors so I won't show them here. After that, network status should change to <b>OK</b>.<br><br>
|
|
|
|
<img src="12.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon2">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2 id="i2psnark-config"><b>I2PSnark Configuration</b> (Alice AND Bob)</h2><br><br>
|
|
|
|
<p>
|
|
|
|
With I2P up and running, we can now configure the built-in torrent app called <b>I2PSnark</b>.<br>
|
|
To do this, we need to navigate back to the <b>I2P Console</b> and click on the <b>Torrents</b> application:<br><br>
|
|
|
|
<img src="13.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
I2PSnark also has its own configuration which we need to adjust. Click on the <b>Configuration</b> button:<br><br>
|
|
|
|
<img src="14.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Take a note of the <b>Data directory</b>. By default it's <b>/var/lib/i2p/i2psnark-config/i2psnark</b>. Torrents will be stored in there.<br>
|
|
Now change the <b>bandwidth</b> to half of that of what we set for I2P.<br>
|
|
The <b>number of hops</b> should be left at <b>3</b>. It's the number of routers I2P will tunnel your traffic through before reaching the destination (just like <a href="https://en.wikipedia.org/wiki/Onion_routing">Onion Routing</a> in Tor).<br>
|
|
Lower values usually increase speed and decrease anonymity.<br>
|
|
You can also adjust the <b>number of tunnels</b> I2PSnark will use for connections.<br>
|
|
Setting it to <b>10</b> will give I2P more choice and potentially increase speed at the expense of higher CPU usage.<br>
|
|
After that's done, click <b>Save configuration</b> button:<br><br>
|
|
|
|
<img src="15.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
|
|
<div id="anon1">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>Creating Torrent</b> (Alice)</h2> </br> </br>
|
|
|
|
<p>
|
|
To create and seed files, Alice needs to move them to the <b>Data directory</b> we set earlier in I2PSnark configuration.<br>
|
|
Let's assume Alice wants to send a single large file to Bob - <a href="https://mattmahoney.net/dc/textdata.html">enwik9</a>, which contains the first 1 GB from Wikipedia dump.<br>
|
|
It would work the same way for seeding entire directory. Just provide the path to the directory Alice wants to seed.<br>
|
|
|
|
<pre><code class="nim">alice@alicepc:~$ sudo mv -v enwik9 /var/lib/i2p/i2psnark-config/i2psnark
|
|
renamed 'enwik9' -> '/var/lib/i2p/i2psnark-config/i2psnark/enwik9'</code></pre>
|
|
|
|
While a bit inconvenient, the default directory has the appropriate permissions set so that only <b>i2p</b> user can access it on your Linux system.<br>
|
|
It doesn't have read permission on Alice's files under <b>/home/alice</b> so if your i2p daemon were ever to be compromised, the files couldn't be read so easily.<br>
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Alice should click <b>Create Torrent</b> option in I2PSnark:<br><br>
|
|
|
|
<img src="16.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Now she should put the name of file to be seeded in <b>Data to seed</b> field and ensure <b>no trackers are selected</b> (only DHT will be used to find peers):<br><br>
|
|
|
|
<img src="17.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
We can safely ignore this warning message since we explicitly selected DHT with no trackers.<br>
|
|
To start seeding, click the play button next to the torrent:<br><br>
|
|
|
|
<img src="18.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Now verify the status says <b>Seeding</b> and check the details to get the torrent's hash:<br><br>
|
|
|
|
<img src="19.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
Here's the torrent hash. Anyone who has this hash will be able to download it while Alice is seeding:<br><br>
|
|
|
|
<img src="20.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon2">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>Sharing Torrent Hash over Secure Channel</b> (Alice -> Bob)</h2></br></br>
|
|
|
|
<p>
|
|
|
|
If you want to keep the torrent private, it's important not to share torrent hash publicly. Alice will use <a href=https://blog.nowhere.moe/opsec/anonsimplex/index.html target=_blank>SimpleX</a> chat to share the torrent hash with Bob:<br><br>
|
|
|
|
<img src="26.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon1">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>Downloading The Torrent</b> (Bob)</h2></br></br>
|
|
|
|
<p>
|
|
|
|
To download the torrent, Bob needs to open the I2PSnark torrent client and click on <b>Add Torrent</b>:<br><br>
|
|
|
|
<img src="21.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
After that, Bob will be prompted with a dialog box to enter the torrent hash he got from Alice into the <b>From URL</b> field and click <b>Add torrent</b>:<br><br>
|
|
|
|
<img src="22.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
I2PSnark will now look through the DHT and make a connection with Alice. Once a connection has been made, the download will be started:<br><br>
|
|
<img src="23.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
As we can see, Bob's client connected to 1 peer (Alice) and downloads with a speed of 75 KB/s.<br>
|
|
Alice knows when someone's connected to her. Here's how it looks on her side:<br><br>
|
|
|
|
<img src="24.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
On my network it took around 3 hours to send this 1 GB file. It's certainly slower than torrenting over a VPN, but the speed may improve over time when better tunnels are discovered.<br>
|
|
After the download is finished, Bob will have the file in <b>/var/lib/i2p/i2psnark-config/i2psnark</b> directory.<br>
|
|
Both Bob and Alice can now click the "Stop" button to disable seeding (so that nobody else can download the file):<br><br>
|
|
|
|
<img src="25.png" class="imgRz">
|
|
<br>
|
|
<br>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<div id="anon2">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 col-lg-offset-2">
|
|
<h2><b>Conclusion</b></h2> </br> </br>
|
|
<p>
|
|
|
|
Alice and Bob have successfully shared a file using I2P network. The transfer was fully anonymous and decentralized.
|
|
|
|
</p>
|
|
|
|
</div>
|
|
</div><!-- /row -->
|
|
</div> <!-- /container -->
|
|
</div><!-- /white -->
|
|
|
|
<!-- +++++ Footer Section +++++ -->
|
|
|
|
<div id="anonb">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-4">
|
|
<h4>Nihilism</h4>
|
|
<p>
|
|
Until there is Nothing left.</p></br></br><p>Creative Commons Zero: <a href="../../../../opsec/runtheblog/index.html">No Rights Reserved</a></br><img src="\CC0.png">
|
|
|
|
</p>
|
|
</div><!-- /col-lg-4 -->
|
|
|
|
<div class="col-lg-4">
|
|
<h4>My Links</h4>
|
|
<p>
|
|
|
|
<a target="_blank" rel="noopener noreferrer" href="http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/rss/feed.xml">RSS Feed</a><br/><a target="_blank" rel="noopener noreferrer" href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FBD4qkVq8lJUgjHt0kUaxeQBYsKaxDejeecxm6-2vOwI%3D%40b6geeakpwskovltbesvy3b6ah3ewxfmnhnshojndmpp7wcv2df7bnead.onion%2FdXQ3FLM5ufTNQxgXU6jm07fRXSq9Ujkt%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAzABUDXe4g0bjXyPcNOU0QzWxMYMMGgR3kcOQacoEaQ0%253D&data=%7B%22groupLinkId%22%3A%22G3yklv9753AcNA7lGV3FBw%3D%3D%22%7D">SimpleX Chat</a><br/>
|
|
|
|
</p>
|
|
</div><!-- /col-lg-4 -->
|
|
|
|
<div class="col-lg-4">
|
|
<h4 class="readable">About nihilist</h4>
|
|
<p style="word-wrap: break-word;"><u>Donate XMR:</u>
|
|
8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8
|
|
</p></br>
|
|
<p style="word-wrap: break-word;"><u>Donate XMR to the author:</u>
|
|
862Sp3N5Y8NByFmPVLTPrJYzwdiiVxkhQgAdt65mpYKJLdVDHyYQ8swLgnVr8D3jKphDUcWUCVK1vZv9u8cvtRJCUBFb8MQ</p>
|
|
<p class="readable"><u>Contact:</u> nihilist@contact.nowhere.moe (<a
|
|
href="https://nowhere.moe/nihilist.pubkey">PGP</a>)</p>
|
|
</div><!-- /col-lg-4 -->
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Bootstrap core JavaScript
|
|
================================================== -->
|
|
<!-- Placed at the end of the document so the pages load faster -->
|
|
|
|
</body>
|
|
</html>
|