diff --git a/scripts/darknet_exploration.py b/scripts/darknet_exploration.py index b4c5e13..1a4c3e7 100644 --- a/scripts/darknet_exploration.py +++ b/scripts/darknet_exploration.py @@ -1,20 +1,31 @@ -import os, pwd +import os, pwd, re, pandas as pd def main(): rootpath='/srv/darknet-onion-webring/' urlpath=pwd.getpwuid(os.getuid()).pw_dir+"/.darknet_participant_url" - print(urlpath) - isitvalid="n" + #print(urlpath) - #check if ~/.darknet_participant_url exists, + + # check if ~/.darknet_participant_url exists, # if exists, instance= the content of ~/.darknet_participant_url (which is the url: such as uptime.nowherejez...onion) - + isitvalid="n" while isitvalid != "y": if os.path.isfile(urlpath): with open(urlpath) as f: - instance = f.read() - # TODO check if the instance URL domain is valid + instance = f.read().rstrip() + # check if the instance URL domain is valid + #print(urlpath,instance) + if IsOnionValid(instance): + print("[+] Instance Name: ",instance,IsOnionValid(instance)) + else: + print('[-] Invalid instance name in ~/.darknet_participant_url:', instance) + return False instancepath=rootpath+'www/participants/'+instance + verifiedcsvfile=instancepath+'/verified.csv' + vdf = pd.read_csv(verifiedcsvfile) + unverifiedcsvfile=instancepath+'/unverified.csv' + uvdf = pd.read_csv(unverifiedcsvfile) + #df = pd.read_csv(csvfile) print("[+] file exists, your Webring URL is ", instance) isitvalid = "y" else: @@ -23,112 +34,207 @@ def main(): instance = input("What is your Instance domain ? (ex: uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion):") instancepath=rootpath+'www/participants/'+instance # TODO check if the instance URL domain is valid + if IsOnionValid(instance): + print("[+] Instance Name: ",instance,IsUrlValid(instance)) + else: + print('[-] Invalid instance name in ~/.darknet_participant_url:', instance) + return False + # ask the user if the instance URL is valid ? print() print(instance) - isitvalid=input("Is your this your instance domain ?") + isitvalid=input("Is this your this your instance domain ? (y/n)") # if yes, then write it into ~/.darknet_participant_url - if isitvalid != "y" : + if isitvalid == "y" : print("OK writing the instance url to ~/.darknet_participants_url") with open(urlpath, "w") as file: file.write(instance) - print("[+] file written, let's read it") - f = open(urlpath,"r") - print(f.read()) - print("[+] Initial Setup Completed!") - - print("[+] Welcome to the Darknet Onion Webring, where you are exploring the Darknet and helping others do the same.") - print(""" - 1) Add a new entry (into unverified.csv) - 2) Verify an entry (move an entry from unverified to verified.csv) - 3) Add a new webring participant (and download their files into their directory (without trusting them yet!)) - 4) Trust a webring participant (Potentially dangerous) - 5) Add/Remove words in the sensitive list (ex: drug) - 6) Add/Remove words in the blacklist (ex: porn) - """) - option = input("Select Option? (1-4)") - print(option) - match option: - case "1": - print("[+] Add a new Entry (into unverified.csv)") - # ask for the following: - unverifiedpath=instancepath+'/unverified.csv' - # the name of the website (required) + check if its valid - entry_name = input("What is the Website name ?") - # the url of the website (required) + check if its valid - entry_url = input("What is URL of the Website ? (ex: https://torproject.org or http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion") - # a quick description (optional) + check if its valid - entry_url = input("(Optional) Description of the website ? (max 256 characters) (press enter to skip)" - # sensitive ? (y/n) + check if its valid - entry_url = input("is it a sensitive website ? (ex: website related to drugs)" + print("[+] file written, let's read it") + f = open(urlpath,"r") + print(f.read()) + print("[+] Initial Setup Completed!") + while True: + print("[+] Welcome to the Darknet Onion Webring, where you are exploring the Darknet and helping others do the same.") + print(""" +Websites: + 1) Add a new Website entry (into unverified.csv) + 2) Trust a Website entry (move an entry from unverified to verified.csv) + 3) Untrust a Website entry (move an entry from unverified to verified.csv) + +Webring Participants: + 4) Add a new webring participant (and download their files into their directory (without trusting them yet!)) + 5) Trust a webring participant (Potentially dangerous) + 6) Untrust a webring participant + 7) Remove a webring participant + +Wordlists: + 8) Add/Remove words in the sensitive list (ex: drug) + 9) Add/Remove words in the blacklist (ex: porn) + 0) Exit + """) + option = input("Select Option? (0-6)") + print(option) + match option: + + +########## MANAGING WEBSITE ENTRIES ################# + case "1": + print("\n[+] Add a new Website entry (into unverified.csv)") + name='' + while(IsNameValid(name) is not True): + name = input("What is the Website name ? ") + category='' + while(IsCategoryValid(category) is not True): + category = input("What is the website Category ? ") + # the url of the website (required) + check if its valid + #entry_url = input("What is URL of the Website ? (ex: https://torproject.org or http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion)") + url='' + while(IsUrlValid(url) is not True): + url=input("What is the website URL ? ") + + # a quick description (optional) + check if its valid + #entry_desc = input("(Optional) Description of the website ? (max 256 characters) (press enter to skip)") + #desc="This is a new website that we add, it has this description" + desc='DEFAULT' + while(IsDescriptionValid(desc) is not True): + desc=input("Description for the website ? (Optional)") + # sensitive ? (y/n) + check if its valid + #entry_sensi = input("is it a sensitive website ? (ex: website related to drugs) (y/n)") + sensi = '' + while(IsStatusValid(sensi) is not True): + sensi=input("Is this website sensitive (ex: related to drugs) ? (y/n)") + + newrow=[instance,category,name,url,sensi,desc,'',''] + print("[+] NEWROW=",newrow) # (rest is automatic: status, score, instance is = '' because it is your own instance) # check if the entry doesn't already exist in verified.csv and in unverified.csv # if it doesnt exist, add it into unverified.csv + uvdf.loc[-1] = newrow # adding a row + uvdf.index = uvdf.index + 1 # shifting index + uvdf = uvdf.sort_index() # sorting by index + print("[+] New row added! now writing the csv file:") + uvdf.to_csv(unverifiedcsvfile, index=False) - case "2": - print("[+] Verify an entry (move an entry from unverified.csv to verified.csv)") - # search for a word - searchterm = input("What is the Website name ?") - # and display only the matching entries in an array format (display it in CLI). - # Each of the rows must have an index, - # prompt the user to ask for with row they want to move to verified.csv - searchterm = input("What is the index of the entry that you want to move to verified.csv ?") - # once selected, it must be able to print that row, and: - # append it into verified.csv - # remove it from unverified.csv - # print("[+] completed! You are now listing [name] (url) (sensitive)") - - case "3": - print("[+] Add a new webring participant (and download their files into their directory (without trusting them yet!))") - # ask for the url to the other webring participant - webring_participant_url = input("What is URL of the new webring participant? (ex: https://torproject.org or http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion") - # check if the (onion only) url is valid or not: at http://URL.onion/participants/URL.onion/{verified.csv,unverified.csv,sensitive.csv,blacklist.csv,webring-participants.csv} - - case "4": - print("[+] Trust a webring participant (Potentially dangerous)") - # list the existing webring participants from webring-participants.csv and - # ask the user to pick the index (0-9?) of the instance to trust - # if index is valid, then mark the instance as trusted in webring-participants.csv - searchterm = input("What is the index of the entry that you want to trust ?") - case "5": - print("[+] Add/Remove words in the sensitive list (ex: drug)") - print("do you want to 1) add words or 2) remove words ?") - option="0" - - done = False - while(done == False): - while option not any((1,2,"exit")): - option=input("do you want to 1) add words or 2) remove words ? (type exit to exit)") - # display the contents of sensitive.csv file - if option == 1: - word=input("which word do you want to add? (write 0 to exit") - if word == "0": - done = True - #True to get out of the while loop - else - print("checking if word is valid") - #check if word is valid in a while loop (dont check if - # if invalid! remove word at index + case "2": + print("[+] Trust a Website entry (move an entry from unverified to verified.csv)") + # search for a word + name='' + while(IsNameValid(name) is not True): + name = input("What is the Website name you want to verify ? (ex: Nowhere)") + filter_uvdf = uvdf[uvdf.Name.str.contains(name)] + # and display only the matching entries in unverified.csv in an array format (display it in CLI). + print(filter_uvdf[['Name','URL']]) + # check if there are no results, dont proceed if there are none! + if filter_uvdf.size == 0: + print("ERROR no results, skipping.") else: - index=input("which word do you want to remove? (index 0 to (max index) (write exit to exit)") - if index == "exit": - done = True - #True to get out of the while loop - else - print("checking if index is valid") - #check if index is valid or not - # if valid! remove word at index - # if invalid! just pass to ask for another word + # Each of the rows has an index, + index=-1 + while (index not in filter_uvdf.index): + # prompt the user to ask for with row they want to move to verified.csv + index = int(input("What is the index of the entry that you want to move to verified.csv ? (ex: 3) ")) + # once selected, it must be able to SAVE and print that row: + print(uvdf.iloc[index].values) + newrow=uvdf.iloc[index].values - case "6": - print("[+] Add/Remove words in the blacklist list (ex: porn)") - # copy option 5 - # print("do you want to 1) add words or 2) remove words ?") - # display the contents of blacklist.csv file + + # append it into verified.csv + vdf.loc[-1] = newrow # adding a row + vdf.index = vdf.index + 1 # shifting index + vdf = vdf.sort_index() # sorting by index + vdf.to_csv(verifiedcsvfile, index=False) + print("[+] New row added to verified.csv! now writing to the csv") + + + # remove it from unverified.csv + uvdf.drop(index, inplace= True) + uvdf.to_csv(unverifiedcsvfile, index=False) + print("[+] Link is now moved to verified.csv!") + + case "3": + # TODO + print("[+] Untrust a Website entry (move an entry from verified to unverified.csv)") + + +####### MANAGING WEBRING PARTICIPANTS ########### +# 4) Add a new webring participant (and download their files into their directory (without trusting them yet!)) +# 5) Trust a webring participant (Potentially dangerous) +# 6) Untrust a webring participant +# 7) Remove a webring participant +##################################################### + case "4": + print("[+] Add a new webring participant (and download their files into their directory (without trusting them yet!))") + # TODO ask for the url to the other webring participant + webring_participant_url = input("What is URL of the new webring participant? (ex: https://torproject.org or http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion") + # TODO check if the (onion only) url is valid or not: at http://URL.onion/participants/URL.onion/{verified.csv,unverified.csv,sensitive.csv,blacklist.csv,webring-participants.csv} + # TODO if OK then add it to the webring-participants.csv file - case _: - print("[-] ERROR, incorrect input") + case "5": + print("[+] Trust a webring participant (Potentially dangerous)") + # TODO list the existing webring participants from webring-participants.csv and + # TODO ask the user to pick the index (0-9?) of the instance to trust + # TODO if index is valid, then mark the instance as trusted in webring-participants.csv + searchterm = input("What is the index of the entry that you want to trust ?") + case "6": + # TODO + print("[+] Untrust a webring participant") + case "7": + # TODO + print("[+] Remove a webring participant") + + + + + + + +################### MANAGING WORDLISTS ################# +#Wordlists: +# 8) Add/Remove words in the sensitive list (ex: drug) +# 9) Add/Remove words in the blacklist (ex: porn) +# 0) Exit +######################################################### + + case "8": + print("[+] Add/Remove words in the sensitive list (ex: drug)") + print("do you want to 1) add words or 2) remove words ?") + option="0" + + done = False + while(done == False): + while option != "1" and option != "2" and option != "exit": + option=input("do you want to 1) add words or 2) remove words ? (type exit to exit)") + # TODO display the contents of sensitive.csv file + if option == 1: + word=input("which word do you want to add? (write 0 to exit") + if word == "0": + done = True + #True to get out of the while loop + else: + print("checking if word is valid") + # TODO check if word is valid in a while loop (dont check if + # TODO if invalid! remove word at index + else: + index=input("which word do you want to remove? (index 0 to (max index) (write exit to exit)") + if index == "exit": + done = True + #True to get out of the while loop + else: + print("checking if index is valid") + # TODO check if index is valid or not + # TODO if valid! remove word at index + # TODO if invalid! just pass to ask for another word + + case "9": + print("[+] Add/Remove words in the blacklist list (ex: porn)") + # TODO copy option 5 + # TODO print("do you want to 1) add words or 2) remove words ?") + # TODO display the contents of blacklist.csv file + + case _: + print("[-] Exiting") + return True #### PROTECTIONS AGAINST MALICIOUS CSV INPUTS #### @@ -168,7 +274,7 @@ def IsOnionValid(url: str)-> bool: print("Domain not valid") return False else: - print("URL doesn't start http") + #print("URL doesn't start http") if pattern.fullmatch(url) is not None: if len(url.split('.')) > 3: n_subdomians = len(url.split('.')) @@ -205,11 +311,11 @@ def IsUrlValid(url:str)->bool: return IsOnionValid(url) else: if not url.__contains__('.'): - print("No (DOT) in url") + print("No (DOT) in clearnet url") + return False + if pattern.fullmatch(url) is None: + print('Url contains invalid chars') return False - if pattern.fullmatch(url) is None: - print('Url contains invalid chars') - return False return True def IsStatusValid(status: str)-> bool: @@ -219,13 +325,14 @@ def IsStatusValid(status: str)-> bool: # check if the characters are only [vx] with maximum 1 chars max # if OK return True #if not : return False - pattern = ['v','x'] + pattern = ['y','n'] if len(status) != 1: print("Got more than one character or nothing.") return False elif (status not in pattern): - print("Got an invalid character") + print("Got an invalid character it must be either y or n") return False + return True def IsDescriptionValid(desc:str)->bool: @@ -238,8 +345,8 @@ def IsDescriptionValid(desc:str)->bool: #if not : return False pattern = re.compile("^[A-Za-z0-9-.,' ]+$") desc.strip() - if pattern.fullmatch(desc) is None: - print('Got an empty desc or invalid chars') + # empty description is fine as it's optional + if desc == "DEFAULT": return False elif len(desc) > 256: print("desc is greater than 256 chars") @@ -258,7 +365,7 @@ def IsCategoryValid(categories: list)-> bool: for category in categories: category.strip() if pattern.fullmatch(category) is None: - print('Got an empty list or invalid chars') + #print('Got an empty list or invalid chars') return False elif len(category) > 64: print('Category is too long') @@ -276,7 +383,7 @@ def IsNameValid(name: str)->bool: pattern = re.compile("^[A-Za-z0-9 ]+$") name = name.strip() if (pattern.fullmatch(name) is None): - print("Got an invalid character or nothing") + #print("Got an invalid character or nothing") return False elif len(name) > 64: print(f'Got a name lenght greater than 64. {len(name)}') diff --git a/scripts/tests/csvwork.py b/scripts/tests/csvwork.py index 145a405..b05f1ff 100644 --- a/scripts/tests/csvwork.py +++ b/scripts/tests/csvwork.py @@ -1,7 +1,7 @@ import csv, json, pandas as pd, glob def main(): - print("aaa") + #print("aaa") csvfile="verified.csv" df = pd.read_csv(csvfile) #for i in range (df.index.stop): @@ -12,26 +12,123 @@ def main(): # print(df.at[i][col]) #print(df) - print("[+] Display 2 columns:") +# print("[+] Display 2 columns:") #display 2 columns: - print(df[['Name', 'URL']]) +# print(df[['Name', 'URL']]) - print("[+] Display rows 0 to 5") +# print("[+] Display rows 0 to 5") #display rows from 0 to 5 - print(df[0:5]) +# print(df[0:5]) #display rows from 0 to 5 - print("[+] Display rows 3 to 5 and columns Name and URL") - print(df.loc[3:5,['Name','URL']]) +# print("[+] Display rows 3 to 5 and columns Name and URL") +# print(df.loc[3:5,['Name','URL']]) #print(df[0:1,['Name','URL']]) - print("[+] Display all rows for and columns name and URL") +# print("[+] Display all rows for and columns name and URL") #df.loc[startrow:endrow, startcolumn:endcolumn] - print(df.loc[0:df.index.stop,['Name','URL']]) +# print(df.loc[0:df.index.stop,['Name','URL']]) #display rows from 0 to the end of indexes - print("[+] Display all rows for all columns") - print(df[0:df.index.stop]) +# print("[+] Display all rows for all columns") +# print(df[0:df.index.stop]) + + + + + ############################################################################## + print('\n[+] list the entire csv file and get all row IDs') + print(df[['Name', 'URL']]) + index=-1 + while (index > df.tail(1).index.item() or index < 0): + #index=input("\n[+] What entry do you want to edit ? (enter the row index (ex: 4)") + index=4 + index=int(index) + print(df.iloc[index], "last index:", df.index.stop-1) + print("\n[+] Number of Rows:", len(df.index)-1) + + + + print('\n[+] Iterate over the rows by their IDs for the 2 Columns URL and Name') + print(df.iterrows()) + for i,j in df.iterrows(): + #print("[+] ROW=",i,"\n[+] CONTENT=\n",j) + #print("[+] ROW=",i) + #print("[+] ROW CONTENTS= \n",df.loc[i, ['URL','Name']]) + #print("[+] ROW CONTENTS= \n",df.loc[i, ['URL']]) + print("[+] ROW=",i,"ROW CONTENTS=", df.at[i, 'Name'], df.at[i, 'URL']) + #print(df[0][i]) + + + + print('\n[+] Iterate over the columns by their name:') + columns = list(df) + print(columns) + print('\n[+] Iterate over the columns of the first row:') + for i in columns: + print('\nCOLUMN=',i) + print('CONTENTS=',df[i][0]) + + + + #print('[+] list the csv file by filtering a keyword and get all row IDs') + #filterterm=input("[+] Filter the CSV file using a keyword (ex: DNM)") + filterterm="Psy" + filter_df = df[df.Name.str.contains(filterterm)] + #print(filtered_df) # print all columns + print(filter_df[['Name','URL']]) #print only 2 columns + #print("\n[+] Number of Rows:", len(filter_df.index)) + #for index in filter_df.index: + #print(index) + index=-1 + while (index not in filter_df.index): + #index=int(input("\n[+] Please select a valid row: ")) + index=int("1") + print("ROW=",index, 'CONTENT=', filter_df.at[index, 'Name'], filter_df.at[index, 'URL']) + + + + print("\n[+] Adding a new row:") + # ask for the following: + #unverifiedpath=instancepath+'/unverified.csv' + instance='uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion' + unverifiedpath='verified.csv' + # the name of the website (required) + check if its valid + # if the website name is "exit" then get out of the while loop + #entry_name = input("What is the Website name ?") + name="NewWebsite" + category="TestCategory" + # the url of the website (required) + check if its valid + #entry_url = input("What is URL of the Website ? (ex: https://torproject.org or http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion)") + url="http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion" + # a quick description (optional) + check if its valid + #entry_desc = input("(Optional) Description of the website ? (max 256 characters) (press enter to skip)") + desc="This is a new website that we add, it has this description" + # sensitive ? (y/n) + check if its valid + #entry_sensi = input("is it a sensitive website ? (ex: website related to drugs) (y/n)") + sensi = "n" + newrow=[instance,category,name,url,sensi,desc,'',''] + print("[+] NEWROW=",newrow) + + #add a new row (get all the new data you need first): + + df.loc[-1] = newrow # adding a row + df.index = df.index + 1 # shifting index + df = df.sort_index() # sorting by index + print("[+] New row added! now writing the csv file:") + df.to_csv(csvfile, index=False) + + print(df) + + #write the dataframe into the csv file + #read and print the contents of the csv file + #re-add that row in the csv file + #remove that row from the dataframe + print() + + + # then select a row in it (by the ID) and display it + # list if __name__ == '__main__': main() diff --git a/scripts/tests/verified.csv b/scripts/tests/verified.csv index 25f8e3b..194eb98 100644 --- a/scripts/tests/verified.csv +++ b/scripts/tests/verified.csv @@ -1,12 +1,13 @@ Instance,Category,Name,URL,Sensitive,Description,Status,Score +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, FIRSTherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,Psychonaut Wiki,http://vvedndyt433kopnhv6vejxnut54y5752vpxshjaqmj7ftwiu6quiv2ad.onion/,,"This is the wiki for psychonauts, it contains infos on substances and trip reports",✔️,100.0 -somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 -somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 -somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 -somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 -somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 -somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 -somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 -LASTherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 - - +somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,1DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,2DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,3DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +somewh3refoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,4DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,5DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,6DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +somewherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,7DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +nowherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,8DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0 +LASTherefoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Infos and Links,Psychonaut Wiki,http://vvedndyt433kopnhv6vejxnut54y5752vpxshjaqmj7ftwiu6quiv2ad.onion/,,"This is the wiki for psychonauts, it contains infos on substances and trip reports",✔️,100.0 diff --git a/templates/banner.png b/templates/banner.png new file mode 100644 index 0000000..8e7af73 Binary files /dev/null and b/templates/banner.png differ diff --git a/templates/blacklist.csv b/templates/blacklist.csv new file mode 100644 index 0000000..432db87 --- /dev/null +++ b/templates/blacklist.csv @@ -0,0 +1,2 @@ +blacklisted-words +porn diff --git a/templates/sensitive.csv b/templates/sensitive.csv new file mode 100644 index 0000000..6a38cbc --- /dev/null +++ b/templates/sensitive.csv @@ -0,0 +1,5 @@ +sensitive-words +Market +market +drug + diff --git a/templates/unverified.csv b/templates/unverified.csv new file mode 100644 index 0000000..4a9afe1 --- /dev/null +++ b/templates/unverified.csv @@ -0,0 +1,2 @@ +Instance,Category,Name,URL,Sensitive,Description,Status,Score + diff --git a/templates/verified.csv b/templates/verified.csv new file mode 100644 index 0000000..26b74e4 --- /dev/null +++ b/templates/verified.csv @@ -0,0 +1,3 @@ +Instance,Category,Name,URL,Sensitive,Description,Status,Score + + diff --git a/templates/webring-participants.csv b/templates/webring-participants.csv new file mode 100644 index 0000000..2641837 --- /dev/null +++ b/templates/webring-participants.csv @@ -0,0 +1,2 @@ +Name,URL,Description,Trusted,Status,Score +Nowhere,http://uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,"Darknet Webring Onion Participant",✔️,✔️,100.0 diff --git a/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/unverified.csv b/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/unverified.csv index 505f097..c98aafd 100644 --- a/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/unverified.csv +++ b/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/unverified.csv @@ -1,4 +1,12 @@ Instance,Category,Name,URL,Sensitive,Description,Status,Score -,Infos and Links,Tor Taxi,http://tortaxi2dev6xjwbaydqzla77rrnth7yn2oqzjfmiuwn5h6vsk2a4syd.onion/,✔️,"List of links to go to popular darknet places",✔️,100.0 - - +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,aaa,aa,http://niggaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.onion,y,test,, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,bbb,aaa,ccc.com,y,,, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,w,q,adwwawa.com,n,dwaawdwa,, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,w,a,dwa.com,n,,, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,wadwda,dwawdawawda,meinnigga.com,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,b,a,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +,Infos and Links,Tor Taxi,http://tortaxi2dev6xjwbaydqzla77rrnth7yn2oqzjfmiuwn5h6vsk2a4syd.onion/,✔️,List of links to go to popular darknet places,✔️,100.0 diff --git a/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv b/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv index c67543b..443af65 100644 --- a/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv +++ b/www/participants/uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv @@ -1,5 +1,16 @@ Instance,Category,Name,URL,Sensitive,Description,Status,Score +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,NewWebsite,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Test,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Test,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Test,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Test,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,TestCategory,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, +uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Test,Test,http://newwebsitewoidwajiawdhjoidwahjoadiwhj.onion,n,"This is a new website that we add, it has this description",, ,Infos and Links,Psychonaut Wiki,http://vvedndyt433kopnhv6vejxnut54y5752vpxshjaqmj7ftwiu6quiv2ad.onion/,,"This is the wiki for psychonauts, it contains infos on substances and trip reports",✔️,100.0 -,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,"General guide on how to navigate the Darknet to buy drugs",✔️,100.0 - - +,Infos and Links,DNM Bible,http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq3lahrfr2l6ev6zgyd.onion/,✔️,General guide on how to navigate the Darknet to buy drugs,✔️,100.0