Skip to content

Instantly share code, notes, and snippets.

@CyberRoute
Last active January 15, 2018 17:32
Show Gist options
  • Save CyberRoute/b33320e2a7637daf7f133d66c60b34a7 to your computer and use it in GitHub Desktop.
Save CyberRoute/b33320e2a7637daf7f133d66c60b34a7 to your computer and use it in GitHub Desktop.
scialla
import argparse
import tarfile
import os
import re
import ipaddress
def openTgz():
tar = tarfile.open("shallalist.tar.gz", "r:gz")
domains = []
for tarinfo in tar:
if tarinfo.isfile() and 'domains' in tarinfo.name:
domains.append(tarinfo.name)
tar.close()
return domains
def filesData():
files = openTgz()
filesdata = {filename: open(filename, "r").readlines() for filename in files}
return filesdata
def createFolder(directory):
try:
if not os.path.exists(directory):
os.makedirs(directory)
return f"OK: Creating directory {directory}"
else:
return f"Warning: Directory {directory} already exists..."
except OSError:
return f"Error: Creating directory {directory}"
def searchPattern(data):
data = openTgz()
files = set()
for domains in data:
search = re.search(r'/.*?/', domains)
files.add(search.group(0))
return files
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-c', action='store', dest='cliente',
help='Cliente')
args = parser.parse_args()
if args.cliente:
print(createFolder(args.cliente))
#print(openTgz(), 'files')
data = filesData()
files = searchPattern(openTgz())
os.chdir(args.cliente)
names = []
types = '{type master; file "/var/lib/blacklist.db";};'
dsfiles = {}
for file in files:
file = file.strip('/')
names.append(file)
filePath = "{}.zones".format(file)
with open(filePath, "a") as f:
for key, value in data.items():
for name in names:
if name in key:
dsfiles[key] = name + ".zones"
os.chdir('../')
for k, v in dsfiles.items():
input_files = open(k, 'r')
output_files = open(args.cliente + "/" + v, 'w')
for line in input_files:
try:
ip = ipaddress.ip_address(line.strip())
#print(ip, 'is valid IPv4')
except ValueError:
output_files.write('zone ' + '"{0}" {1}\n'.format(line.strip(), types))
input_files.close()
output_files.close()
@ciambellino
Copy link

Ho trovato un bug, anzi non è proprio un bug, ma è un errore nel file domains che viene riportato dentro.
Uno dei domnini è scritto male perciò l'errore viene trasferito.
L'errroe che ho trovato è nel file domains della directory porn.
Il dominio inizia con il punto, io direi che sarebbe meglio inserire questo controllo e nel caso togliere il punto iniziale.
Il dominio in questione è .tumblr.com subito sotto il dominio tumblrafterdark.tumblr.com

@ciambellino
Copy link

features request!!!! ;-)
vista la grandezza dei files, potresti inserire un controllo per eliminare i domini che non vengono risolti??
Ho notato che ce ne sono parecchi!!

Una cosa tipo questa:

import os
import socket

for i in s:
        try:
                get = socket.gethostbyname(i.strip())
                print 'il dominio %s esiste' % (i.strip())
        except socket.gaierror, e:
                print "il dominio non esiste: :", i.strip()
f.close()

@CyberRoute
Copy link
Author

bella pe scialla!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment