new contributions: anonymityexplained + i2Ptorrents

This commit is contained in:
nihilist 2025-03-17 13:18:55 +01:00
parent 3bebb97734
commit cd52ac6977
82 changed files with 968 additions and 23 deletions

File diff suppressed because one or more lines are too long

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="AROqC8fMQaNWye3_sZ_R">
<mxGraphModel dx="2611" dy="961" 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="1133" dy="205" 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" />
@ -194,10 +194,10 @@
<mxCell id="LnSmRKnKzvJv8pziYg2E-71" value="same as above without the search feature (all links displayed at once)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="-382" y="471" width="388" height="26" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-1" value="SimpleX CLI Daemon" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" vertex="1" parent="1">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-1" value="SimpleX CLI Daemon" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="-230.5" y="755" width="137" height="40" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.525;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="LnSmRKnKzvJv8pziYg2E-33" target="rfcP9EMQE_NkH9Ln3oW4-1">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.525;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-33" target="rfcP9EMQE_NkH9Ln3oW4-1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-256" y="718" />
@ -205,18 +205,166 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-3" value="destination simplex chatrooms&lt;br&gt;and destination simplex SMP / XFTP servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" vertex="1" parent="1">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-3" value="destination simplex chatrooms&lt;br&gt;and destination simplex SMP / XFTP servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="104" y="755" width="255" height="40" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-6" value="via the local Tor daemon&lt;br&gt;(127.0.0.1:9050)" 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">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-6" value="via the local Tor daemon&lt;br&gt;(127.0.0.1:9050)" 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;" parent="1" vertex="1">
<mxGeometry x="-61" y="755" width="137" height="40" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.012;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-1" target="rfcP9EMQE_NkH9Ln3oW4-6">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.012;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-1" target="rfcP9EMQE_NkH9Ln3oW4-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.002;entryY=0.483;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-6" target="rfcP9EMQE_NkH9Ln3oW4-3">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.002;entryY=0.483;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-6" target="rfcP9EMQE_NkH9Ln3oW4-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-1" value="&lt;pre&gt;Instance,Category,Name,&lt;b&gt;&lt;u&gt;URL&lt;/u&gt;&lt;/b&gt;,Sensitive,Description,Status,Score&lt;br&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
<mxGeometry x="978.5" y="534" width="462" height="26" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-2" value="destination .onion &lt;br&gt;and clearnet websites" 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;" parent="1" vertex="1">
<mxGeometry x="975.5" y="619" width="131" height="35" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1169" y="683.6129032258063" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-3" value="simplex &lt;br&gt;chatroom links" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1119.5" y="619" width="99" height="34" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-4" value="simplex smp/xftp&lt;br&gt;&amp;nbsp;server links" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1225.5" y="619" width="106" height="32" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.484;entryY=0.04;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-3" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1167.5" y="602" />
<mxPoint x="1167.5" y="602" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.475;entryY=0.02;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-4" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1167.5" y="602" />
<mxPoint x="1275.5" y="602" />
<mxPoint x="1275.5" y="610" />
<mxPoint x="1275.5" y="610" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.499;entryY=-0.02;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-2" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1167.5" y="602" />
<mxPoint x="1040.5" y="602" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-9" value="Lantern.py needs to discern that there are simplex links (from their syntax)&lt;br&gt;and put them in their correct category" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="oifU2B7W5BzXfIYeAPqE-7" vertex="1" connectable="0">
<mxGeometry x="-0.8252" relative="1" as="geometry">
<mxPoint x="2" y="3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-8" target="oifU2B7W5BzXfIYeAPqE-28" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-8" value="User-Defined category" 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;" parent="1" vertex="1">
<mxGeometry x="975.5" y="692" width="131" height="23" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.501;entryY=-0.028;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-2" target="oifU2B7W5BzXfIYeAPqE-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-11" target="oifU2B7W5BzXfIYeAPqE-29" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-11" value="SimpleX &lt;br&gt;Chatrooms" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1137" y="685" width="64" height="37" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-13" value="SimpleX Servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1229.5" y="690" width="96" height="29" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.498;entryY=-0.063;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-4" target="oifU2B7W5BzXfIYeAPqE-13" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-15" value="Category name" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="852.5" y="690.5" width="100" height="26" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-16" value="option 1) When adding a&amp;nbsp;&lt;br&gt;website, it needs to first ask&lt;br&gt;for the URL, and depending&lt;br&gt;on the link, it will either&lt;br&gt;assign the simplex category, or&amp;nbsp;&lt;br&gt;prompt the user to &lt;br&gt;mention the category" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="912" y="404" width="186" height="113" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-18" target="oifU2B7W5BzXfIYeAPqE-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-18" value="lantern.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
<mxGeometry x="804" y="446.5" width="72" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-19" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
<mxGeometry x="1148.5" y="467.5" width="72" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-20" value="unverified.csv (if no description)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
<mxGeometry x="1130" y="430.5" width="184" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.004;entryY=0.47;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-16" target="oifU2B7W5BzXfIYeAPqE-19" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.446;entryY=0.011;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-19" target="oifU2B7W5BzXfIYeAPqE-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-24" value="URL" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="881.5" y="623.5" width="42" height="26" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-25" target="oifU2B7W5BzXfIYeAPqE-26" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-25" value="uptime.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
<mxGeometry x="804" y="779" width="72" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-26" value="Depending on the link type,&lt;br&gt;the uptime check needs to be different" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="729.5" y="841" width="221" height="41" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-28" value="run a py request via&lt;br&gt;Tor to check if it responds&lt;br&gt;something" 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;" parent="1" vertex="1">
<mxGeometry x="927" y="764" width="146" height="45" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-29" value="ASSUME UPTIME&lt;br&gt;IF SYNTAX IS CORRECT&lt;br&gt;(no possibility to test&lt;br&gt;chatrooms without joining them)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
<mxGeometry x="1078" y="744" width="182" height="67" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-34" value="/!\ ASSUME UPTIME IF THE&lt;br&gt;SIMPLEX BOT ISNT REACHABLE /!\&lt;br&gt;SimpleX Bot Daemon -x (routes everything via Tor)&lt;br&gt;(locally controllable via port 3030)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1330.5" y="742" width="335" height="63" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-45" value="simplex-chatrooms.csv&lt;br&gt;(invite link,&amp;nbsp;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="1469.5" y="858" width="137" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-47" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1277.5" y="909.2777777777778" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-47" value="Make the Simplex Bot&lt;br&gt;test that smp/xftp&lt;br&gt;server reachable" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
<mxGeometry x="1216.5" y="834" width="122" height="51" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.497;entryY=-0.007;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-13" target="oifU2B7W5BzXfIYeAPqE-47" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1278" y="741" />
<mxPoint x="1277" y="741" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-49" value="if the Simplex Bot &lt;br&gt;is complaining&lt;br&gt;that the server &lt;br&gt;isnt joinable,&lt;br&gt;&amp;nbsp;&lt;u&gt;assume downtime, &lt;/u&gt;&lt;br&gt;else assume uptime" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1212" y="942" width="131" height="101" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-52" value="/smp test &amp;lt;srvlink&amp;gt;&lt;br&gt;/xftp test &amp;lt;srvlink&amp;gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="1218.5" y="899" width="118" height="41" as="geometry" />
</mxCell>
<mxCell id="xdq3A_qXWXg5RgE1Ps6c-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=-0.014;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="oifU2B7W5BzXfIYeAPqE-34" target="oifU2B7W5BzXfIYeAPqE-47">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1321.5" y="773" />
<mxPoint x="1310.5" y="774" />
<mxPoint x="1277.5" y="774" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>

File diff suppressed because one or more lines are too long

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="AROqC8fMQaNWye3_sZ_R">
<mxGraphModel dx="2611" dy="961" 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="1133" dy="205" 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" />
@ -194,10 +194,10 @@
<mxCell id="LnSmRKnKzvJv8pziYg2E-71" value="same as above without the search feature (all links displayed at once)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="-382" y="471" width="388" height="26" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-1" value="SimpleX CLI Daemon" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" vertex="1" parent="1">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-1" value="SimpleX CLI Daemon" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="-230.5" y="755" width="137" height="40" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.525;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="LnSmRKnKzvJv8pziYg2E-33" target="rfcP9EMQE_NkH9Ln3oW4-1">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.525;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-33" target="rfcP9EMQE_NkH9Ln3oW4-1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-256" y="718" />
@ -205,18 +205,166 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-3" value="destination simplex chatrooms&lt;br&gt;and destination simplex SMP / XFTP servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" vertex="1" parent="1">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-3" value="destination simplex chatrooms&lt;br&gt;and destination simplex SMP / XFTP servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="104" y="755" width="255" height="40" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-6" value="via the local Tor daemon&lt;br&gt;(127.0.0.1:9050)" 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">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-6" value="via the local Tor daemon&lt;br&gt;(127.0.0.1:9050)" 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;" parent="1" vertex="1">
<mxGeometry x="-61" y="755" width="137" height="40" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.012;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-1" target="rfcP9EMQE_NkH9Ln3oW4-6">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.012;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-1" target="rfcP9EMQE_NkH9Ln3oW4-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.002;entryY=0.483;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-6" target="rfcP9EMQE_NkH9Ln3oW4-3">
<mxCell id="rfcP9EMQE_NkH9Ln3oW4-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.002;entryY=0.483;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-6" target="rfcP9EMQE_NkH9Ln3oW4-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-1" value="&lt;pre&gt;Instance,Category,Name,&lt;b&gt;&lt;u&gt;URL&lt;/u&gt;&lt;/b&gt;,Sensitive,Description,Status,Score&lt;br&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
<mxGeometry x="978.5" y="534" width="462" height="26" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-2" value="destination .onion &lt;br&gt;and clearnet websites" 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;" parent="1" vertex="1">
<mxGeometry x="975.5" y="619" width="131" height="35" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1169" y="683.6129032258063" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-3" value="simplex &lt;br&gt;chatroom links" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1119.5" y="619" width="99" height="34" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-4" value="simplex smp/xftp&lt;br&gt;&amp;nbsp;server links" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1225.5" y="619" width="106" height="32" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.484;entryY=0.04;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-3" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1167.5" y="602" />
<mxPoint x="1167.5" y="602" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.475;entryY=0.02;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-4" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1167.5" y="602" />
<mxPoint x="1275.5" y="602" />
<mxPoint x="1275.5" y="610" />
<mxPoint x="1275.5" y="610" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.499;entryY=-0.02;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-2" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1167.5" y="602" />
<mxPoint x="1040.5" y="602" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-9" value="Lantern.py needs to discern that there are simplex links (from their syntax)&lt;br&gt;and put them in their correct category" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="oifU2B7W5BzXfIYeAPqE-7" vertex="1" connectable="0">
<mxGeometry x="-0.8252" relative="1" as="geometry">
<mxPoint x="2" y="3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-8" target="oifU2B7W5BzXfIYeAPqE-28" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-8" value="User-Defined category" 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;" parent="1" vertex="1">
<mxGeometry x="975.5" y="692" width="131" height="23" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.501;entryY=-0.028;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-2" target="oifU2B7W5BzXfIYeAPqE-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-11" target="oifU2B7W5BzXfIYeAPqE-29" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-11" value="SimpleX &lt;br&gt;Chatrooms" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1137" y="685" width="64" height="37" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-13" value="SimpleX Servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1229.5" y="690" width="96" height="29" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.498;entryY=-0.063;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-4" target="oifU2B7W5BzXfIYeAPqE-13" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-15" value="Category name" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="852.5" y="690.5" width="100" height="26" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-16" value="option 1) When adding a&amp;nbsp;&lt;br&gt;website, it needs to first ask&lt;br&gt;for the URL, and depending&lt;br&gt;on the link, it will either&lt;br&gt;assign the simplex category, or&amp;nbsp;&lt;br&gt;prompt the user to &lt;br&gt;mention the category" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="912" y="404" width="186" height="113" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-18" target="oifU2B7W5BzXfIYeAPqE-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-18" value="lantern.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
<mxGeometry x="804" y="446.5" width="72" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-19" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
<mxGeometry x="1148.5" y="467.5" width="72" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-20" value="unverified.csv (if no description)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
<mxGeometry x="1130" y="430.5" width="184" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.004;entryY=0.47;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-16" target="oifU2B7W5BzXfIYeAPqE-19" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.446;entryY=0.011;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-19" target="oifU2B7W5BzXfIYeAPqE-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-24" value="URL" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="881.5" y="623.5" width="42" height="26" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-25" target="oifU2B7W5BzXfIYeAPqE-26" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-25" value="uptime.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
<mxGeometry x="804" y="779" width="72" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-26" value="Depending on the link type,&lt;br&gt;the uptime check needs to be different" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="729.5" y="841" width="221" height="41" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-28" value="run a py request via&lt;br&gt;Tor to check if it responds&lt;br&gt;something" 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;" parent="1" vertex="1">
<mxGeometry x="927" y="764" width="146" height="45" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-29" value="ASSUME UPTIME&lt;br&gt;IF SYNTAX IS CORRECT&lt;br&gt;(no possibility to test&lt;br&gt;chatrooms without joining them)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
<mxGeometry x="1078" y="744" width="182" height="67" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-34" value="/!\ ASSUME UPTIME IF THE&lt;br&gt;SIMPLEX BOT ISNT REACHABLE /!\&lt;br&gt;SimpleX Bot Daemon -x (routes everything via Tor)&lt;br&gt;(locally controllable via port 3030)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1330.5" y="742" width="335" height="63" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-45" value="simplex-chatrooms.csv&lt;br&gt;(invite link,&amp;nbsp;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="1469.5" y="858" width="137" height="28" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-47" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1277.5" y="909.2777777777778" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-47" value="Make the Simplex Bot&lt;br&gt;test that smp/xftp&lt;br&gt;server reachable" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
<mxGeometry x="1216.5" y="834" width="122" height="51" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.497;entryY=-0.007;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-13" target="oifU2B7W5BzXfIYeAPqE-47" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1278" y="741" />
<mxPoint x="1277" y="741" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-49" value="if the Simplex Bot &lt;br&gt;is complaining&lt;br&gt;that the server &lt;br&gt;isnt joinable,&lt;br&gt;&amp;nbsp;&lt;u&gt;assume downtime, &lt;/u&gt;&lt;br&gt;else assume uptime" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
<mxGeometry x="1212" y="942" width="131" height="101" as="geometry" />
</mxCell>
<mxCell id="oifU2B7W5BzXfIYeAPqE-52" value="/smp test &amp;lt;srvlink&amp;gt;&lt;br&gt;/xftp test &amp;lt;srvlink&amp;gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="1218.5" y="899" width="118" height="41" as="geometry" />
</mxCell>
<mxCell id="xdq3A_qXWXg5RgE1Ps6c-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=-0.014;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="oifU2B7W5BzXfIYeAPqE-34" target="oifU2B7W5BzXfIYeAPqE-47">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1321.5" y="773" />
<mxPoint x="1310.5" y="774" />
<mxPoint x="1277.5" y="774" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

