#!/usr/bin/python3 # coding: utf-8 import sys, time, mmap, os, webbrowser os.system('mode con: cols=45 lines=90' if os.name == 'nt' else 'printf "\e[8;35;110t"') def banner(): os.system('cls' if os.name == 'nt' else 'printf "\033c"') print ('''\ \033[1;37m-------------------------------------------------------------------------------------------- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ PHONE NUMBERS GENERATOR v3 BY\033[1;m \033[1;31m ██╗ ██╗ ██████╗ ██╗ ██╗ ██║ ██║██╔═████╗██║ ██║ ███████║██║██╔██║███████║ ╚════██║████╔╝██║╚════██║ ██║╚██████╔╝ ██║ ╚═╝ ╚═════╝ ╚═╝\033[1;m \033[1;37m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ -------------------------------------------------------------------------------------------- \033[1;m''') def reset(): banner() main() def process(selection): fname = input("\n\n\t\t\033[1;38mName the output file (default: go back): \033[1;m") if fname == '': reset() else: while selection == "1": while 1: prefix = input("\n\t\t\033[1;38mEnter a prefix number: \033[1;m") if (prefix.isdigit()): break else: display('5') while 1: try: rmin = int(input("\n\t\t\033[1;38mEnter range minimum (exclude prefix): \033[1;m")) break except ValueError: display('5') while 1: try: rmax = int(input("\n\t\t\033[1;38mEnter range top: \033[1;m")) if rmin >= rmax: display('3') else: display('1') if int(rmax) >= 1000000 else display('2') custome_range = range(rmin, rmax) write_to_file(fname, prefix, custome_range) break except ValueError: display('5') while selection != "1": mobile_range = range(1000000, 10000000) landline_range = range(5000000, 10000000) prefix = input("\n\t\t\033[1;38mEnter a prefix number ('all' for all possible combinations): \033[1;m") if (prefix.isdigit()): if selection == "2": display('4') write_to_file(fname, prefix, mobile_range) break else: display('4') write_to_file(fname, prefix, landline_range) break elif prefix == "all": if selection == "2": display('4') write_to_file(fname, "mpfx", mobile_range) break else: display('4') write_to_file(fname, "lpfx", landline_range) break else: display('6') def write_to_file(fname, prefix, range): if (prefix.isdigit()): with open(fname, 'w') as f: for i in range: f.write(str(prefix)+str(i)+'\n') i += 1 else: if prefix == "mpfx": mpfx = ['050','052','053','054','055','057','058'] with open(fname, 'w') as f: for i in mpfx: for j in range: f.write(str(i)+str(j)+'\n') j += 1 else: lpfx = ['02','03','04','08','09','071','072','073','074','075','076','077','078'] with open(fname, 'w') as f: for i in lpfx: for j in range: f.write(str(i)+str(j)+'\n') j += 1 # COUNTER with open(fname, "r+") as f: buffer = mmap.mmap(f.fileno(), 0) lines = 0 read = buffer.readline while read(): lines += 1 if prefix == "mpfx": prefix = "all mobile prefixes" elif prefix == "lpfx": prefix = "all landline prefixes" banner() display('9', prefix) display('10', lines) main() def display(msg, *args): if msg == '1': banner(); print("\n\n\t\t\033[1;33mGenerating. this might take a while for long numbers..\033[1;m\n") if msg == '2': banner(); print("\n\n\t\t\033[1;33mGenerating...\033[1;m\n") if msg == '3': banner(); print("\n\n\t\t\033[1;31mTop of the range cannot be smaller than the minimum.\033[1;m\n") if msg == '4': banner(); print("\n\n\t\t\033[1;33mGenerating. this might take a while..\033[1;m\n") if msg == '5': banner(); print ("\n\n\t\t\033[1;31mUse only numbers\033[1;m\n") if msg == '6': banner(); print ("\n\n\t\t\033[1;31mUse only numbers or 'all'\033[1;m\n") if msg == '7': banner(); print("\n\n\t\t\033[1;31mQuitting.\033[1;m\n"); if msg == '8': banner(); print("\n\n\t\t\033[1;31mThis option doesn't exist.\033[1;m\n") if msg == '9': banner(); print("\n\n\t\t\033[1;32mSuccessfully generated a list of numbers starting with {}.\033[1;m".format(args[0])) if msg == '10': print("\n\t\t\033[1;32mCounted \033[1;34m{}\033[1;m \033[1;32mlines.\033[1;m".format(args[0])) if msg == '11': banner(); print("\n\n\t\t\033[1;31mAUT VIAM INVENIAM AUT FACIAM\033[1;m\n") if msg == '12': banner(); print("\n\t\tThis program runs in Python3 only.\n") if msg == '13': banner(); print("\n\t\tThis program requires superuser privileges.\n") def main(): if sys.version[0] != "3": display('12') sys.exit() elif os.getuid() != 0: display('13') sys.exit() else: user_input = input('''\ \033[1;38mSelect an option:\033[1;m \033[1;31m[>]\033[1;m \033[1;37m1)\033[1;m \033[1;32mGenerate a list of custom numbers\033[1;m \033[1;31m[>]\033[1;m \033[1;37m2)\033[1;m \033[1;32mGenerate a list of cellphone numbers\033[1;m \033[1;31m[>]\033[1;m \033[1;37m3)\033[1;m \033[1;32mGenerate a list of landline numbers\033[1;m \033[1;31m[>]\033[1;m \033[1;37m4)\033[1;m \033[1;31mQuit properly\033[1;m ''') if user_input == "1": banner(); process(user_input) elif user_input == "2": banner(); process(user_input) elif user_input == "3": banner(); process(user_input) elif user_input == "4": display('7'); time.sleep(1); os.system('cls' if os.name == 'nt' else 'printf "\033c"'); sys.exit() elif user_input == "404": banner(); webbrowser.open('https://www.youtube.com/watch?v=iRq7Muf6CKg'); display('11'); main() else: display('8'); time.sleep(2); reset() if __name__ == "__main__": reset()