almost finished the darknet lantern tutorial

This commit is contained in:
nihilist 2025-01-26 22:42:16 +01:00
parent b87c6570f9
commit 2a285d90d7
15 changed files with 685 additions and 2 deletions

View file

@ -1,6 +1,6 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
<diagram name="Page-1" id="rMVakf72njR1tr_SiH-n">
<mxGraphModel dx="2272" dy="1369" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<mxGraphModel dx="2074" dy="1264" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
@ -248,6 +248,33 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-84" value="Webring Participant A" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
<mxGeometry x="357" y="286" width="149" height="36" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-85" value="Webring Participant Z" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
<mxGeometry x="571" y="348.5" width="149" height="36" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-86" value="Webring Participant B" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
<mxGeometry x="354" y="417" width="149" height="36" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.493;entryY=0.022;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#a20025;strokeColor=#6F0000;" edge="1" parent="1" source="OTgYXjo3jXXvdmCQUEai-84" target="OTgYXjo3jXXvdmCQUEai-85">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.514;entryY=0.014;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;strokeColor=#005700;" edge="1" parent="1" source="OTgYXjo3jXXvdmCQUEai-84" target="OTgYXjo3jXXvdmCQUEai-86">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-91" value="&lt;font color=&quot;#ff0000&quot;&gt;A doesnt tolerate the links&lt;/font&gt;&lt;div&gt;&lt;font color=&quot;#ff0000&quot;&gt;listed by participant Z,&lt;br&gt;so they removed the links&amp;nbsp;&lt;br&gt;coming from participant Z&lt;br&gt;that matched blacklisted words&lt;/font&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="520" y="220" width="182" height="84" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.513;entryY=1.016;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;strokeColor=#005700;" edge="1" parent="1" source="OTgYXjo3jXXvdmCQUEai-86" target="OTgYXjo3jXXvdmCQUEai-85">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-93" value="&lt;font color=&quot;#00ff00&quot;&gt;B tolerates the links&amp;nbsp;&lt;/font&gt;&lt;div&gt;&lt;font color=&quot;#00ff00&quot;&gt;listed by participant Z&lt;br&gt;(therefore chooses to list them aswell)&lt;/font&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="508" y="433" width="220" height="55" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-94" value="&lt;font color=&quot;#00ff00&quot;&gt;A tolerates the &lt;br&gt;links listed by participant B&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="269" y="343.5" width="159" height="41" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>

View file

@ -1,6 +1,6 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
<diagram name="Page-1" id="rMVakf72njR1tr_SiH-n">
<mxGraphModel dx="3438" dy="1988" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<mxGraphModel dx="2074" dy="1264" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
@ -248,6 +248,33 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-84" value="Webring Participant A" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
<mxGeometry x="357" y="286" width="149" height="36" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-85" value="Webring Participant Z" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
<mxGeometry x="571" y="348.5" width="149" height="36" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-86" value="Webring Participant B" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" vertex="1" parent="1">
<mxGeometry x="354" y="417" width="149" height="36" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.493;entryY=0.022;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#a20025;strokeColor=#6F0000;" edge="1" parent="1" source="OTgYXjo3jXXvdmCQUEai-84" target="OTgYXjo3jXXvdmCQUEai-85">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.514;entryY=0.014;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;strokeColor=#005700;" edge="1" parent="1" source="OTgYXjo3jXXvdmCQUEai-84" target="OTgYXjo3jXXvdmCQUEai-86">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-91" value="&lt;font color=&quot;#ff0000&quot;&gt;A doesnt tolerate the links&lt;/font&gt;&lt;div&gt;&lt;font color=&quot;#ff0000&quot;&gt;listed by participant Z,&lt;br&gt;so they removed the links&amp;nbsp;&lt;br&gt;coming from participant Z&lt;br&gt;that matched blacklisted words&lt;/font&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="520" y="220" width="182" height="84" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.513;entryY=1.016;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#008a00;strokeColor=#005700;" edge="1" parent="1" source="OTgYXjo3jXXvdmCQUEai-86" target="OTgYXjo3jXXvdmCQUEai-85">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-93" value="&lt;font color=&quot;#00ff00&quot;&gt;B tolerates the links&amp;nbsp;&lt;/font&gt;&lt;div&gt;&lt;font color=&quot;#00ff00&quot;&gt;listed by participant Z&lt;br&gt;(therefore chooses to list them aswell)&lt;/font&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="508" y="433" width="220" height="55" as="geometry" />
</mxCell>
<mxCell id="OTgYXjo3jXXvdmCQUEai-94" value="&lt;font color=&quot;#00ff00&quot;&gt;A tolerates the &lt;br&gt;links listed by participant B&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="269" y="343.5" width="159" height="41" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>

BIN
opsec/darknetlantern/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

BIN
opsec/darknetlantern/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
opsec/darknetlantern/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

BIN
opsec/darknetlantern/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
opsec/darknetlantern/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
opsec/darknetlantern/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

BIN
opsec/darknetlantern/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

BIN
opsec/darknetlantern/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
opsec/darknetlantern/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

BIN
opsec/darknetlantern/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
opsec/darknetlantern/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
opsec/darknetlantern/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

View file

@ -0,0 +1,629 @@
<!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>How to join the Darknet Lantern Webring ?</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 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="https://blog.nowhere.moe/donate.html">Donate</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>nihilist@Mainpc-PrivateVM-Debian12 - 2025-01-26</ba></p>
<h1>How to join the Darknet Lantern Webring ? </h1>
<img src="1.png" class="imgRz">
<p>In this tutorial we're going to first explain why the Darknet Lantern is important in the current Darknet context, we'll cover what it is made of, and then we'll cover how to spin up a Darknet Lantern instance, how to maintain one's list of onion links, and lastly we'll cover how to join the Darknet Webring.</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>Why is the Darknet Lantern Project Important? </b></h2>
<p>As we have explained <a href="../darknetexploration/index.html">previously</a>, the current Darknet ecosystem is such, that you don't have visibility on every community out there:</p>
<img src="../darknetexploration/2.png">
<p>I'm sure that most darknet communities out there are isolated from each other, because they don't know that the other communities exist, they didn't go to the right places on the web yet to find out that those other places exist.</p>
<img src="../darknetexploration/15.png" class="imgRz">
<p>So right now you and your community may be one of the 3 here, as Alice you may list some onion links for your own small community, or you may be Charlie, sharing other onion links to your much larger community, and you (and your community) may not even be aware that Bob's community even exist, with their own knowledge of onion links that they discovered.</p>
<img src="../darknetexploration/16.png" class="imgRz">
<p>This is why the Webring formation is crucial here, <b>to participate in a Webring means that your community is also maintaining a list of those other communities that are participating in the webring, so that they may also benefit from the visibility coming from your audience.</b> And in the same way you may also benefit from the additional visibility coming from all of the other audiences combined. </p>
<p>The webring formation is crucial to maintain the decentralisation intact, that is to make sure that ONE webring participant cannot dictate who gets to have visibility, and who doesn't get to have visibility accross the entire webring.</p>
<img src="2.png" class="imgRz">
<p>In this case here, Webring participant A may not link to webring participant Z because they have some links that A doesn't tolerate (like porn links for example), but webring participant B may tolerate them and allow the links coming from that instance to be listed on their own instance all the same. <b>Therefore, the onion links that you list get visibility from the webring participants that choose to tolerate listing them, themselves.</b> On my darknet lantern instance for instance i refuse there to be porn links due to how addictive these can be, and i actively blacklist them, so if you want to find those links, you'll have to go through another webring participant that accepts to list them.</p>
<p></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>What is the Darknet Lantern Project ?</b></h2> </br> </br>
<p>The Darknet Lantern project aims to provide 3 core functionnalities:</p>
<ol>
<li><p>Allow you to run and maintain your own list of onion links, and make it accessible for whoever wants to access it,</p></li>
<li><p>Allow you to automatically check the uptime of the onion links that you list, so that you can track which links are no longer active easily,</p></li>
<li><p>Allow you to participate in a Darknet Webring so that your community may benefit from the visibility coming from the other communities that are participating in the same Webring. </p></li>
</ol>
<p>The sourcecode for the project is available <a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/darknet-lantern">here</a>. At first I wrote it mainly because i was largely dissatisfied with how the uptimekuma project required javascript and how Database-corruptive the upgrades were. After i nailed down the basic "uptime checker" part, it dawned on me that the webring part was also equally essential for the Darknet ecosystem, as explained above. So that's what i have been focusing on for the last 4 weeks, and now i can proudly say that the project is reaching maturity.</p>
<img src="../darknetexploration/17.png" class="imgRz">
<p>The Darknet Lantern project is built using PHP, Python, and CSV files. You have the CSV files containing the onion links and their attributes, you have python scripts in the backend to automatically update the uptime of those links, including one main python script called lantern.py to manually maintain and edit your instance's csv files.</p>
<p> And lastly you have php files to search through those CSV files, and filter the results like a regular search engine. All in all, it has been built with minimalism in mind, i tried to keep it as simple as i could to meet the needs. To make it work you need a debian stable release (currently debian 12 bookworm), nginx, php8.2-fpm (currently), Tor, python3 and a few other python3 dependencies that you can install via the apt package manager.</p>
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<!-- +++++ Second Post +++++ -->
<div id="anon1">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2><b>How to setup your own Darknet Lantern Instance ?</b></h2> </br> </br>
<p>Now that we got that out of the way, let's see how you can install your own Darknet Lantern Instance:</p>
<p>First, git clone the repository in your directory of choice (i recommend using /srv/):</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install tor git torsocks -y
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ torsocks git clone http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/darknet-lantern /srv/darknet-lantern
</pre></code>
<p>Install nginx and php8.2-fpm:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install php8.2-fpm nginx -y
</pre></code>
<p>use the nginx.conf and drop it in /etc/nginx/sites-available/</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ ls
nginx.conf README.md scripts todo.txt torrc www
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ cp nginx.conf /etc/nginx/sites-available/lantern.conf
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ vim /etc/nginx/sites-available/lantern.conf
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ cat /etc/nginx/sites-available/lantern.conf
server {
listen 4443;
listen [::]:4443;
server_name lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion;
root /srv/darknet-lantern/www/;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
index index.php;
}
</pre></code>
<p>use mkp244o if you want to have a custom <a href="../torwebsite/index.html">vanity v3 hidden service domain name</a>, and then use the torrc config to have a local socks5 port (as it will be used by the python script to check the uptime of the listed onion links)</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ vim /etc/tor/torrc
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ cat /etc/tor/torrc
HiddenServiceDir /var/lib/tor/onions/nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/
HiddenServicePort 80 127.0.0.1:4443
SocksPort 127.0.0.1:9050
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ systemctl restart tor@default
</pre></code>
<p>enable the nginx config and validate that your website can now be accessed via the Tor browser:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ ln -s /etc/nginx/sites-available/lantern.conf /etc/nginx/sites-enabled/
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ nginx -s reload
</pre></code>
<img src="4.png" class="imgRz">
<p>Here we see that the website is reachable now, so let's now install the python script dependencies:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install python3-pandas python3-requests python3-socks -y
</pre></code>
<p>Now that's done, you can run scripts/lantern.py for the first time to confirm your own instance name:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
[+] Instance Path doesn't exist yet
What is your Instance domain ? (ex: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion): lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
[+] Instance Name: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion True
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
Is this your this your instance domain ? (y/n)y
OK writing the instance url to ~/.darknet_participants_url
[+] file written, let's read it
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
[+] Initial Setup Completed!
[+] file exists, your Webring URL is lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
</pre></code>
<p>In another terminal you can validate that ~/darknet_participant_url has been created properly:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ cat ~/.darknet_participant_url
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion#
</pre></code>
<p>This is the file that lantern.py will check to get your instance name the next times you run the script. And next when you run scripts/lantern.py you'll be greeted by the following CLI menu:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
[+] Instance Name: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion True
[+] file exists, your Webring URL is lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
[+] Welcome to your own Darknet Lantern Instance, where you can explore the Darknet and help others do the same.
Managing Websites:
1) Add a new Website entry (into unverified.csv)
2) Trust a Website entry (move an entry from unverified to verified.csv)
3) Untrust a Website entry (move an entry from unverified to verified.csv)
Managing Webring Participants:
4) Synchronize new links from existing webring participants, into your unverified.csv file
5) Add a new webring participant (and download their files into their directory (without trusting them yet!))
6) Trust/UnTrust/Blacklist a webring participant (Potentially dangerous)
Managing Wordlists:
7) Add/Remove Words/URLs in the sensitive list (ex: drug)
8) Add/Remove Words/URLs or links in the blacklist (ex: porn)
Maintenance:
9) Remove the duplicate URLs for your own instance
10) Perform sanity checks on all csv files for all instances (to mark them as sensitive / or remove the ones that are blacklisted)
0) Exit
Select Option? (0-11):
</code></pre>
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<!-- +++++ Second Post +++++ -->
<div id="anon2">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2><b>How to Maintain your own list of onion links ?</b></h2> </br> </br>
<p>At first your list of onion links is going to be empty, so if you try to search for a term in the searchbar you'll get the following message:</p>
<img src="5.png" class="imgRz">
<p>So here we need to start to list some onion links. Using scripts/lantern.py's option 1 we can add those links:</p>
<pre><code class="nim">
Select Option? (0-11): 1
1
[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Qubes OS Website
What is the website Category ? Tools
What is the website URL ? http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/
Description for the website ? (Optional) OS based on Xen that focuses on compartmentalization and virtualization.
Is the website sensitive ? (ex: related to drugs) (y/n) n
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Tools', 'Qubes OS Website', 'http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/', '❌', 'OS based on Xen that focuses on compartmentalization and virtualization.', '', '']
[+] New row added! now writing the csv file:
[+] Want to add another website ? (y/n) y
[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Whonix Website
What is the website Category ? Tools
What is the website URL ? http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/
Description for the website ? (Optional) VM for general anonymous use
Is the website sensitive ? (ex: related to drugs) (y/n) n
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Tools', 'Whonix Website', 'http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/', '❌', 'VM for general anonymous use', '', '']
[+] New row added! now writing the csv file:
[+] Want to add another website ? (y/n) y
[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Feather Wallet
What is the website Category ? Tools
What is the website URL ? http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4rszylfzjdg6pbm3id.onion/
Description for the website ? (Optional) Lightweight Monero Wallet
Is the website sensitive ? (ex: related to drugs) (y/n) n
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Tools', 'Feather Wallet', 'http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4rszylfzjdg6pbm3id.onion/', '❌', 'Lightweight Monero Wallet', '', '']
[+] New row added! now writing the csv file:
[+] Want to add another website ? (y/n) y
[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Dark Forest
What is the website Category ? Forums
What is the website URL ? http://dkforestseeaaq2dqz2uflmlsybvnq2irzn4ygyvu53oazyorednviid.onion/
Description for the website ? (Optional)
Is the website sensitive ? (ex: related to drugs) (y/n) y
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Forums', 'Dark Forest', 'http://dkforestseeaaq2dqz2uflmlsybvnq2irzn4ygyvu53oazyorednviid.onion/', '✔️', '', '', '']
[+] New row added! now writing the csv file:
[+] Want to add another website ? (y/n) n
</pre></code>
<p>In order to avoid putting all eggs in one basket, i recommend marking websites that are related to Drugs (as this is the most popular sensitive darknet topic) as sensitive whenever you add them into your unverified.csv file, that way you can give your audience a safe browsing searching experience, and an opt-in sensitive browsing search experience (with ample disclaimers/warnings) if they choose to do so.
There is also a sensitive.csv file in your instance directory to list those keywords, so that they get automatically marked as sensitive by the python scripts.</p>
<p>Now that you added some websites to your unverified.csv file, you can view the csv file in www/participants/YOURINSTANCENAME.onion/unverified.csv:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ cat www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/unverified.csv | grep Tools
Instance,Category,Name,URL,Sensitive,Description,Status,Score
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Tools,Feather Wallet,http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4rszylfzjdg6pbm3id.onion/,❌,Lightweight Monero Wallet,,
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Tools,Whonix Website,http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/,❌,VM for general anonymous use,,
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Tools,Qubes OS Website,http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/,❌,OS based on Xen that focuses on compartmentalization and virtualization.,,
</pre></code>
<p>As you can see, the websites' uptime status and score is missing (in the last 2 columns in the csv file), therefore using scripts/uptimechecker.py we'll automatically fill those in:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ python3 scripts/uptimechecker.py
[+] ONION UPTIME CHECKER
[+] Instance Name: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion True
[+] Reading the CSV File: /srv/darknet-lantern/www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv
Name URL
0 Feather Wallet http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4...
1 Whonix Website http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rb...
2 Qubes OS Website http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4...
What is the Website name you want to trust ? (ex: Nowhere)Qubes
[+] Checking if each .onion link is reachable:
[+] Editing the uptime score
0
[+] http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read 200
http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read ✔️
[+] Editing the uptime score
1
[+] http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/ 200
http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/ ✔️
[+] Editing the uptime score
2
[...]
</pre></code>
<p>It may take a few minutes depending on the size of your list of links to check all of their uptimes, as the script has to connect through Tor for every website to tell if they are reachable or not. make sure the cronjob for scripts/uptimechecker.py is running at least once every 3 hours so that the csv files are automatically kept up to date.
</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ crontab -e
*/3 0 * * * python3 /srv/darknet-lantern/scripts/uptimechecker.py
</code></pre>
<p>To verify links (meaning that you are moving links from your unverified.csv file into your verified.csv file), use scripts/lantern.py to do the following:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
Select Option? (0-11): 2
2
[+] Trust a Website entry (move an entry from unverified to verified.csv)
Name URL
0 Feather Wallet http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4...
1 Whonix Website http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rb...
2 Qubes OS Website http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4...
What is the Website name you want to trust ? (ex: Nowhere)Qubes
Name URL
2 Qubes OS Website http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4...
What is the index of the entry that you want to move to verified.csv ? (ex: 3) 2
['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion'
'Tools' 'Qubes OS Website'
'http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/'
'❌'
'OS based on Xen that focuses on compartmentalization and virtualization.'
nan nan]
[+] New row added to verified.csv! now writing to the csv
[+] Link is now moved to verified.csv!
[+] Want to trust another website ? (y/n) n
</code></pre>
<p>Now that's done you can check the links that you listed on your lantern instance:</p>
<img src="6.png" class="imgRz">
<p>If you want to untrust a website, you can use the option 3 of lantern.py:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
Select Option? (0-11): 3
3
[+] Untrust a Website entry (move an entry from verified to unverified.csv)
Name URL
0 Qubes OS Website http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4...
What is the Website name you want to untrust ? (ex: BreachForums)Qubes
Name URL
0 Qubes OS Website http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4...
What is the index of the entry that you want to move to unverified.csv ? (ex: 3) 0
['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion'
'Tools' 'Qubes OS Website'
'http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/'
'❌'
'OS based on Xen that focuses on compartmentalization and virtualization.'
nan nan]
[+] New row added to unverified.csv!
[+] Link is now moved to unverified.csv!
</code></pre>
<img src="7.png" class="imgRz">
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<!-- +++++ Second Post +++++ -->
<div id="anon1">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2><b>How get the links from other Webring participants ?</b></h2> </br> </br>
<p>Right now the webring participants may not be listed on your instance, but the files already exist here. </p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ tree www/participants
www/participants
├── lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
│   ├── banner.png
│   ├── blacklist.csv
│   ├── sensitive.csv
│   ├── unverified.csv
│   ├── verified.csv
│   └── webring-participants.csv
├── lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion
│   ├── banner.png
│   ├── blacklist.csv
│   ├── sensitive.csv
│   ├── unverified.csv
│   ├── verified.csv
│   └── webring-participants.csv
└── lanterntest.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
├── banner.png
├── blacklist.csv
├── sensitive.csv
├── unverified.csv
├── verified.csv
└── webring-participants.csv
4 directories, 18 files
</pre></code>
<p>So let's first of all let's sync the links coming from the other webring participants:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/30 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
Select Option? (0-11): 4
Select Option? (0-11): 4
4
4) Synchronize new links from existing webring participants, into your unverified.csv file
http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/
[+] Downloading the files of lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion:
[+] Webring Participant is reachable, updating their csv files:
[...]
http://lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/
[+] Downloading the files of lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion:
[+] Webring Participant is reachable, updating their csv files:
[...]
</pre></code>
<p>And now that the script finished running you now have all of the links coming from other webring participants that are stored into your own unverified.csv file, so to check it you can check again from the web interface by searching for links: </p>
<img src="8.png" class="imgRz">
<p>And there you go ! you are now displaying the links that other webring participants are listing. you can start to verify those links yourself</p>
<img src="9.png" class="imgRz">
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<!-- +++++ Second Post +++++ -->
<div id="anon2">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2><b>What if there is a malicious webring participant ?</b></h2> </br> </br>
<p>Now when you are synchronizing links from other webring participants, you may realize that there was a malicious link that got listed from a webring participant: </p>
<img src="10.png" class="imgRz">
<p>From here you can blacklist the link manually by adding it into the blacklist.csv file:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
Select Option? (0-11): 8
8
[+] Add/Remove words in the blacklist list (ex: porn)
[+] Do you want to 1) add or 2) remove Words/URLs? (type exit to exit) 1
[+] Which word/link do you want to add to the blacklist? (write -1 to exit) http://thatonelinkyoudontwanttoseeeveragain.onion
[+] Checking if the Word/URL is valid:
[+] Which word/link do you want to add to the blacklist? (write -1 to exit) http://thatonelinkyoudontwanttoseeeveragain.onion
[+] Checking if the Word/URL is valid:
[+] Which word/link do you want to add to the blacklist? (write -1 to exit) https://thatonelinkyoudontwanttoseeeveragain.com
[+] Checking if the Word/URL is valid:
TrueFalse
False
[+] Word/URL is valid, adding the word into the blacklist
[+] NEWROW=['https://thatonelinkyoudontwanttoseeeveragain.com']
[+] New row added! now writing the csv file:
[+] Which word/link do you want to add to the blacklist? (write -1 to exit) -1
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ cat www/participants/lanterntest.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/blacklist.csv
blacklisted-words
https://thatonelinkyoudontwanttoseeeveragain.com
porn
</code></pre>
<p>and then you can run the sanity checks on the links to automatically remove the links that match any blacklisted words for all csv files in www/participants/:</p>
<pre><code class="nim">
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
Select Option? (0-11): 10
10
[+] 10) perform sanity checks on all csv files (to mark them as sensitive / or remove the ones that are blacklisted)
Participant:lanterntest.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
/srv/darknet-lantern/www/participants/lanterntest.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv
['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Tools', 'Qubes OS Website', 'http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/', '❌', 'OS based on Xen that focuses on compartmentalization and virtualization.', nan, nan]
/srv/darknet-lantern/www/participants/lanterntest.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/unverified.csv
['assholexxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Chat', "a link that you normally don't allow", 'https://thatonelinkyoudontwanttoseeeveragain.com', '❌', nan, '✔️', 100.0]
Marking row0for deletion, as it has invalid inputs
</code></pre>
<p>And from here as you can see, the link in question got removed, and since it is now in your blacklist.csv file, it won't ever get added to your csv files again since you:</p>
<img src="11.png" class="imgRz">
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<!-- +++++ Second Post +++++ -->
<div id="anon1">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2><b> How to participate in the webring ? (WIP)</b></h2> </br> </br>
<p>In order to participate in the webring that i am running, the only requirement i have is that you should bring some new onion links i don't already have, and you shouldn't list porn links. So if you are running all you need is to do is show up in the Darknet Exploration simplex chatroom i'm running, and let me know that you are running a darknet lantern instance:</p>
<p>After that i'll go over your darknet lantern instance to check for the new links you are bringing to the table, and if there are no porn links in there:</p>
<p>Also one thing that you may want to edit, this is your default banner.png:</p>
<img src="12.png" class="imgRz">
<p>If you want to change it you can upload your custom banner.png image in your instance folder in <b>/srv/darknet-lantern/www/participants/lantern.nowherejezblahblah.onion/banner.png</b></p>
<p>If that's OK for me, i'll add it to my darknet lantern instance by doing the following:</p>
<p>And that's it! you are now a new webring participant !</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.nowhere.moe/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%2FL5jrGV2L_Bb20Oj0aE4Gn-m5AHet9XdpYDotiqpcpGc%3D%40nowhere.moe%2FH4g7zPbitSLV5tDQ51Yz-R6RgOkMEeCc%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAkts5T5AMxHGrZCCg12aeKxWcpXaxbB_XqjrXmcFYlDQ%253D&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22c3Y-iDaoDCFm6RhptSDOaw%3D%3D%22%7D">SimpleX Chat</a><br/>
</p>
</div><!-- /col-lg-4 -->
<div class="col-lg-4">
<h4>About nihilist</h4>
<p style="word-wrap: break-word;"><u>Donate XMR:</u> 8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8</p></br><p><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>