View file

@ -60,7 +60,7 @@
<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 - 2024-06-29</ba></p>
<a href="../index.html">Previous Page</a></br></br><p><img src="../../assets/img/user.png" width="50px" height="50px"> <ba>nihilist@mainpc, zl - 2025-03-15</ba></p>
<h1>What is Anonymity ? Why is it Important ? </h1>
</div>
@ -116,10 +116,117 @@
<p>If you look closer at the image the "Certificate of authenticity" says that <b>it is the 41st plushie amongst the 100 that exist</b>. Therefore if the adversary is the plushie seller, <b>your anonymity odds have been reduced 1 out of 1 as he knows to whom he sent the 41st plushie.</b> Meaning that you just deanonymized yourself for that particular adversary. </p>
<p>You get the idea, if you want to remain Anonymous, you need to always ask yourself <b>"how many people could send that?"</b>, <u>if you were to send that picture i sent above, you'd realize that this is a bad idea</u>. The same concept applies as if you were to say what is your real IRL name, your phone number, your home address, your home public IP address, etc. <b>Do not give bullets to an adversary, as he will use everything you give him to shoot you.</b></p>
<p>The least info you send about yourself, what you like, what you dislike, where you live, where you work, what's your past, the better, as otherwise it will be exponentially easier for an adversary to narrow down the possibilities of who you could be, amongst a given group of people.</p>
<p> A question arises, how can we quantify how anonymous we are? When there are adversaries after you and important things to protect, this is a very important issue to consider because, <b> if you can't measure anonymity or the weight of your decisions, how can you tell when you make large mistakes or can improve?</b> </p>
<p> We are going to use simple <b>Information Theory</b> for this, a field that deals with everything related to information and gives us a framework. By using "bits" to quantify information, we will have a way to calculate impact. </p>
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<div id="anon">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2><b>Anonymity and Information</b></h2>
<p>
In Information Theory, a "bit" is defined as <b> any information that reduces the space of possibilities by a factor of 2.</b>
This definition may seem weird so an example helps display it clearly.
</p>
<p>
Imagine I am a detective and I know one out of 16 suspects is the culprit. Assume there are 8 men and 8 women.
</p>
<p>
Now, checking security cameras, I learn it was 100% a male by the figure size. With this piece of information, I can rule out the 8 women as suspects, leaving me with only 8 remaining suspects (the men).
</p>
<p>
With that information, my suspects went from 16 —&gt; 8, <b> it halved.</b> Therefore, the information that the culprit was male is <b> 1 bit. </b>
</p>
<div style="text-align: center; margin: 1px;"><img src="8.png" class="imgRz" style="width:60%"></div>
<p>
This is a powerful concept since it allows us to <b>quantify the value and impact of any information and combine them.</b>
</p>
<p>
Let's make this clearer: <br><br>
You can be fully deanonymized with just ~33 bits of information since log<sub>2</sub>(8 billion) ≈ 33.
If you half a group of 8 billion things 33 times, you will always be left with 1 singular item, which in this case would be your real identity.
</p>
<p>
So in a game of anonymity, <b> your goal is to minimize the amount of bits you leak and your adversary's goal is to get as many bits as possible until they can brute force your true identity. </b>
</p>
<p>(Note that it is impossible to leak 0 bits of information. This will be shown later, but you will always be interacting: your computer will be connected to a network which uses TCP/IP for packet routing which travels through underground cables, and so on, so information transfer will occur.) </p>
<h3>Adversaries</h3><br>
<p>Before we can get into specifics of our framework, we have to understand adversaries. They are <b>entities (individuals, companies, states) who are trying to deanonymize you.</b></p>
<p>Our threat model and approach depends on the resources of the adversary. </p>
<p>If your home (ISP) IP address is leaked, some guy on the internet may know what city you live in based on IP geolocation. Thats roughly, assuming a city population of 30,000,
log<sub>2</sub>(8 billion/30000) ≈ 21.2 bits of information. A lot, yes, but as a regular person, it will be mostly infeasible to search the city for your identity, unless he had more information.
</p>
<p>However, let's say your adversary is a Nation State. They will simply subpoena the ISP who owns the IP address, obtaining your name, address, and payment details, all 33 bits collected. <b> When dealing with more resourceful adversaries, they are able to extract more with what they learn.</b></p>
<div style="text-align: center; margin: 1px;"><img src="9.png" class="imgRz" style="width:60%"></div>
<p><br>As displayed in the diagram, strong adversaries have more opportunity and gain with the same information. </p>
<p>Motives also vary between adversaries. Google, who let's say has been watching your search history and browser info, learns that you are in New York City, in your 20s, male, skii, and love cats. There will be very few people who meet this whole criteria, but Google obtains this information for advertisement targeting. </p>
<h3>Information Leakage</h3><br>
<p>Now that we understand information, let's briefly look at how we leak information and how identifiable it is.</p>
<p><u>Activity Schedules:</u>
Over a long enough time period, any form of activity such as forum posts, account logins, tweets, and git commit will fall into a specific time zone. Depending on your location this can leak <b> roughly ~6-6.5 bits of information. </b><br>
<u>Network/Browser:</u>
You will still be connecting to the internet and several parties (ISP, VPN, Website) get various fingerprintable info. This can leak <b> anywhere from ~2-10+ bits of information. </b><br>
<u>Words:</u>
Your speech topics and patterns can provide insight into your age, interests, race, and professsion, leaking <b> anywhere from ~2-20+ bits of information. </b></p>
<p>Without going into detail, your physical attributes, username, gait, and many other things leak information. However, the true power that the adversary has is <b> the combination of information.</b> They collect as many bits as possible since they can be <b>added together,</b> as mentioned previously.</p>
<p>Think of your adversary drawing circles to encompass each piece of information they have. Even from huge sample sizes, just ~16 bits narrows you down to a few thousand people extremely fast and when the adversary is a state, they can likely bruteforce to figure out the last few bits in that group.</p>
<div style="text-align: center; margin: 1px;"><img src="10.png" class="imgRz" style="width:40%"></div>
<p><br><br>As showcased before with the plushie, OPSEC failures often occur with drastic leakage of bits. Most information, even if not identifiable and simple, is highly usable and a single leak of something that contains 10+ bits of information could be enough. A few examples:</p>
<p>
- Mentioning that you were close to an real world event, narrowing you to a part of a country. (8+ bits) <br>
- Giving clues to your ethnicity/languages AND real world location. (12+ bits) <br>
- Logging into a personal account at the same time as an anonymous forum account with the same IP. (20+ bits).
</p>
<p><b>Seemingly mundane information transfer is highly compromising when put together.</b></p>
<p>So if we are constantly leaking information, what can we do? </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>Anonymity in Practice </b></h2>
<p><br>There are two ways to maintain anonymity with bit leakage in mind: <b>Being in opaque, identical groups and misdirection.</b></p>
<h3>Identical Groups</h3><br>
<p>One of the core ideas of anonymity, as mentioned earlier, is that everyone should appear the exact same. But why?</p>
<p>We can see that the thing that makes bit leakage very dangerous is the combination of them. If an adversary figures out three details about you, even if they are found independently and are vague, when put together, the group size becomes incredibly small. Now, can we stop them from combining the information? </p>
<p>This is where the idea of being in <b>identical groups</b> comes in. </p>
<p>For an adversary to reliably combine informational bits, the groups (circles in the diagram) have to be transparent. For example, if an adversary knows that you are male and in Germany, then they can put those together without problem since [Male in Germany] is <b>distinct.</b></p>
<p>Now let's say instead your adversary knows you use <a href="../torvsvpns/index.html">TOR</a> and live in Germany. Independently, these are ~12 bits and ~6.6 bits of information. But there's an issue for the adversary. The group of TOR users is opaque, <b>every single one looks the same.</b> You cannot distinguish a German TOR user from a TOR user, <b>therefore these two pieces of information cannot be combined.</b></p>
<p>Let's look at this in our previous circle view:</p>
<div style="display: flex; justify-content: center;">
<div><img src="11.png" class="imgRz" style="height: 800px; margin-right: 20px;"></div>
<div><img src="12.png" class="imgRz" style="height: 800px; margin-left: 20px;"></div>
</div>
<p><br>In the left image, although there are 4 groups, everyone person inside of a group looks the same. Overlapping regions can't be seen or analyzed and information can't be combined. <b> The only thing an adversary can know is that you are somewhere in each of the circles independently. </b></p>
<p>However, in the right image, the groups are transparent and people are distinct. You can see the people in each overlapping and, with the combined information that you are part of all four groups, they can easily deanonymize you in the very small overlapping. </p>
<p>So, by using tools (<a href="../torvsvpns/index.html">TOR</a> , <a href="../finances/index.html">XMR</a>, etc) where every user is identical and non-identifiable, we are not only minimizing bit leakage but also <b> making most leaked bits unusable</b>, significantly decreasing deanonymization risk.</p>
<p>It's recommended to be of roughly aware of how many bits you have leaked in an anonymous persona in order to maintain anonymity. We can take advantage of bit leakage by providing <b> false information which may mislead an adversary.</b></p>
<p> To change things like speech, you can use <a href="../stylometry/index.html">local LLMs</a> and perhaps give fake data about location, skillset, and other idenifiable information. If an adversary combines the incorrect bits with real information, they may be looking for you in a completely wrong group/area. </p>
<p> <b>Awareness</b> is crucial: <b> knowing what your adversary might know, actively minimizing bit leakage, and staying in identical, non-identifiable groups</b> are all important. </p>
</div>
</div><!-- /row -->
</div> <!-- /container -->
</div><!-- /white -->
<div id="anon1">
<div class="container">
@ -228,7 +335,10 @@ All of it because the government intends to destroy Bob's right to remain Anonym
<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>
<p style="word-wrap: break-word;"><u>Donate XMR:</u> 8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8</p><p><u>Contact:</u> nihilist@contact.nowhere.moe (<a href="https://nowhere.moe/nihilist.pubkey">PGP</a>)</p>
<h4>About zl</h4>
<p style="word-wrap: break-word;"><u>Donate XMR:</u> 83geT3KQZGthZ99r1z72t58TFztdDHGHjgnCB3jvniV8FC1bcYf6HriDnSpnt2SZXzcBByNCcjRHiPmtNu5G8CuNG9mfDyY<br></p>
</div><!-- /col-lg-4 -->
</div>

