Initial commit

This commit is contained in:
Niles Rogoff 2017-04-02 19:08:49 -04:00
commit f8b88315cb
No known key found for this signature in database
GPG Key ID: B78B908F23430F80
5 changed files with 2216 additions and 0 deletions

106
map.py Normal file
View File

@ -0,0 +1,106 @@
#!/usr/bin/env python3
import subprocess, string, sys, BTEdb, base64, json, random, collections, time, traceback
import twisted.protocols.basic
from twisted.internet import reactor, protocol, ssl
#debug = True
debug = False
maps = collections.defaultdict(lambda: 0)
def handle(lines):
if len(lines) == 0:
return
try:
path = [k.split()[1] for k in lines if "Path" in k][0].split("!")
i = 0
while i < len(path) - 1:
p = ("\"" + path[i + 1] + "\" -> \"" + path[i] + "\"")
maps[p] = maps[p] + 1
i += 1
except:
print(traceback.format_exc())
class client(twisted.protocols.basic.LineReceiver):
delimeter = "\n"
MAX_LENGTH = 16384 * 100
def sl(self, line):
if debug:
print("Send: " + line)
self.sendLine(line.encode("utf-8"))
def __init__(self):
self.max = 0
self.min = 0
self.in_message = False
self.this_message = []
self.groups = ["ctl", "overchan.overchan", "overchan.random", "overchan.test"]
def lineReceived(self, data):
data = data.decode("utf-8")
if debug:
print("Recv: " + data)
if len(data.split()) == 0:
self.this_message.append("")
return
elif self.in_message:
if data == "." or (len(data.split()) > 0 and data.split()[0] == "430"):
self.in_message = False
handle(self.this_message)
self.cur += 1
if self.cur < self.max:
print("On article " + str(self.cur))
self.sl("ARTICLE " + str(self.cur))
self.in_message = True
self.this_message = []
else:
if len(self.groups) == 0:
self.sl("QUIT")
else:
self.sl("GROUP " + self.groups[0])
self.groups = self.groups[1:]
else:
self.this_message.append(data)
data = data.split()
if data[0] == "200": # posting allowed
# self.sl("AUTHINFO USER " + user)
# if data[0] == "381": # password required
# self.sl("AUTHINFO PASS " + pw)
# if data[0] == "281": # authentication success
self.sl("GROUP " + self.groups[0])
self.groups = self.groups[1:]
if data[0] == "211": # group stats
self.min = int(data[2])
self.max = int(data[3])
#self.max = 20 # DEBUG!!
self.cur = self.min
self.sl("ARTICLE " + str(self.min))
self.in_message = True
if data[0] == "205": # bai
reactor.stop()
# sys.exit(0)
def lineLengthExceeded(self, line):
print("super long line")
if "\n" in line.decode("utf-8"):
print("FUCK")
class fac(protocol.ClientFactory):
protocol = client
# this connects the protocol to a server running on port 8000
reactor.connectTCP("10.8.0.1", 1199, fac())
reactor.run()
# print(messages)
final = """digraph test {
ratio=1;
splines=true;
overlap=false;
graph [overlap = false];
""" + "\n\t".join([x + " [label = " + str(y) + "];" for x, y in maps.items()]) + "\n" + "}"
print(final)
open("test", "w").write(final)

5
readme.md Normal file
View File

@ -0,0 +1,5 @@
## Map the nntpchan network
![](test.png)
That's a map of all the posts to the `overchan.test` board, by volume. It can do more than one group at a time too. Configure your server and groups in map.py and run it, it will dump all of its output to a file called "test." Pipe test into neato to create a graph as an SVG.

245
test Normal file
View File

@ -0,0 +1,245 @@
digraph test {
ratio=1;
splines=true;
overlap=false;
graph [overlap = false];
"slamspeech.ano" -> "slamspeech" [label = 18];
"backdoor.nsa.gov" -> "ucavviu7wl6azuw7.onion" [label = 4];
"nntp.ucavviu7wl6azuw7.onion" -> "odilitime.srndv2.tld" [label = 3];
"web.ucavviu7wl6azuw7.onion" -> "nntp.2hu-ch.org" [label = 1];
"web.overchan.sfor.ano" -> "sfor-SRNd" [label = 3];
"chis.seekrit.nntp.backdoor" -> "SRNd" [label = 5];
"web.i2p.rocks" -> "backdoor.nsa.gov" [label = 24];
"" -> "nntp.oniichan.onion" [label = 42];
"tor.topchan.xyz" -> "oniichan.srndv2.tld" [label = 5];
"SRNd" -> "UMailed.Core.UCIS.nl" [label = 255];
"ev7fnjzjdbtu3miq.onion" -> "nntpchan.dorsal.tk" [label = 22];
"nntpchan.srndv2.net" -> "test.srndv2.tld" [label = 1];
"" -> "nntp.2hu-ch.org" [label = 2];
"nntp.dix.tld" -> "nntp.oniichan.onion" [label = 2];
"ev7fnjzjdbtu3miq.onion" -> "test.yqfbo7ghmwzotrml.onion" [label = 4];
"ucavviu7wl6azuw7.onion" -> "test.yqfbo7ghmwzotrml.onion" [label = 1];
"web.overchan.hiddenchan" -> "SRNd" [label = 31];
"negromancy.ano" -> "gaybar.ano" [label = 3];
"ucavviu7wl6azuw7.onion" -> "7xnxdzyzegpsqus4.onion" [label = 3];
"schan.srndv2.onion" -> "nntpchan.srndv2.net" [label = 1];
"web.i2p.rocks" -> "test.srndv2.tld" [label = 23];
"7xnxdzyzegpsqus4.onion" -> "gchan" [label = 4];
"mp74puo7cp6gsgkj.onion" -> "nsa.monitor.server.do.not.use" [label = 2];
"nntp.nsfl.tk" -> "nntp.nsfl.tk" [label = 8];
"nntp.server.tld" -> "nntp.oniichan.onion" [label = 1];
"web.overchan.deliciouscake.ano" -> "sfor-SRNd" [label = 12];
"slamspeech" -> "gaybar.ano" [label = 7];
"nntp.middlebox.tld" -> "backdoor.nsa.gov" [label = 716];
"2hu-ch.org" -> "nntp.oniichan.onion" [label = 159];
"odilitime.srndv2.tld" -> "ucavviu7wl6azuw7.onion" [label = 1];
"nntp.2hu-ch.org" -> "7xnxdzyzegpsqus4.onion" [label = 14];
"web.overchan.oniichan" -> "SRNd" [label = 2];
"web.overchan.lolz2" -> "SRNd" [label = 24];
"web.overchan.a2ki" -> "SRNd" [label = 13];
"web.oniichan.onion" -> "nntp.oniichan.onion" [label = 58];
"nntp.ucavviu7wl6azuw7.onion" -> "nntp.oniichan.onion" [label = 798];
"gaybar.ano" -> "SRNd" [label = 14];
"web.gchan.xyz" -> "nntp.2hu-ch.org" [label = 4];
"sfor-SRNd" -> "pNewss.Core.UCIS.nl" [label = 27];
"SRNd" -> "oniichan.srndv2.tld" [label = 8];
"SRNd" -> "negromancy.ano" [label = 2];
"web.dix.tld" -> "nntp.dix.tld" [label = 2];
"nntp.oniichan.onion" -> "guchi" [label = 7];
"nntp.ucavviu7wl6azuw7.onion" -> "nntp.ucavviu7wl6azuw7.onion" [label = 1];
"oniichan.srndv2.tld" -> "srndv2.i2p.rocks" [label = 19];
"web.g-ch.xyz" -> "gchan.xyz" [label = 2];
"sfor-SRNd" -> "slamspeech" [label = 6];
"web.srndv2.test" -> "nntp.oniichan.onion" [label = 7];
"gchan.xyz" -> "nntp.2hu-ch.org" [label = 8];
"web.ucavviu7wl6azuw7.onion" -> "nntp.ucavviu7wl6azuw7.onion" [label = 26];
"web.overchan.sarah.ano" -> "SRNd" [label = 18];
"2hu-ch.org" -> "shitpost.moe" [label = 1];
"UMailed.Core.UCIS.nl" -> "nntp.middlebox.tld" [label = 255];
"web.i2p.rocks" -> "nntp.nsfl.tk" [label = 1];
"nntp.2hu-ch.org" -> "nntp.oniichan.onion" [label = 124];
"web.srndv2.schan" -> "schan.srndv2.onion" [label = 8];
"backdoor.nsa.gov" -> "nntp.2hu-ch.org" [label = 679];
"gaybar.ano" -> "pNewss.Core.UCIS.nl" [label = 1];
"sfor-SRNd" -> "negromancy.ano" [label = 1];
"nsfl.tk" -> "ucavviu7wl6azuw7.onion" [label = 1];
"tor.topchan.xyz" -> "topchan.xyz" [label = 1];
"guchi.i2p" -> "nntp.2hu-ch.org" [label = 3];
"slamspeech" -> "SRNd" [label = 188];
"chan" -> "test.yqfbo7ghmwzotrml.onion" [label = 10];
"schan.srndv2.i2p" -> "SRNd" [label = 9];
"SRNd" -> "schan.srndv2.onion" [label = 6];
"srndv2.i2p.rocks" -> "oniichan.srndv2.tld" [label = 21];
"2hu-ch.org" -> "nntp.ucavviu7wl6azuw7.onion" [label = 9];
"changolia" -> "ucavviu7wl6azuw7.onion" [label = 45];
"negromancy.ano" -> "SRNd" [label = 7];
"" -> "ev7fnjzjdbtu3miq.onion" [label = 1];
"bar3.ano" -> "nsa.monitor.server.do.not.use" [label = 6];
"ucavviu7wl6azuw7.onion" -> "nntp.chan" [label = 1];
"web.oniichan.onion" -> "nntp.ucavviu7wl6azuw7.onion" [label = 1];
"yqfbo7ghmwzotrml.onion" -> "nntp.oniichan.onion" [label = 7];
"nntp.anon.tld" -> "nntp.2hu-ch.org" [label = 38];
"test.srndv2.tld" -> "oniichan.srndv2.tld" [label = 1];
"ucavviu7wl6azuw7.onion" -> "yqfbo7ghmwzotrml.onion" [label = 91];
"nntp.nsfl.tk" -> "shitpost.moe" [label = 1];
"sfor-SRNd" -> "SRNd" [label = 4];
"psichan.tld" -> "oniichan.srndv2.tld" [label = 2];
"srndv2.i2p.rocks" -> "psichan.tld" [label = 12];
"nntp.nsfl.tk" -> "chan" [label = 11];
"web.overchan.i.did.not.read.the.config" -> "SRNd" [label = 2];
"main.com" -> "nntp.chan" [label = 1];
"2hu-ch.org" -> "backdoor.nsa.gov" [label = 3];
"web.overchan.imoutochan" -> "sfor-SRNd" [label = 10];
"ucavviu7wl6azuw7.onion" -> "nntp.2hu-ch.org" [label = 3];
"schan.srndv2.onion" -> "oniichan.srndv2.tld" [label = 4];
"SRNd" -> "gaybar.ano" [label = 9];
"nntpchan.dorsal.tk" -> "nntp.2hu-ch.org" [label = 33];
"SRNd" -> "cake" [label = 1];
"mp74puo7cp6gsgkj.onion" -> "nntp.chan" [label = 50];
"web.overchan.fargoth" -> "SRNd" [label = 8];
"nntp.oniichan.onion" -> "nntp.oniichan.onion" [label = 2];
"backdoor.nsa.gov" -> "nntp.oniichan.onion" [label = 70];
"backdoor.nsa.gov" -> "nntp.ucavviu7wl6azuw7.onion" [label = 149];
"nntp.oniichan.onion" -> "ucavviu7wl6azuw7.onion" [label = 211];
"ev7fnjzjdbtu3miq.onion" -> "nntp.oniichan.onion" [label = 27];
"topchan.xyz" -> "oniichan.srndv2.tld" [label = 15];
"web.topchan.xyz" -> "topchan.xyz" [label = 14];
"SRNd" -> "slamspeech" [label = 174];
"web.srndv2.test" -> "test.srndv2.tld" [label = 10];
"ucavviu7wl6azuw7.onion" -> "changolia" [label = 2];
"slamspeech" -> "negromancy.ano" [label = 2];
"negromancy.ano" -> "sfor-SRNd" [label = 6];
"test.srndv2.tld" -> "nntp.oniichan.onion" [label = 109];
"hschan.ano" -> "nsa.monitor.server.do.not.use" [label = 4];
"srndv2.i2p.rocks" -> "SRNd" [label = 33];
"web.overchan.sfor.ano" -> "SRNd" [label = 26];
"chan" -> "nntp.oniichan.onion" [label = 189];
"shitpost.moe" -> "nntp.2hu-ch.org" [label = 5];
"web.oniichan.onion" -> "nntp.2hu-ch.org" [label = 333];
"test.srndv2.tld" -> "chan" [label = 1];
"nsfl.tk" -> "nntp.nsfl.tk" [label = 10];
"web.srndv2.test" -> "ev7fnjzjdbtu3miq.onion" [label = 5];
"gaybar.ano" -> "negromancy.ano" [label = 2];
"web.overchan.deliciouscake.ano" -> "SRNd" [label = 3];
"nntp.oniichan.onion" -> "chan" [label = 49];
"nntp.2hu-ch.org" -> "gchan" [label = 1];
"web.overchan.imoutochan" -> "SRNd" [label = 43];
"nntp.ucavviu7wl6azuw7.onion" -> "7xnxdzyzegpsqus4.onion" [label = 1];
"gaybar.ano" -> "sfor-SRNd" [label = 2];
"web.overchan.psyops.mil" -> "SRNd" [label = 51];
"pNewss.Core.UCIS.nl" -> "nntp.middlebox.tld" [label = 460];
"slamspeech" -> "sfor-SRNd" [label = 1];
"web.oniichan.onion" -> "yqfbo7ghmwzotrml.onion" [label = 1];
"web.srndv2.test" -> "nntpchan.whois.ano" [label = 1];
"web.ucavviu7wl6azuw7.onion" -> "nntp.oniichan.onion" [label = 2];
"guchi" -> "nntp.2hu-ch.org" [label = 3];
"shitpost.moe" -> "ucavviu7wl6azuw7.onion" [label = 9];
"nntp.2hu-ch.org" -> "shitpost.moe" [label = 7];
"web.i2p.rocks" -> "srndv2.i2p.rocks" [label = 42];
"srndv2.i2p.rocks" -> "srndv2.i2p.rocks" [label = 1];
"psichan.tld" -> "SRNd" [label = 10];
"gchan.xyz" -> "yqfbo7ghmwzotrml.onion" [label = 1];
"web.oniichan.onion" -> "test.yqfbo7ghmwzotrml.onion" [label = 2];
"web.srndv2.test" -> "odilitime.srndv2.tld" [label = 14];
"nntp.ucavviu7wl6azuw7.onion" -> "nntp.nsfl.tk" [label = 19];
"nntp.oniichan.onion" -> "test.srndv2.tld" [label = 49];
"" -> "test.srndv2.tld" [label = 4];
"ucavviu7wl6azuw7.onion" -> "ev7fnjzjdbtu3miq.onion" [label = 24];
"tor.topchan.xyz" -> "schan.srndv2.i2p" [label = 1];
"" -> "nntp.chan" [label = 12];
"nntp.chan" -> "nntp.oniichan.onion" [label = 46];
"sfor-SRNd" -> "sfor-SRNd" [label = 17];
"nntp.2hu-ch.org" -> "nntp.2hu-ch.org" [label = 1];
"guchi" -> "changolia" [label = 7];
"" -> "nsa.monitor.server.do.not.use" [label = 5];
"nntp.nsfl.tk" -> "backdoor.nsa.gov" [label = 109];
"test.yqfbo7ghmwzotrml.onion" -> "nntp.oniichan.onion" [label = 18];
"nntp.oniichan.onion" -> "backdoor.nsa.gov" [label = 131];
"web.i2p.rocks" -> "nntp.2hu-ch.org" [label = 36];
"nntp.oniichan.onion" -> "nntp.ucavviu7wl6azuw7.onion" [label = 59];
"yqfbo7ghmwzotrml.onion" -> "ucavviu7wl6azuw7.onion" [label = 18];
"chan" -> "ucavviu7wl6azuw7.onion" [label = 22];
"oniichan.srndv2.tld" -> "test.srndv2.tld" [label = 9];
"SRNd" -> "SRNd" [label = 839];
"2hu-ch.org" -> "7xnxdzyzegpsqus4.onion" [label = 33];
"nntpchan.whois.ano" -> "nntp.middlebox.tld" [label = 1];
"nntp.nsfl.tk" -> "nntp.ucavviu7wl6azuw7.onion" [label = 5];
"ucavvi" -> "nntp.oniichan.onion" [label = 1];
"SRNd" -> "pNewss.Core.UCIS.nl" [label = 425];
"srndv2.i2p.rocks" -> "topchan.xyz" [label = 1];
"changolia" -> "ev7fnjzjdbtu3miq.onion" [label = 15];
"web.overchan.topchan" -> "tor.topchan.xyz" [label = 6];
"web.overchan.lolz1" -> "SRNd" [label = 17];
"main.com" -> "nsa.monitor.server.do.not.use" [label = 1];
"nntp.2hu-ch.org" -> "nntp.nsfl.tk" [label = 1];
"ev7fnjzjdbtu3miq.onion" -> "ucavviu7wl6azuw7.onion" [label = 4];
"7xnxdzyzegpsqus4.onion" -> "ucavviu7wl6azuw7.onion" [label = 54];
"2hu-ch.org" -> "ucavviu7wl6azuw7.onion" [label = 16];
"mp74puo7cp6gsgkj.onion" -> "ev7fnjzjdbtu3miq.onion" [label = 10];
"web.gchan.xyz" -> "7xnxdzyzegpsqus4.onion" [label = 6];
"nntp.nsfl.tk" -> "ucavviu7wl6azuw7.onion" [label = 21];
"web.overchan.oniichan" -> "oniichan.srndv2.tld" [label = 64];
"web.oniichan.onion" -> "ucavviu7wl6azuw7.onion" [label = 101];
"test.yqfbo7ghmwzotrml.onion" -> "gchan.xyz" [label = 3];
"backdoor.nsa.gov" -> "nntp.nsfl.tk" [label = 121];
"nsa.monitor.server.do.not.use" -> "nntp.oniichan.onion" [label = 23];
"web.overchan.sfor.ano" -> ".POSTED" [label = 1];
"7xnxdzyzegpsqus4.onion" -> "changolia" [label = 6];
"yqfbo7ghmwzotrml.onion" -> "gchan" [label = 146];
"nntp.nsfl.tk" -> "test.srndv2.tld" [label = 16];
"test.srndv2.tld" -> "SRNd" [label = 2];
"hiddenchan1" -> "SRNd" [label = 1];
"oniichan.srndv2.tld" -> "schan.srndv2.onion" [label = 26];
"web.overchan.hiddenchan" -> "hiddenchan1" [label = 1];
"nntp.2hu-ch.org" -> "nntp.ucavviu7wl6azuw7.onion" [label = 650];
"gchan" -> "nntp.2hu-ch.org" [label = 151];
"web.oniichan.onion" -> "changolia" [label = 7];
"nntp.chan" -> "test.yqfbo7ghmwzotrml.onion" [label = 4];
"nntp.anon.tld" -> "nntp.oniichan.onion" [label = 13];
"nntp.2hu-ch.org" -> "backdoor.nsa.gov" [label = 16];
"web.srndv2.schan" -> "schan.srndv2.i2p" [label = 1];
"not-for-mail" -> ".POSTED" [label = 15];
"nntp.middlebox.tld" -> "nntp.oniichan.onion" [label = 1];
"test.srndv2.tld" -> "test.srndv2.tld" [label = 9];
"SRNd" -> "schan.srndv2.i2p" [label = 7];
"nntp.chan" -> "ucavviu7wl6azuw7.onion" [label = 6];
"nntp.oniichan.onion" -> "nntp.2hu-ch.org" [label = 1670];
"odilitime.srndv2.tld" -> "backdoor.nsa.gov" [label = 2];
"odilitime.srndv2.tld" -> "chan" [label = 10];
"2hu-ch.org" -> "nntp.nsfl.tk" [label = 3];
"outback.ano" -> "sfor-SRNd" [label = 1];
"changolia" -> "nntp.oniichan.onion" [label = 13];
"nntp.middlebox.tld" -> "nntp.middlebox.tld" [label = 1];
"web.overchan.lolz" -> "SRNd" [label = 100];
"gchan.xyz" -> "7xnxdzyzegpsqus4.onion" [label = 4];
"nntp.chan" -> "nntpchan.dorsal.tk" [label = 8];
"test.srndv2.tld" -> "backdoor.nsa.gov" [label = 7];
"odilitime.srndv2.tld" -> "nntp.ucavviu7wl6azuw7.onion" [label = 3];
"nntp.ucavviu7wl6azuw7.onion" -> "changolia" [label = 11];
"nntp.ucavviu7wl6azuw7.onion" -> "yqfbo7ghmwzotrml.onion" [label = 71];
"web.srndv2.test" -> "backdoor.nsa.gov" [label = 6];
"2hu-ch.org" -> "nntp.2hu-ch.org" [label = 21];
"nntpchan.srndv2.net" -> "SRNd" [label = 16];
"oniichan.srndv2.tld" -> "SRNd" [label = 62];
"odilitime.srndv2.tld" -> "test.srndv2.tld" [label = 1];
"import.hiddenchan" -> "SRNd" [label = 176];
"pichan.tld" -> "nntp.oniichan.onion" [label = 9];
"nsfl.tk" -> "nntp.2hu-ch.org" [label = 1];
"negromancy.ano" -> "pNewss.Core.UCIS.nl" [label = 7];
"SRNd" -> "sfor-SRNd" [label = 3];
"web.oniichan.onion" -> "backdoor.nsa.gov" [label = 5];
"backdoor.nsa.gov" -> "backdoor.nsa.gov" [label = 3];
"topchan.xyz" -> "tor.topchan.xyz" [label = 1];
"SRNd" -> "nntpchan.srndv2.net" [label = 11];
"schan.srndv2.onion" -> "SRNd" [label = 35];
"web.ucavviu7wl6azuw7.onion" -> "backdoor.nsa.gov" [label = 1];
"ucavviu7wl6azuw7.onion" -> "nntp.oniichan.onion" [label = 449];
"cake" -> "SRNd" [label = 1];
"web.gchan.i2p" -> "nntp.2hu-ch.org" [label = 3];
"chan" -> "nntpchan.dorsal.tk" [label = 1];
".POSTED" -> "negromancy.ano" [label = 16];
"nntp.oniichan.onion" -> "ev7fnjzjdbtu3miq.onion" [label = 2];
"web.i2p.rocks" -> "nntp.oniichan.onion" [label = 38];
"nntp.oniichan.onion" -> "changolia" [label = 31];
"oniichan.srndv2.tld" -> "nntpchan.srndv2.net" [label = 4];
}

BIN
test.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 KiB

1860
test.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 142 KiB