BIN
opsec/i2ptorrents/0.0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
opsec/i2ptorrents/0.1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
opsec/i2ptorrents/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
opsec/i2ptorrents/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

BIN
opsec/i2ptorrents/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

BIN
opsec/i2ptorrents/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
opsec/i2ptorrents/13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

BIN
opsec/i2ptorrents/14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
opsec/i2ptorrents/15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
opsec/i2ptorrents/16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
opsec/i2ptorrents/17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
opsec/i2ptorrents/18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
opsec/i2ptorrents/19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
opsec/i2ptorrents/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
opsec/i2ptorrents/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
opsec/i2ptorrents/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
opsec/i2ptorrents/22.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
opsec/i2ptorrents/23.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
opsec/i2ptorrents/24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

BIN
opsec/i2ptorrents/25.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
opsec/i2ptorrents/26.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
opsec/i2ptorrents/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
opsec/i2ptorrents/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
opsec/i2ptorrents/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
opsec/i2ptorrents/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
opsec/i2ptorrents/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

BIN
opsec/i2ptorrents/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
opsec/i2ptorrents/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View file

@ -0,0 +1,539 @@
<!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 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>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>
</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.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%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>

View file

@ -223,7 +223,7 @@
<ol>
<li><a href="onionshare/index.html">✅ How to send small files Anonymously (Onionshare)</a><img src="logos/Tor.png" class="logo"><img src="logos/onionshare.png" class="logo"></li>
<li><a href="syncthinganon/index.html">✅ How to send large files using Syncthing over Tor</a><img src="logos/Tor.png" class="logo"><img src="logos/syncthing.png" class="logo"></li>
<li><a href="http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions/issues/17"> P2P large file sharing (Torrents over i2p?)</a><img src="logos/i2p.png" class="logo"></li>
<li><a href="i2ptorrents/index.html"> P2P large file sharing (Torrents over i2p?)</a><img src="logos/i2p.png" class="logo"></li>
</ol></br>

0
opsec/qubesos/Screenshot From 2024-12-05 11-20-03.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-26-38.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-28-18.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-28-40.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-28-51.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-29-00.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-29-12.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-29-23.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-29-33.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-29-47.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-29-57.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-39-09.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-39-27.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-40-07.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-40-34.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 16-40-42.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 17-40-25.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before After
Before After

0
opsec/qubesos/Screenshot From 2024-12-05 17-40-39.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

0
opsec/qubesosnetwork/QubesManager.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Before After
Before After

0
opsec/qubesosnetwork/banking.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 322 KiB

Before After
Before After

0
opsec/qubesosnetwork/copy_destination.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Before After
Before After

0
opsec/qubesosnetwork/copy_in_vm.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Before After
Before After

0
opsec/qubesosnetwork/create.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

Before After
Before After

0
opsec/qubesosnetwork/destination_paste.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Before After
Before After

0
opsec/qubesosnetwork/disp_whonix.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Before After
Before After

0
opsec/qubesosnetwork/dom0_exec.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Before After
Before After

0
opsec/qubesosnetwork/file_arrived.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Before After
Before After

0
opsec/qubesosnetwork/file_await_transfer.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Before After
Before After

0
opsec/qubesosnetwork/firewall-net.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Before After
Before After

0
opsec/qubesosnetwork/firewall-service.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Before After
Before After

0
opsec/qubesosnetwork/manager.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Before After
Before After

0
opsec/qubesosnetwork/master_pasteboard.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Before After
Before After

0
opsec/qubesosnetwork/master_pasteboard_wiped.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Before After
Before After

0
opsec/qubesosnetwork/template_install.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

Before After
Before After

0
opsec/qubesosnetwork/template_shutdown.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 295 KiB

After

Width:  |  Height:  |  Size: 295 KiB

Before After
Before After

0
opsec/qubesosnetwork/terminal.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Before After
Before After

0
opsec/qubesosnetwork/text_arrived.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Before After
Before After

0
opsec/qubesosnetwork/torrent_transmission.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 246 KiB

Before After
Before After

0
opsec/qubesosnetwork/torrent_vm.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 224 KiB

Before After
Before After

0
opsec/qubesosnetwork/transmission_on.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 192 KiB

Before After
Before After

0
opsec/qubesosnetwork/whonix-usage.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Before After
Before After

0
opsec/qubesosnetwork/whonix_dread.png Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Before After
Before After