Конкурс [ Пишем Hack-Tools ] - генератор дорков

explorer

explorer

Red Team
05.08.2018
788
1 697
Статья для участия в Конкурсе программистов

Генератор дорков

Сегодня мы разберём программу для генерации дорков, которые можно применять для взлома баз данных посредством SQL Injection через другой софт. В этой статье я рассказывал о создании дорок в другой программе, и как можно их применить.

Внешний вид программы в Windows

gendorks.png


Внешний вид программы в Kali Linux

gendork_linux.png


Графическая оболочка выполнена в Tkinter входящий в состав Python и не требующий отдельной установки. Программа занимает 276 строк. Написать её было не так непросто, но очень интересно.

Приступим к разбору:

Сначала мы импортируем все необходимые модули, и добавляем иконки в формате BASE64. Иконки я конвертировал тоже в своей программе

Python:
import random
import subprocess
from tkinter import *
from tkinter import filedialog as fd


icon = '''
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
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''
Создаём главное окно Tk и задаём ему размеры, а также запрет на изменение их. Записываем информацию о версии, название

Python:
root = Tk()
__version__ = 'Version: 1.0'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("664x350")
Пишем функцию которая будет выполняться при нажатии кнопки Open URLs. Собственно это открытие файла, подсчёт количества адресов и вставка этих данных в окошки.

Python:
def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass
Далее создаём функцию нормализатора, которая запускается при нажатии на кнопку Normal. Это самый сложный участок кода, здесь собрано сразу много действий.
Первое что здесь делается это обнуление окон подсчёта name, type, delete, ибо они могли быть уже не пустые. Для работы регулярных выражений создаём паттерны.
Паттерны помогут разбивать адрес, и извлекать из него нужные нам части. url_name.get передаёт загруженные адреса, которые мы разбиваем на 3 части и эти части запишем в 3 пустых списка. Но поскольку в адресах полно дубликатов, то с помощью set мы их удалим. После чистки от дублей, данные вставляем в соответствующие колонки посредством insert.

В заключительной части функции идёт ещё раз удаление подсчёта из окошек и вставка новых данных. Это нужно в качестве "защиты от дурака", когда пользователь нажмёт кнопку нормализации более одного раза. Кроме этого повторное нажатие может быть сделано намеренно, если юзер решил в последний момент подкинуть каких-нибудь параметров вручную. Тогда повторная обработка выполнится корректно и подсчёт будет правильным.

Python:
def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x[0:-2].replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)
Сердце программы :cool: функция генерации дорок. Вызывается при нажатии на кнопку Generate. Сначала здесь также идёт очистка колонок и вставка данных повторно. Вся магия заключается в тройном цикле for. Мы прогоняем через циклы все три колонки, попутно склеивая их значения в порядке расположения колонок. В конце мы чистим окно для дорок и вставляем их туда.

Python:
def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one[0:-2].replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two[0:-2].replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio[0:-2].replace('\n', ',').split(',')

    for x in a:
        for y in b:
            for z in c:
                dork = (x + y + z)
                dorks_name.insert(END, dork + '\n')
    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = len(s.split())
    count_dork.insert(END, line)
Самая короткая функция, вызывается при нажатии на кнопку Help. Она открывает файл справки.

Python:
def helpmy():
    subprocess.call(['notepad.exe', 'help.txt'])
А это самая понятная функция - очистка всех 10 окошек. Вызывается при нажатии на кнопку Clean.

Python:
def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
Функция рандомного перемешивания дорок. Выполняется при нажатии на кнопку Random. Поскольку random.shuffle нам весь список испортит и превратит в одну строку, то придётся восстановить запись в колонку прогоняя данные через цикл.

Python:
def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)
Совсем простенькая функция сохранения результата в файл. Вызывается при нажатии на кнопку Save.

Python:
def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass
С функциями закончили. Теперь перейдём к другим вещам. Иконки которые мы в самом начале записывали нужно как-то запустить. Для это воспользуемся PhotoImage где data принимает в качестве параметра имя переменной конкретной иконки.

Python:
savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)
Далее напишем виждеты Label то есть метка, это позволит нам сделать надписи над колонками Name, Type, Parameter, Dorks. Созданные метки разместим в нужном нам направлении согласно сетке и сторонам света, а также зададим необходимые отступы.


Python:
name_label = Label(text="Name :")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type :")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter :")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks :")
dork_label.grid(row=5, column=7, pady=5, sticky="sw")
Создадим кнопки, где с помощью command будем присваивать кнопке вызов необходимой функции.


Python:
open_button = Button(text="Open URLs", width=10, command=insert_url)
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=10, command=normal)
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=10, command=gen)
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="  Clean    ", width=10, image=broombtn, compound="left", command=clean)
gens_button.grid(row=6, column=0, padx=10, pady=12, sticky="swe")

help_button = Button(text="   Help     ", width=10, image=helpbtn, compound="left", command=helpmy)
help_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="  Random  ", width=10, image=mixbtn, compound="left", command=ran)
open_button.grid(row=6, column=7, pady=47, padx=32, sticky="swe")

save_button = Button(text="    Save       ", width=10, image=savebtn, compound="left", command=save)
save_button.grid(row=6, column=7, pady=12, padx=32, sticky="swe")
Теперь сделаем Entry - однострочное текстовое поле. В нужное поле выводятся подсчёты.


Python:
count_url = Entry(width=12, justify=CENTER)
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER)
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER)
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER)
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER)
count_dork.grid(row=5, column=7, pady=5, sticky="s")
И наконец-то :) в заключительной части кода создадим виджеты Text - многострочное текстовое поле. В эти виджеты вставляются полученные значения URL, Name, Type, Parameter, Dorks. Последняя строка root.mainloop() является обязательной, без неё оболочка не запустится.

Python:
url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=4, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=4, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=4, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=8)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()
Поскольку Tkinter использует не пиксели а знаки, то размеры очень сильно зависят от размера текста, который используется в программе. В этой программе использовался Courier поскольку шрифт по умолчания был слишком большим и не очень подходил. Из-за того что в Windows и Linux используется разный подход к отображению, для корректного вида программы в обоих ОС пришлось сделать 2 версии. Они незначительно отличаются, поправлены только размеры в 3-х местах и разный способ вызова справки.

Python:
import random
import subprocess
from tkinter import *
from tkinter import filedialog as fd


icon = '''
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
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''

root = Tk()
__version__ = 'Version: 1.0'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("664x350")


def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass


def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x[0:-2].replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)


def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one[0:-2].replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two[0:-2].replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio[0:-2].replace('\n', ',').split(',')

    for x in a:
        for y in b:
            for z in c:
                dork = (x + y + z)
                dorks_name.insert(END, dork + '\n')
    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = len(s.split())
    count_dork.insert(END, line)


def helpmy():
    subprocess.call(['notepad.exe', 'help.txt'])


def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)


def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)


def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass


savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)

name_label = Label(text="Name :")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type :")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter :")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks :")
dork_label.grid(row=5, column=7, pady=5, sticky="sw")

open_button = Button(text="Open URLs", width=10, command=insert_url)
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=10, command=normal)
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=10, command=gen)
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="  Clean    ", width=10, image=broombtn, compound="left", command=clean)
gens_button.grid(row=6, column=0, padx=10, pady=12, sticky="swe")

help_button = Button(text="   Help     ", width=10, image=helpbtn, compound="left", command=helpmy)
help_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="  Random  ", width=10, image=mixbtn, compound="left", command=ran)
open_button.grid(row=6, column=7, pady=47, padx=32, sticky="swe")

save_button = Button(text="    Save       ", width=10, image=savebtn, compound="left", command=save)
save_button.grid(row=6, column=7, pady=12, padx=32, sticky="swe")

count_url = Entry(width=12, justify=CENTER)
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER)
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER)
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER)
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER)
count_dork.grid(row=5, column=7, pady=5, sticky="s")

url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=4, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=4, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=4, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=8)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()

Python:
import random
import subprocess as sp
from tkinter import *
from tkinter import filedialog as fd


icon = '''
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
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''

root = Tk()
__version__ = 'Version: 1.0'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("686x354")


def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass


def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x[0:-2].replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)


def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one[0:-2].replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two[0:-2].replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio[0:-2].replace('\n', ',').split(',')

    for x in a:
        for y in b:
            for z in c:
                dork = (x + y + z)
                dorks_name.insert(END, dork + '\n')
    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = len(s.split())
    count_dork.insert(END, line)


def helpmy():
    programName = "leafpad"
    fileName = "help.txt"
    sp.Popen([programName, fileName])


def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)


def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)


def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass


savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)

name_label = Label(text="Name :")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type :")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter :")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks :")
dork_label.grid(row=5, column=7, pady=5, sticky="sw")

open_button = Button(text="Open URLs", width=10, command=insert_url)
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=10, command=normal)
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=10, command=gen)
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="  Clean    ", width=10, image=broombtn, compound="left", command=clean)
gens_button.grid(row=6, column=0, padx=10, pady=12, sticky="swe")

help_button = Button(text="   Help     ", width=10, image=helpbtn, compound="left", command=helpmy)
help_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="  Random  ", width=10, image=mixbtn, compound="left", command=ran)
open_button.grid(row=6, column=7, pady=47, padx=22, sticky="swe")

save_button = Button(text="    Save       ", width=10, image=savebtn, compound="left", command=save)
save_button.grid(row=6, column=7, pady=12, padx=22, sticky="swe")

count_url = Entry(width=12, justify=CENTER)
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER)
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER)
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER)
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER)
count_dork.grid(row=5, column=7, pady=5, sticky="s")

url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=4, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=4, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=4, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=8)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()

Файл справки + оба варианта программы в формате py


Для работы программы требуется установленный Python3. Если у вас он не установлен, то очень подробная инструкция.
Запуск программы в Windows и Linux из командной строки python /путь к программе/ gendorks.py или python3 /путь к программе/ gendorks.py
Название файла может быть произвольным с расширением py
В Windows так же запускается двойным кликом мышки по файлу.
 
Последнее редактирование:
The Codeby

The Codeby

ООО Кодебай
30.12.2015
3 511
4 962
Перезалейте пожалуйста картинки на форум
 
explorer

explorer

Red Team
05.08.2018
788
1 697
Перезалейте пожалуйста картинки на форум
Я их всегда заливаю на форум. Если откроете картинку в новом окне то в строке браузера увидите что они находятся на форуме. Что-то на форуме не так... Окно редактирования в несколько раз больше экрана и собственно даже кнопки сохранения отредактированного текста не наблюдаю.

А в этом сообщении кстати всё корректно. А в том кнопку нашёл где-то в дибунах :( Вот как это выглядит

Безымянный.png
 
Последнее редактирование:
explorer

explorer

Red Team
05.08.2018
788
1 697
Может тему пересоздать? А то глюки какие-то.
 
  • Нравится
Реакции: krypt0n
K

krypt0n

Well-known member
12.11.2017
138
66
Админ просто увидел что на картинках нет логотипа codeby. Значит плагин просто глюканул.
софт шикарен . работает быстро еще и рандомизирует) еще б операторы прикрутить чтоб можно было свои добавлять и запрос и вообще огонь!
 
  • Нравится
Реакции: explorer
explorer

explorer

Red Team
05.08.2018
788
1 697
К сожалению в связи с откатом форума часть материалов и обсуждений пропала. Ну что ж, мочало - начинаем всё сначала! :)


Представляю версию 1.1

Что нового:

* Изменена немного сама оболочка
* Добавлен оператор inurl
* Добавлен оператор intext
* Добавлен оператор intitle


Внешний вид программы в Windows

gendorks1.png


Внешний вид программы в Kali Linux

gendorks_linux.png


Теперь вы можете сохранять дорки не в 1 варианте а в восьми! Вместо ***** читайте - ваш запрос добавленный в поле.

Примеры:

1 FlashGames.php?kat=
2 inurl:FlashGames.php?kat=
3 FlashGames.php?kat= intext:*****
4 FlashGames.php?kat= intitle:*****
5 inurl:FlashGames.php?kat= intext:*****
6 inurl:FlashGames.php?kat= intitle:*****
7 inurl:FlashGames.php?kat= intitle:***** intext:*****
8 FlashGames.php?kat= intitle:***** intext:*****

Для того чтобы получить разные варианты дорок, программу перезагружать не надо! Просто отметьте/снимите отметку с нужного чекбаттона или несколько, и нажмите кнопку генерации.

По скачать программы в формате py для Windows и Linux +файл справки
 
  • Нравится
Реакции: alЬt и The Codeby
W

webvsoft

Member
03.11.2018
24
7
Возможно, не так важно, но нет в теме отметки, что генератор заводится от python3, пришлось смотреть исходники почему Tkinter дал осечку на python - кто только начинает изучать питон, могут растроится на этом участке. :)
 
explorer

explorer

Red Team
05.08.2018
788
1 697
Возможно, не так важно, но нет в теме отметки, что генератор заводится от python3, пришлось смотреть исходники почему Tkinter дал осечку на python - кто только начинает изучать питон, могут растроится на этом участке. :)
Всё было написано в самом конце статьи, но с откатом пропало. Придётся по новой дописать.

P.S. Сделано

Скоро в прокате v 1.2 ;)
 
Последнее редактирование:
  • Нравится
Реакции: webvsoft
explorer

explorer

Red Team
05.08.2018
788
1 697
Встречайте V 1.2

Что нового:

* Добавлен оператор site
* Изменён способ подсчёта элементов в колонках 'Name', 'Type', 'Parameter'
* При использовании оператора inurl дорки заключаются в двойные кавычки
* Кнопка Clean теперь убирает и отметки с checkbutton


Теперь вы можете сохранять дорки в 16-ти вариантах!

Примеры генерации:


1 FlashGames.asp?kat=
2 inurl:"FlashGames.asp?kat="
3 inurl:"FlashGames.asp?kat=" intext:game
4 inurl:"FlashGames.asp?kat=" intitle:game
5 FlashGames.asp?kat= intext:game
6 FlashGames.asp?kat= intitle:game
7 FlashGames.asp?kat= intitle:game intext:game
8 inurl:"FlashGames.asp?kat=" intitle:game intext:game
9 site:com FlashGames.asp?kat=
10 site:com inurl:"FlashGames.asp?kat="
11 site:com inurl:"FlashGames.asp?kat=" intext:game
12 site:com inurl:"FlashGames.asp?kat=" intitle:game
13 site:com FlashGames.asp?kat= intext:game
14 site:com FlashGames.asp?kat= intitle:game
15 site:com FlashGames.asp?kat= intitle:game intext:game
16 site:com inurl:"FlashGames.asp?kat=" intitle:game intext:game

На самом деле вариантов ещё больше - в полях для intitle и intext вы вольны сами свой запрос писать в кавычках или без ;)

Внешний вид программы в Windows

gendorks.png


Внешний вид программы в Kali Linux

gendorks_linux.png


Проделана большая работа, код программы вырос до 460 строк с 276 первоначальных.
Спасибо всем кто принимает участие в обсуждении программы. Ваши отзывы и пожелания помогают сделать программу лучше :)

Python:
import random
import subprocess
from tkinter import *
from tkinter import filedialog as fd


icon = '''
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYtSURBVHjanJdLrF11FcZ/a/3/e+97bgGl8hhYaaLE1IhG1MQEMGJVfEFggIPGYJw5UOLAgQkafCQYE4kjp0YngkCCBmI0wWeY6AAwkqJpbNVUkCZepaW95+79f3wOzpO7b5Ne9+SenHvWt9fjW+tby+65/n6A6uzrkYHkXz8R7r4/4ZmlveZ/7SKW1UAVp1a3fPQF256UkKMuarDHk6a9zPtJbtNV2STrO4b2Uq2rU/qMZ1eTCJdZCkbfuGxXCFwkFNnaxxK2TX1r0HcL40sLRcLpO1JjOVBCaqpfIoBkBpCjLEe2Tcjmfgmg7HI97AWC8Oqg3JigBErITo1Un71BhuQgI1lk8WX1shvQqmULVGdoc75w+szWua3/vHKhmHxy8NrD1x+6siOpserTCUOb425vTEP0Uputl589fuLEi+c8Y0YFzCmEyXtv+tA7rqZSY984TCe7EbKkHQ2PzKjY4B6btokRC2078/eN9/72FamXVFS060HqpR3pLjYnwQJhTupm5qC30QN88vHzGgZp0AggKxWp7jxzBQRowNyDg4UFlnUBjv55UB47INRLNanWzzXEzndz0HEHQkPzgEqvPAaoKlIpeooARMzB5yyYccbAaRruPje2F4sPdXgXYZ2HHR0EcMMgQmc3ny9VVVJKY4CiL02MZsmTgBGcsAGxCRACbbxFVVlJUhoBTPUY4TU0m3d44wARb2j5vDRIuaiOAJSPh2ad+k4bu0iE1uehWWuPaUacPUKYnrkcX/DMbGP26hYH3MyMFsI7z864sIcHevVwsyqhc+Ovfvjl266iw3xW0kjXYo+oJGlFiDWAs28zD8EWDDxaLkh/efTODS6DzRkznfDRqcpaCtbKmPN13PuVWbTmzgdznRZJxz/j3tAQPeINGy8NZa0IawA6dfOTeoiZCxa4oxSVWlKuTx5i0cUe+JmK6opQvurrg4/fzr9WTDIDM4sabv/523Ow+X/8ZL2Ahbwq1tKgu2a7ulZpNDCM0E1v+PF1ZTHk6r/tACnFEUCpG6nzrdc4AKDEpNzwrRW/Qv1bik0ZAQRoxD8uW2tGCbCWbefYnbOmkuIz93wiWWUE0AOFV8+vaaQADeo3OV1vm8em/MTDW0q+ZGxcNZ+sy+fXx4EBaukox/7YIhOIYPn1wwHlZrcHFVHs1EjWiuijT19diF6Rlw2GZlwFPNkrZ6lzoZYhwB08WV2WLZZ6XVu6cQ4cRXvpvyMVslSa5uXVnMgTPxJ8YA8PMvb3uoeSBU5spVXap+F9xXwMUAkDJ8dSWFvSc1u2JFgwbio1jgEMhz+Rxh6cbX6yLJZZndxwZH0bWQEkuvL82Nz1uhd+GtKyR2z7i+tLxnovwMunGC9rfX2gr9EXv7Ejn5pWW24BrA0UDb+f/wYscPes6bf1o6XcYWb8oGbtNVCkqb5HXCiScZeykqb69RURAw/gtHw45TTsBZBV9FlrF4PAuaMkqeoXV2KzeRYCxM0/aJDqaqKsPKjafos5mJmZBz6i7TTd+c4BNghABzSRh1X69ZG4BjDV8YWwmLlzS5J+836LMDEDPBg8mLOU1obyGsCOvk8zJ5KZ+a39Q7cZbnETIESi8bW6I5WqusdQTaqfXvLQDK69hm5e5s15bb6rXlU7GvbShawXDxtzZTdwDtgscsCt6/zwU5rOgu/XVpUVQH6a4MQwy+NMSzFwo6GBY/+sRUUaalUd9grhvhhmb7wcDsyTBuYWA5Mbn95RqlUXXzDUv4eWg0e/8ejx574wq5yF2LSAbX7sCZ1X30ulXhQg/bJ5932/29KgqvLsV9/cuoUA+KGPP/iClKRBKuMla9XoJ0/fqhKKmqJg9KdOnzwzTK4++Ka3vgFK7vrWqHv02hKgmJMjOSo3XAgbFAJUs2pKrZUAtTSMd+XVgdG3li3Mb4ocs5yKzdUWqiMbn0ZLgPn+X72YIYXVZZDKBjsbtUYgNRcNAYExtPPzYaHb1ZfnBCn4+DpcPzjY9+kowwtWyNT9mlcyxSgeegWa3vcL4H1DUB9GZ9+lB1BTh4pH6Dsf9p0EG7zrIf4/p++8aJZjCdPQfaAQs+07B6YSSw3fDoeeP+q41f16UN3x8M2//m8AG+b8mQv60TAAAAAASUVORK5CYII=
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''

root = Tk()
__version__ = 'Version: 1.2'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("664x454")


def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass


def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x.rstrip('\n').replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = s.count('\n') - 1
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = s.count('\n') - 1
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = s.count('\n') - 1
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)


def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one.rstrip('\n').replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two.rstrip('\n').replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio.rstrip('\n').replace('\n', ',').split(',')

    if site.get() == 1 and intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and inurl.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif inurl.get() == 1:
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    else:
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z)
                    dorks_name.insert(END, dork + '\n')

    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = s.count('\n') - 1
    count_dork.insert(END, line)


def helpmy():
    subprocess.call(['notepad.exe', 'help.txt'])


def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    intext_entry.delete('0', END)
    intitle_entry.delete('0', END)
    site_entry.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    site.set(False)
    inurl.set(False)
    intext.set(False)
    intitle.set(False)


def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)


def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass


savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)

name_label = Label(text="Name :")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type :")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter :")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks :")
dork_label.grid(row=8, column=7, pady=5, sticky="sw")

open_button = Button(text="Open URLs", width=10, command=insert_url)
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=10, command=normal)
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=10, command=gen)
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="  Clean    ", width=10, image=broombtn, compound="left", command=clean)
gens_button.grid(row=6, column=0, padx=10, pady=12, sticky="swe")

help_button = Button(text="   Help     ", width=10, image=helpbtn, compound="left", command=helpmy)
help_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="  Random  ", width=10, image=mixbtn, compound="left", command=ran)
open_button.grid(row=9, column=7, padx=32, sticky="swe")

save_button = Button(text="    Save       ", width=10, image=savebtn, compound="left", command=save)
save_button.grid(row=10, column=7, padx=32, sticky="swe")

count_url = Entry(width=12, justify=CENTER)
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER)
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER)
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER)
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER)
count_dork.grid(row=8, column=7, pady=5, sticky="s")

site_entry = Entry()
site_entry.grid(row=9, column=1, pady=5, columnspan=5, sticky="we")

intext_entry = Entry()
intext_entry.grid(row=10, column=1, pady=5, columnspan=5, sticky="we")

intitle_entry = Entry()
intitle_entry.grid(row=11, column=1, pady=5, columnspan=5, sticky="we")

url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=7, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=7, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=7, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=8)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

inurl = BooleanVar()
site = BooleanVar()
intext = BooleanVar()
intitle = BooleanVar()
inurls = Checkbutton(root, text='inurl:', pady=5, variable=inurl)
sites = Checkbutton(root, text='site:', variable=site)
intexts = Checkbutton(root, text='intext:', variable=intext)
intitles = Checkbutton(root, text='intitle:', variable=intitle)
inurls.grid(row=8, column=0, padx=10, sticky='nw')
sites.grid(row=9, column=0, padx=10, sticky='nw')
intexts.grid(row=10, column=0, padx=10, sticky='nw')
intitles.grid(row=11, column=0, padx=10, sticky='nw')

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()

Python:
import random
import subprocess as sp
from tkinter import *
from tkinter import filedialog as fd


icon = '''
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
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''

root = Tk()
__version__ = 'Version: 1.2'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("674x454")



def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass


def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x.rstrip('\n').replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = s.count('\n') - 1
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = s.count('\n') - 1
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = s.count('\n') - 1
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)


def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one.rstrip('\n').replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two.rstrip('\n').replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio.rstrip('\n').replace('\n', ',').split(',')

    if site.get() == 1 and intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and inurl.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif inurl.get() == 1:
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    else:
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z)
                    dorks_name.insert(END, dork + '\n')

    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = s.count('\n') - 1
    count_dork.insert(END, line)


def helpmy(): 
    programName = "leafpad"
    fileName = "help.txt"
    sp.Popen([programName, fileName])


def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    intext_entry.delete('0', END)
    intitle_entry.delete('0', END)
    site_entry.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    site.set(False)
    inurl.set(False)
    intext.set(False)
    intitle.set(False)


def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)


def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass


savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)

name_label = Label(text="Name:", font="Courier 9")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type:", font="Courier 9")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter:", font="Courier 9")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks:", font="Courier 9")
dork_label.grid(row=8, column=7, pady=5, sticky="sw")

open_button = Button(text="Open URLs", width=10, command=insert_url, font="Courier 9")
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=10, command=normal, font="Courier 9")
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=10, command=gen, font="Courier 9")
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text=" Clean ", width=10, image=broombtn, compound="left", command=clean, font="Courier 9")
gens_button.grid(row=6, column=0, padx=10, pady=12, sticky="swe")

help_button = Button(text=" Help ", width=10, image=helpbtn, compound="left", command=helpmy, font="Courier 9")
help_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="Random", width=10, image=mixbtn, compound="left", command=ran, font="Courier 9")
open_button.grid(row=9, column=7, padx=32, sticky="swe")

save_button = Button(text=" Save ", width=10, image=savebtn, compound="left", command=save, font="Courier 9")
save_button.grid(row=10, column=7, padx=32, sticky="swe")

count_url = Entry(width=12, justify=CENTER, font="Courier 9")
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER, font="Courier 9")
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER, font="Courier 9")
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER, font="Courier 9")
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER, font="Courier 9")
count_dork.grid(row=8, column=7, pady=5, sticky="s")

site_entry = Entry()
site_entry.grid(row=9, column=1, pady=5, columnspan=5, sticky="we")

intext_entry = Entry()
intext_entry.grid(row=10, column=1, pady=5, columnspan=5, sticky="we")

intitle_entry = Entry()
intitle_entry.grid(row=11, column=1, pady=5, columnspan=5, sticky="we")

url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=7, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=7, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=7, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=8)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

inurl = BooleanVar()
site = BooleanVar()
intext = BooleanVar()
intitle = BooleanVar()
inurls = Checkbutton(root, text='inurl:', variable=inurl, font="Courier 9")
sites = Checkbutton(root, text='site:', variable=site, font="Courier 9")
intexts = Checkbutton(root, text='intext:', variable=intext, font="Courier 9")
intitles = Checkbutton(root, text='intitle:', variable=intitle, font="Courier 9")
inurls.grid(row=8, column=0, padx=10, sticky='nw')
sites.grid(row=9, column=0, padx=10, sticky='nw')
intexts.grid(row=10, column=0, padx=10, sticky='nw')
intitles.grid(row=11, column=0, padx=10, sticky='nw')

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()

Файл справки + оба варианта программы в формате py
 
explorer

explorer

Red Team
05.08.2018
788
1 697
Обновлённая версия - 1.3

Что нового:

* В версии 1.3 добавлена возможность вписать любые операторы в поле free
* Внесены небольшие изменения в оболочку под Windows - закругленные кнопки, подсветка кнопок и чекбоксов при наведении мышки


Внимание: Если выбран чекбокс free, то другие отмеченные чекбоксы игнорируются!

В версии 1.2 при выборе чекбокса inurl было сделано принудительное заключение дорок в кавычки. Если вам не нужен строгий запрос, но оператор inurl нужен, просто впишите его в поле free.

Теперь разнообразие дорок ограничено только вашей фантазией и знанием операторов поисковых машин. В поле free можно например вбить allinurl: allintitle: allintext: lang:it filetype:txt и другое. Можно писать сразу несколько операторов, не забывая ставить пробелы, чтобы всё склеилось корректно.

Внешний вид программы в Windows

gendorks.png


Внешний вид программы в Kali Linux

gendorks_linux.png


Python:
import random
import subprocess
from tkinter import *
from tkinter.ttk import Button, Entry, Checkbutton
from tkinter import filedialog as fd


icon = '''
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYtSURBVHjanJdLrF11FcZ/a/3/e+97bgGl8hhYaaLE1IhG1MQEMGJVfEFggIPGYJw5UOLAgQkafCQYE4kjp0YngkCCBmI0wWeY6AAwkqJpbNVUkCZepaW95+79f3wOzpO7b5Ne9+SenHvWt9fjW+tby+65/n6A6uzrkYHkXz8R7r4/4ZmlveZ/7SKW1UAVp1a3fPQF256UkKMuarDHk6a9zPtJbtNV2STrO4b2Uq2rU/qMZ1eTCJdZCkbfuGxXCFwkFNnaxxK2TX1r0HcL40sLRcLpO1JjOVBCaqpfIoBkBpCjLEe2Tcjmfgmg7HI97AWC8Oqg3JigBErITo1Un71BhuQgI1lk8WX1shvQqmULVGdoc75w+szWua3/vHKhmHxy8NrD1x+6siOpserTCUOb425vTEP0Uputl589fuLEi+c8Y0YFzCmEyXtv+tA7rqZSY984TCe7EbKkHQ2PzKjY4B6btokRC2078/eN9/72FamXVFS060HqpR3pLjYnwQJhTupm5qC30QN88vHzGgZp0AggKxWp7jxzBQRowNyDg4UFlnUBjv55UB47INRLNanWzzXEzndz0HEHQkPzgEqvPAaoKlIpeooARMzB5yyYccbAaRruPje2F4sPdXgXYZ2HHR0EcMMgQmc3ny9VVVJKY4CiL02MZsmTgBGcsAGxCRACbbxFVVlJUhoBTPUY4TU0m3d44wARb2j5vDRIuaiOAJSPh2ad+k4bu0iE1uehWWuPaUacPUKYnrkcX/DMbGP26hYH3MyMFsI7z864sIcHevVwsyqhc+Ovfvjl266iw3xW0kjXYo+oJGlFiDWAs28zD8EWDDxaLkh/efTODS6DzRkznfDRqcpaCtbKmPN13PuVWbTmzgdznRZJxz/j3tAQPeINGy8NZa0IawA6dfOTeoiZCxa4oxSVWlKuTx5i0cUe+JmK6opQvurrg4/fzr9WTDIDM4sabv/523Ow+X/8ZL2Ahbwq1tKgu2a7ulZpNDCM0E1v+PF1ZTHk6r/tACnFEUCpG6nzrdc4AKDEpNzwrRW/Qv1bik0ZAQRoxD8uW2tGCbCWbefYnbOmkuIz93wiWWUE0AOFV8+vaaQADeo3OV1vm8em/MTDW0q+ZGxcNZ+sy+fXx4EBaukox/7YIhOIYPn1wwHlZrcHFVHs1EjWiuijT19diF6Rlw2GZlwFPNkrZ6lzoZYhwB08WV2WLZZ6XVu6cQ4cRXvpvyMVslSa5uXVnMgTPxJ8YA8PMvb3uoeSBU5spVXap+F9xXwMUAkDJ8dSWFvSc1u2JFgwbio1jgEMhz+Rxh6cbX6yLJZZndxwZH0bWQEkuvL82Nz1uhd+GtKyR2z7i+tLxnovwMunGC9rfX2gr9EXv7Ejn5pWW24BrA0UDb+f/wYscPes6bf1o6XcYWb8oGbtNVCkqb5HXCiScZeykqb69RURAw/gtHw45TTsBZBV9FlrF4PAuaMkqeoXV2KzeRYCxM0/aJDqaqKsPKjafos5mJmZBz6i7TTd+c4BNghABzSRh1X69ZG4BjDV8YWwmLlzS5J+836LMDEDPBg8mLOU1obyGsCOvk8zJ5KZ+a39Q7cZbnETIESi8bW6I5WqusdQTaqfXvLQDK69hm5e5s15bb6rXlU7GvbShawXDxtzZTdwDtgscsCt6/zwU5rOgu/XVpUVQH6a4MQwy+NMSzFwo6GBY/+sRUUaalUd9grhvhhmb7wcDsyTBuYWA5Mbn95RqlUXXzDUv4eWg0e/8ejx574wq5yF2LSAbX7sCZ1X30ulXhQg/bJ5932/29KgqvLsV9/cuoUA+KGPP/iClKRBKuMla9XoJ0/fqhKKmqJg9KdOnzwzTK4++Ka3vgFK7vrWqHv02hKgmJMjOSo3XAgbFAJUs2pKrZUAtTSMd+XVgdG3li3Mb4ocs5yKzdUWqiMbn0ZLgPn+X72YIYXVZZDKBjsbtUYgNRcNAYExtPPzYaHb1ZfnBCn4+DpcPzjY9+kowwtWyNT9mlcyxSgeegWa3vcL4H1DUB9GZ9+lB1BTh4pH6Dsf9p0EG7zrIf4/p++8aJZjCdPQfaAQs+07B6YSSw3fDoeeP+q41f16UN3x8M2//m8AG+b8mQv60TAAAAAASUVORK5CYII=
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''

root = Tk()
__version__ = 'Version: 1.3'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("674x484")


def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass


def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x.rstrip('\n').replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = s.count('\n') - 1
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = s.count('\n') - 1
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = s.count('\n') - 1
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)


def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one.rstrip('\n').replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two.rstrip('\n').replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio.rstrip('\n').replace('\n', ',').split(',')

    if free.get() == 1:
        q = [free_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (q + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and inurl.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif inurl.get() == 1:
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    else:
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z)
                    dorks_name.insert(END, dork + '\n')

    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = s.count('\n') - 1
    count_dork.insert(END, line)


def helpmy():
    subprocess.call(['notepad.exe', 'help.txt'])


def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    intext_entry.delete('0', END)
    intitle_entry.delete('0', END)
    site_entry.delete('0', END)
    free_entry.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    site.set(False)
    inurl.set(False)
    intext.set(False)
    intitle.set(False)
    free.set(False)


def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)


def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass


savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)

name_label = Label(text="Name :")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type :")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter :")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks :")
dork_label.grid(row=8, column=7, pady=5, sticky="sw")

open_button = Button(text="Open URLs", width=14, command=insert_url)
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=14, command=normal)
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=14, command=gen)
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="  Clean    ", width=10, image=broombtn, compound="left", command=clean)
gens_button.grid(row=6, column=0, padx=10, pady=12, sticky="swe")

help_button = Button(text="   Help     ", width=10, image=helpbtn, compound="left", command=helpmy)
help_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="  Random  ", width=10, image=mixbtn, compound="left", command=ran)
open_button.grid(row=9, column=7, padx=32, sticky="swe")

save_button = Button(text="    Save       ", width=10, image=savebtn, compound="left", command=save)
save_button.grid(row=10, column=7, padx=32, sticky="swe")

count_url = Entry(width=14, justify=CENTER)
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER)
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER)
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER)
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER)
count_dork.grid(row=8, column=7, pady=5, sticky="s")

site_entry = Entry()
site_entry.grid(row=9, column=1, pady=5, columnspan=5, sticky="we")

intext_entry = Entry()
intext_entry.grid(row=10, column=1, pady=5, columnspan=5, sticky="we")

intitle_entry = Entry()
intitle_entry.grid(row=11, column=1, pady=5, columnspan=5, sticky="we")

free_entry = Entry()
free_entry.grid(row=12, column=1, pady=5, columnspan=5, sticky="we")


url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=7, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=7, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=7, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=8)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

inurl = BooleanVar()
site = BooleanVar()
intext = BooleanVar()
intitle = BooleanVar()
free = BooleanVar()
inurls = Checkbutton(root, text='inurl:', variable=inurl)
sites = Checkbutton(root, text='site:', variable=site)
intexts = Checkbutton(root, text='intext:', variable=intext)
intitles = Checkbutton(root, text='intitle:', variable=intitle)
frees = Checkbutton(root, text='free:', variable=free)
inurls.grid(row=8, column=0, padx=10, sticky='nw')
sites.grid(row=9, column=0, padx=10, sticky='nw')
intexts.grid(row=10, column=0, padx=10, sticky='nw')
intitles.grid(row=11, column=0, padx=10, sticky='nw')
frees.grid(row=12, column=0, padx=10, sticky='nw')

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()

Python:
import random
import subprocess as sp
from tkinter import *
from tkinter import filedialog as fd


icon = '''
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
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''

root = Tk()
__version__ = 'Version: 1.3'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("696x506")


def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass


def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x.rstrip('\n').replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = s.count('\n') - 1
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = s.count('\n') - 1
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = s.count('\n') - 1
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)


def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one.rstrip('\n').replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two.rstrip('\n').replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio.rstrip('\n').replace('\n', ',').split(',')

    if free.get() == 1:
        q = [free_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (q + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and inurl.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif inurl.get() == 1:
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    else:
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z)
                    dorks_name.insert(END, dork + '\n')

    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = s.count('\n') - 1
    count_dork.insert(END, line)


def helpmy():   
    programName = "leafpad"
    fileName = "help.txt"
    sp.Popen([programName, fileName])


def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    intext_entry.delete('0', END)
    intitle_entry.delete('0', END)
    site_entry.delete('0', END)
    free_entry.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    site.set(False)
    inurl.set(False)
    intext.set(False)
    intitle.set(False)
    free.set(False)


def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)


def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass


savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)

name_label = Label(text="Name :")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type :")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter :")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks :")
dork_label.grid(row=8, column=7, pady=5, sticky="sw")

open_button = Button(text="Open URLs", width=10, command=insert_url)
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=10, command=normal)
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=10, command=gen)
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="  Clean    ", width=10, image=broombtn, compound="left", command=clean)
gens_button.grid(row=6, column=0, padx=10, pady=12, sticky="swe")

help_button = Button(text="   Help     ", width=10, image=helpbtn, compound="left", command=helpmy)
help_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="  Random  ", width=14, image=mixbtn, compound="left", command=ran)
open_button.grid(row=9, column=7, padx=22, sticky="swe")

save_button = Button(text="    Save       ", width=14, image=savebtn, compound="left", command=save)
save_button.grid(row=10, column=7, padx=22, sticky="swe")

count_url = Entry(width=12, justify=CENTER)
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER)
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER)
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER)
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER)
count_dork.grid(row=8, column=7, pady=5, sticky="s")

site_entry = Entry()
site_entry.grid(row=9, column=1, pady=5, columnspan=5, sticky="we")

intext_entry = Entry()
intext_entry.grid(row=10, column=1, pady=5, columnspan=5, sticky="we")

intitle_entry = Entry()
intitle_entry.grid(row=11, column=1, pady=5, columnspan=5, sticky="we")

free_entry = Entry()
free_entry.grid(row=12, column=1, pady=5, columnspan=5, sticky="we")


url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=7, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=7, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=7, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=8)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=8)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

inurl = BooleanVar()
site = BooleanVar()
intext = BooleanVar()
intitle = BooleanVar()
free = BooleanVar()
inurls = Checkbutton(root, text='inurl:', variable=inurl)
sites = Checkbutton(root, text='site:', variable=site)
intexts = Checkbutton(root, text='intext:', variable=intext)
intitles = Checkbutton(root, text='intitle:', variable=intitle)
frees = Checkbutton(root, text='free:', variable=free)
inurls.grid(row=8, column=0, padx=10, sticky='nw')
sites.grid(row=9, column=0, padx=10, sticky='nw')
intexts.grid(row=10, column=0, padx=10, sticky='nw')
intitles.grid(row=11, column=0, padx=10, sticky='nw')
frees.grid(row=12, column=0, padx=10, sticky='nw')

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()

Файл справки + оба варианта программы в формате py
 
explorer

explorer

Red Team
05.08.2018
788
1 697
Небольшое обновление v 1.3.1

Уже не собирался с этой программой ничего делать, так как считаю что из неё выжал уже всё. Нет, конечно любой софт можно пилить бесконечно, например сюда можно прикрутить парсер ссылок и т.п. Но это уже получится не генератор дорков, а нечто большее.

Но вот сегодня меня посетило вдохновение и решил добавить пару скинов для проги.
Внимание! Эта версия только для Windows!

По умолчанию идёт загрузка с темой XPnative. Чтобы сменить скин нужно переключить значение радиокнопки и нажать на кнопку Change skin
Всего 3 скина.

XPnative skin

skin1.png


Clam skin

skin2.png


И для застрявших в Windows 98 ) Default skin

skin3.png


Python:
import random
import subprocess
from tkinter import *
from ttk import Style, Button, Entry, Scrollbar
from tkinter import filedialog as fd


icon = '''
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYtSURBVHjanJdLrF11FcZ/a/3/e+97bgGl8hhYaaLE1IhG1MQEMGJVfEFggIPGYJw5UOLAgQkafCQYE4kjp0YngkCCBmI0wWeY6AAwkqJpbNVUkCZepaW95+79f3wOzpO7b5Ne9+SenHvWt9fjW+tby+65/n6A6uzrkYHkXz8R7r4/4ZmlveZ/7SKW1UAVp1a3fPQF256UkKMuarDHk6a9zPtJbtNV2STrO4b2Uq2rU/qMZ1eTCJdZCkbfuGxXCFwkFNnaxxK2TX1r0HcL40sLRcLpO1JjOVBCaqpfIoBkBpCjLEe2Tcjmfgmg7HI97AWC8Oqg3JigBErITo1Un71BhuQgI1lk8WX1shvQqmULVGdoc75w+szWua3/vHKhmHxy8NrD1x+6siOpserTCUOb425vTEP0Uputl589fuLEi+c8Y0YFzCmEyXtv+tA7rqZSY984TCe7EbKkHQ2PzKjY4B6btokRC2078/eN9/72FamXVFS060HqpR3pLjYnwQJhTupm5qC30QN88vHzGgZp0AggKxWp7jxzBQRowNyDg4UFlnUBjv55UB47INRLNanWzzXEzndz0HEHQkPzgEqvPAaoKlIpeooARMzB5yyYccbAaRruPje2F4sPdXgXYZ2HHR0EcMMgQmc3ny9VVVJKY4CiL02MZsmTgBGcsAGxCRACbbxFVVlJUhoBTPUY4TU0m3d44wARb2j5vDRIuaiOAJSPh2ad+k4bu0iE1uehWWuPaUacPUKYnrkcX/DMbGP26hYH3MyMFsI7z864sIcHevVwsyqhc+Ovfvjl266iw3xW0kjXYo+oJGlFiDWAs28zD8EWDDxaLkh/efTODS6DzRkznfDRqcpaCtbKmPN13PuVWbTmzgdznRZJxz/j3tAQPeINGy8NZa0IawA6dfOTeoiZCxa4oxSVWlKuTx5i0cUe+JmK6opQvurrg4/fzr9WTDIDM4sabv/523Ow+X/8ZL2Ahbwq1tKgu2a7ulZpNDCM0E1v+PF1ZTHk6r/tACnFEUCpG6nzrdc4AKDEpNzwrRW/Qv1bik0ZAQRoxD8uW2tGCbCWbefYnbOmkuIz93wiWWUE0AOFV8+vaaQADeo3OV1vm8em/MTDW0q+ZGxcNZ+sy+fXx4EBaukox/7YIhOIYPn1wwHlZrcHFVHs1EjWiuijT19diF6Rlw2GZlwFPNkrZ6lzoZYhwB08WV2WLZZ6XVu6cQ4cRXvpvyMVslSa5uXVnMgTPxJ8YA8PMvb3uoeSBU5spVXap+F9xXwMUAkDJ8dSWFvSc1u2JFgwbio1jgEMhz+Rxh6cbX6yLJZZndxwZH0bWQEkuvL82Nz1uhd+GtKyR2z7i+tLxnovwMunGC9rfX2gr9EXv7Ejn5pWW24BrA0UDb+f/wYscPes6bf1o6XcYWb8oGbtNVCkqb5HXCiScZeykqb69RURAw/gtHw45TTsBZBV9FlrF4PAuaMkqeoXV2KzeRYCxM0/aJDqaqKsPKjafos5mJmZBz6i7TTd+c4BNghABzSRh1X69ZG4BjDV8YWwmLlzS5J+836LMDEDPBg8mLOU1obyGsCOvk8zJ5KZ+a39Q7cZbnETIESi8bW6I5WqusdQTaqfXvLQDK69hm5e5s15bb6rXlU7GvbShawXDxtzZTdwDtgscsCt6/zwU5rOgu/XVpUVQH6a4MQwy+NMSzFwo6GBY/+sRUUaalUd9grhvhhmb7wcDsyTBuYWA5Mbn95RqlUXXzDUv4eWg0e/8ejx574wq5yF2LSAbX7sCZ1X30ulXhQg/bJ5932/29KgqvLsV9/cuoUA+KGPP/iClKRBKuMla9XoJ0/fqhKKmqJg9KdOnzwzTK4++Ka3vgFK7vrWqHv02hKgmJMjOSo3XAgbFAJUs2pKrZUAtTSMd+XVgdG3li3Mb4ocs5yKzdUWqiMbn0ZLgPn+X72YIYXVZZDKBjsbtUYgNRcNAYExtPPzYaHb1ZfnBCn4+DpcPzjY9+kowwtWyNT9mlcyxSgeegWa3vcL4H1DUB9GZ9+lB1BTh4pH6Dsf9p0EG7zrIf4/p++8aJZjCdPQfaAQs+07B6YSSw3fDoeeP+q41f16UN3x8M2//m8AG+b8mQv60TAAAAAASUVORK5CYII=
'''
icons = '''
R0lGODlhEAAQALMJAABdAA6fBhmqETW1GlLFKQBHAP//AABIAEy1Kf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlJq70SAFyB2VxmECDnEUJ5nUKgdmM7gBrFBkOREZ+I4roEICDgaWLACWBA5CFzlQKz+INapERZ8HJABJKhw8AaShS2lggAOw==
'''
mix = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxODoxMToxOCAxNjo1MToxNBYGYWAAAANvSURBVDhPjZJNbBtFGIbfnR2v98eOnfVvfprEQNKEuDGRCEkLBFSoVNTgokoVKIUILhVcqLiEggQI9QLqkUMj4AKInxuiogokagtqlULaJpSqdUMdkpQmwcTe2PE69nq9u0xoL1wQ72hGc/i+d0bP93LRw6f7//zwiZ9xVw1vzNwXCknJlkbvy4roamoKinbFtHnNRupmyT5BCPf5xSG1fLccnG/4lEMd63juy+Ro45Gp1xvbAu+1dQXQ3qLALxAIlCAqEtTzQM2w8cn8ppYuWAdmk+qP/xh4XrtgUH+9QFPzlUjfvWI4HoEicADhoEoUqkxBWbPEc+ioc2GnDxi7vokzt41dM/vVC5x7ZLIoPtLtqavVEAi4oUgEnVEJO/w8FjMVLKwZCERltDcpcNiqY8Z7gwRHpzeqq7pdz/O9I2+67gkJisyDI8COBgn12QLef3fiq0snpw8v/LJy7MbFP8gtwx1PbPcLFsehAg59XspPrBqLxLJtlMoOMkUTuukgna+h5JfRNXh/q9zbkymdeX5p45sDRwzLfnjics7wywSaA4R8PLrr+WMchsf1yP4HlYGgCz1NbkQcB17LxFS64IzPalMSpXvn3orrW8Daj887HdujsB0RIgO8mGYQW1897Qw9+xC8moHr17Qbv+WMsZvr+auM45XyR4/mthr/Swz3/9BnwQD0bAIdUk+fp/PFmNqWeK71SXyqnQfHvRP/GvG/onzYNeASJCAT/aL8zPlDW33+2T2efCr93e5tsV0vdR7kimIZjR4fe1WEws7R5bESAc31O7HigBPQ4TSboCF5WBofSmwZ5HsndV4QRy6vrfx0tjqNq2IWk8Yczhm/YglZ1KrE4bGvpQC3kXTCgFVjiQlVQTT+BWdQjZCDzSlRlBvKptXZJYTjajSIhXKWjZExpRauZZaqHD5+QIamrePpDQGiG+AFuCjbeS9okY1TbcZjkRhmyCpWKxoINbBZySKmhpG6sqLfgXgisRPS+hQeNwCR/cIg4HkXi7AAznbBAkUduwu0huJcEfr3a5XwPq9o80qVVTOdytzG7m0/4JaQhI9I8Nhw3BVYJsscMUBtCxYLmH7JgPk7d9QeXX6qEnMr1aw5+O8xftAtwS0egsd8BZuFLtCqhSIhPMgy1ugYKDlpvT3P4nNH8rd9/X8DGwdOt57oFosAAAAASUVORK5CYII=
'''
broom = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqkk19I01EUx793zj9tOrc2nK7pXPNP5nDT5UTFylk0XVJEIUT0UEI+1EP0EIhUhA+9FAglFdVDQQWaEW2oGWhRGulkEToqTVamiC6nLt3/2/3lfAop8AcfzuH8u+d37rmEUoqNfPzWeh64ElwdDkJWHZw8fZdiv4HAUrTqizB8Too4PszhCJoDQTTx/uOQUpZ3h4PpO1kh87IPzWXVhwy/VtDM/0dyltVOC1puXTnJtWC90ShlSelG0y5D2/0Oeyi8fgdiFn+Gyb1jY+M3O98lwj8zg5r6iweTtGTqyeNX9slZNEUi6OI6iGUkM2SMNJZYnCAUF2fqyvQjdQVqm82KqiozOrv9qFR9wb5j52oDoas2luzj5sJng7mQIJQUxwtFAkGSVCRLz5ZL5EpZcCnAX5p0o9ooQIf1KUwmC2zdy6hSj8N04ISlu/3eAivQx2OVerwL8/5cY01Fmsag83lo6sSAk++dnYdAKcHP0e+oLVqE1dqGigoLno+kYdG1iFAIPAZizDri6rdTT3/vYF4ihUKYLERKthIxcbGYdnyFRJOKkNePPPEyHr50ICenBHVnLz8q17CboZhYu4WuQi1ZmXMPn88t1VaPDTvBpzxkFGTBO+cB9YUhVslxPN8DY0NdO4tvZb//hluZGMI2ZsELaBTE5Ril7sG3H/JKynWKLdszMeV0IeQPQqSUYf7TFNqePXhtSMe1oW+kL2Mz8PEHW7i1e1OnEKiEFOVaUsnm0pidU7onwhSNPhdzLLmrt2eAbd8l9wpeWEcI1n0CKinBbjXMR/Ix1Hn9ML19agc9qsd701aY5Ul/x3MdcMskZIgYXMgmzqZXoHCbFA3c/n92o8UxjV5mDzD8jGBUD5NokThGfBR+1Mb1GIkSZoSico0/PrLR5/xbgAEAmn8aHZdeMI4AAAAASUVORK5CYII=
'''
help = '''
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNqUk02rEmEUx8+MjZp6Jw03InlXiVYELpyQAne6yY2ug8BaRItc9B3atM0Whdt2lz5AS0VUMKgs8aogIbrRhYr5Mvr0P8MYF5l7oQM/npfzMuec54xE1hIDz8Ed8/wTfABfjw0lC+dHLpfrbTwevx0IBFS+GI1Gs0ajcb5cLl/jWL5obLMI8OYhxO/3e7GX9/u9fB3i8/nUwWBwA3dnF43lI+c4iHi93pPNZkPMdrs1QIAT1pk2l8p3TdMW6XRaTKfTf5TLZZFKpQTr2OaqEh4Eg8G7brdbabfbBEfa7XYUi8Wo1WrRcDjUwRfYfb6shKf1er0qSZLe7/ep1+vRbDaj8XhMk8lEZx3bXNUDlmKn05nwJhKJUDKZpFKpRLVaje+Kx8ZWAc663e5CURTK5/PEpSBtzmZx/AIs1yzOLw+9KRQKhHIIr3jo1yvwDuhWL6CBT+A8l8uJTCYjMECiUqkY+2w2K1hn2mjHr/AE01cMhUL3E4lEQNd1kmWZotEoN4+azaYxE+Fw+CYGK7Rerx9jNqbw+3YY5R9wjMJJttvtRsq8zudzQ+nxeIwAq9XKGCo87b5arf6C6h7X7AKnTqeT/cnhcBgBeFVVlYQQxBnZbDajH2yDO27+KftK5p/3AjwDf8DCZAk2ZoYO80Me4Abc1Y/gPQdQwC1z/R/Zgt9/BRgANHrYMn3ClUIAAAAASUVORK5CYII=
'''

root = Tk()
__version__ = 'Version: 1.3.1'
root.resizable(False, False)
root.title("** GenDorks by explorer **    " + __version__)
root.geometry("680x514")
root.style = Style()
root.style.theme_use("xpnative")


def insert_url():
    file_name = fd.askopenfilename()
    try:
        f = open(file_name)
        s = f.read()
        url_name.insert(1.0, s)
        count_url.delete('0', END)
        y = url_name.get(1.0, END)
        line = (len(y.split()))
        count_url.insert(END, line)
        f.close()
    except FileNotFoundError:
        pass


def normal():
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    pattern = r"\b\w+="
    pattern2 = r"\.\w+\?"
    pattern3 = r"\/\w+\."

    x = url_name.get(1.0, END)
    host = x.rstrip('\n').replace('\n', ',').split(',')

    one = []
    two = []
    trio = []
    for item in host:
        string = item.replace('://', '')
        result3 = re.findall(pattern3, string)
        result2 = re.findall(pattern2, string)
        result = re.findall(pattern, string)
        one += result3
        two += result2
        trio += result
    a = set(one)
    b = set(two)
    c = set(trio)
    for n in a:
        name.insert(END, n[1:-1] + '\n')
    for p in b:
        type.insert(END, p + '\n')
    for r in c:
        para.insert(END, r + '\n')

    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_url.delete('0', END)

    s = name.get(1.0, END)
    line = s.count('\n') - 1
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = s.count('\n') - 1
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = s.count('\n') - 1
    count_para.insert(END, line)

    y = url_name.get(1.0, END)
    line = (len(y.split()))
    count_url.insert(END, line)


def gen():
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    dorks_name.delete(1.0, END)

    s = name.get(1.0, END)
    line = len(s.split())
    count_name.insert(END, line)

    s = type.get(1.0, END)
    line = len(s.split())
    count_type.insert(END, line)

    s = para.get(1.0, END)
    line = len(s.split())
    count_para.insert(END, line)

    one = name.get(1.0, END)
    a = one.rstrip('\n').replace('\n', ',').split(',')
    two = type.get(1.0, END)
    b = two.rstrip('\n').replace('\n', ',').split(',')
    trio = para.get(1.0, END)
    c = trio.rstrip('\n').replace('\n', ',').split(',')

    if free.get() == 1:
        q = [free_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (q + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and inurl.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + 'inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1 and intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif site.get() == 1:
        s = ['site:', site_entry.get()]
        s = ''.join(s)
        for x in a:
            for y in b:
                for z in c:
                    dork = (s + ' ' + x + y + z)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and intitle.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        r = [' intitle:', intitle_entry.get()]
        r = ''.join(r)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + r + q)
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1 and inurl.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1 and inurl.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"' + q)
                    dorks_name.insert(END, dork + '\n')

    elif inurl.get() == 1:
        for x in a:
            for y in b:
                for z in c:
                    dork = ('inurl:"' + x + y + z + '"')
                    dorks_name.insert(END, dork + '\n')

    elif intext.get() == 1:
        q = [' intext:', intext_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    elif intitle.get() == 1:
        q = [' intitle:', intitle_entry.get()]
        q = ''.join(q)
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z + q)
                    dorks_name.insert(END, dork + '\n')

    else:
        for x in a:
            for y in b:
                for z in c:
                    dork = (x + y + z)
                    dorks_name.insert(END, dork + '\n')

    count_dork.delete('0', END)
    s = dorks_name.get(1.0, END)
    line = s.count('\n') - 1
    count_dork.insert(END, line)


def helpmy():
    subprocess.call(['notepad.exe', 'help.txt'])


def clean():
    count_url.delete('0', END)
    count_name.delete('0', END)
    count_type.delete('0', END)
    count_para.delete('0', END)
    count_dork.delete('0', END)
    intext_entry.delete('0', END)
    intitle_entry.delete('0', END)
    site_entry.delete('0', END)
    free_entry.delete('0', END)
    url_name.delete(1.0, END)
    dorks_name.delete(1.0, END)
    name.delete(1.0, END)
    type.delete(1.0, END)
    para.delete(1.0, END)
    site.set(False)
    inurl.set(False)
    intext.set(False)
    intitle.set(False)
    free.set(False)
    var.set(False)


def ran():
    s = dorks_name.get(1.0, END)
    mix = s[0:-2].replace('\n', ',').split(',')
    random.shuffle(mix)
    dorks_name.delete(1.0, END)
    for z in mix:
        a = z + '\n'
        dorks_name.insert(END, a)


def save():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),
                                    ("HTML files", "*.html;*.htm"),
                                    ("All files", "*.*")), defaultextension='')
    try:
        f = open(file_name, 'w')
        s = dorks_name.get(1.0, END)
        f.write(s)
        f.close()
    except FileNotFoundError:
        pass


def change():
    if var.get() == 1:
        root.style.theme_use("clam")
    elif var.get() == 2:
        root.style.theme_use("xpnative")
    elif var.get() == 3:
        root.style.theme_use("default")


var = IntVar()
var.set(2)
rbutton1 = Radiobutton(root, text='Clam skin', variable=var, value=1)
rbutton2 = Radiobutton(root, text='XPnative skin', variable=var, value=2)
rbutton3 = Radiobutton(root, text='Default skin', variable=var, value=3)
rbutton1.grid(row=5, column=0, padx=10, sticky='sw')
rbutton2.grid(row=6, column=0, padx=10, sticky='nw')
rbutton3.grid(row=6, column=0, padx=10, pady=25, sticky='nw')

savebtn = PhotoImage(data=icons)
mixbtn = PhotoImage(data=mix)
broombtn = PhotoImage(data=broom)
helpbtn = PhotoImage(data=help)
img = PhotoImage(data=icon)

name_label = Label(text="Name :")
name_label.grid(row=5, column=1, pady=5, sticky="sw")

type_label = Label(text="Type :")
type_label.grid(row=5, column=3, pady=5, sticky="sw")

para_label = Label(text="Parameter :")
para_label.grid(row=5, column=5, pady=5, sticky="sw")

dork_label = Label(text="Dorks :")
dork_label.grid(row=8, column=7, pady=5, sticky="sw")

open_button = Button(text="Open URLs", width=14, command=insert_url)
open_button.grid(row=1, column=0, padx=10, pady=5, sticky="n")

norm_button = Button(text="Normal", width=14, command=normal)
norm_button.grid(row=2, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="Generate", width=14, command=gen)
gens_button.grid(row=3, column=0, padx=10, pady=5, sticky="n")

gens_button = Button(text="  Clean    ", width=10, image=broombtn, compound="left", command=clean)
gens_button.grid(row=12, column=7, padx=32, sticky="swe")

help_button = Button(text="   Help     ", width=10, image=helpbtn, compound="left", command=helpmy)
help_button.grid(row=6, column=0, padx=10, pady=7, sticky="swe")

skin_button = Button(text="Change skin", width=10, command=change)
skin_button.grid(row=6, column=0, padx=10, pady=47, sticky="swe")

open_button = Button(text="  Random  ", width=10, image=mixbtn, compound="left", command=ran)
open_button.grid(row=9, column=7, padx=32, sticky="swe")

save_button = Button(text="    Save       ", width=10, image=savebtn, compound="left", command=save)
save_button.grid(row=10, column=7, padx=32, sticky="swe")

count_url = Entry(width=14, justify=CENTER)
count_url.grid(row=0, column=0, padx=10, pady=5, sticky="n")

count_name = Entry(width=4, justify=CENTER)
count_name.grid(row=5, column=1, pady=5, sticky="se")

count_type = Entry(width=4, justify=CENTER)
count_type.grid(row=5, column=3, pady=5, sticky="se")

count_para = Entry(width=4, justify=CENTER)
count_para.grid(row=5, column=5, pady=5, sticky="se")

count_dork = Entry(width=8, justify=CENTER)
count_dork.grid(row=8, column=7, pady=5, sticky="s")

site_entry = Entry()
site_entry.grid(row=9, column=1, pady=5, columnspan=5, sticky="we")

intext_entry = Entry()
intext_entry.grid(row=10, column=1, pady=5, columnspan=5, sticky="we")

intitle_entry = Entry()
intitle_entry.grid(row=11, column=1, pady=5, columnspan=5, sticky="we")

free_entry = Entry()
free_entry.grid(row=12, column=1, pady=5, columnspan=5, sticky="we")


url_name = Text(root, wrap=NONE, font="Courier 9", width=52, height=1)
url_name.grid(row=0, column=1, columnspan=5, rowspan=4, sticky='nswe')
scrollb = Scrollbar(root, orient=VERTICAL, command=url_name.yview)
scrollb.grid(row=0, column=6, rowspan=4, sticky='nse')
url_name.configure(yscrollcommand=scrollb.set)
sc = Scrollbar(root, orient=HORIZONTAL, command=url_name.xview)
sc.grid(row=4, columnspan=5, column=1, sticky='sew')
url_name.configure(xscrollcommand=sc.set)

dorks_name = Text(root, wrap=NONE, font="Courier 9", width=22, height=1)
dorks_name.grid(row=0, column=7, rowspan=7, sticky='nswe')
scroll = Scrollbar(root, orient=VERTICAL, command=dorks_name.yview)
scroll.grid(row=0, column=8, rowspan=7, sticky='nse')
dorks_name.configure(yscrollcommand=scroll.set)
scroli = Scrollbar(root, orient=HORIZONTAL, command=dorks_name.xview)
scroli.grid(row=7, column=7, sticky='sew')
dorks_name.configure(xscrollcommand=scroli.set)

name = Text(root, wrap=NONE, font="Courier 9", width=14, height=9)
name.grid(row=6, column=1, sticky='nswe')
scrols = Scrollbar(root, command=name.yview)
scrols.grid(row=6, column=2, sticky='nsw')
name.configure(yscrollcommand=scrols.set)
scrolt = Scrollbar(root, orient=HORIZONTAL, command=name.xview)
scrolt.grid(row=7, column=1, sticky='sew')
name.configure(xscrollcommand=scrolt.set)

type = Text(root, wrap=NONE, font="Courier 9", width=10, height=9)
type.grid(row=6, column=3, sticky='nswe')
scro = Scrollbar(root, command=type.yview)
scro.grid(row=6, column=4, sticky='nsw')
type.configure(yscrollcommand=scro.set)
scroltt = Scrollbar(root, orient=HORIZONTAL, command=type.xview)
scroltt.grid(row=7, column=3, sticky='sew')
type.configure(xscrollcommand=scroltt.set)

para = Text(root, wrap=NONE, font="Courier 9", width=14, height=9)
para.grid(row=6, column=5, sticky='nswe')
scr = Scrollbar(root, command=para.yview)
scr.grid(row=6, column=6, sticky='nse')
para.configure(yscrollcommand=scr.set)
scroltz = Scrollbar(root, orient=HORIZONTAL, command=para.xview)
scroltz.grid(row=7, column=5, sticky='sew')
para.configure(xscrollcommand=scroltz.set)

inurl = BooleanVar()
site = BooleanVar()
intext = BooleanVar()
intitle = BooleanVar()
free = BooleanVar()
inurls = Checkbutton(root, text='inurl:', variable=inurl)
sites = Checkbutton(root, text='site:', variable=site)
intexts = Checkbutton(root, text='intext:', variable=intext)
intitles = Checkbutton(root, text='intitle:', variable=intitle)
frees = Checkbutton(root, text='free:', variable=free)
inurls.grid(row=8, column=0, padx=10, sticky='nw')
sites.grid(row=9, column=0, padx=10, sticky='nw')
intexts.grid(row=10, column=0, padx=10, sticky='nw')
intitles.grid(row=11, column=0, padx=10, sticky='nw')
frees.grid(row=12, column=0, padx=10, sticky='nw')

root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()

Для работы программы может потребоваться установка ttk
Ставить командой в консоли pip3 install pyttk или pip install pyttk
 
ghostphisher

ghostphisher

гарант codeby
Gold Team
07.12.2016
2 535
3 379
Это отличный материал. Именно такие проекты учат кодить со смыслом. на вопросы многих =Что бы мне накодить то в начале моего пути=...ответы выше
 
  • Нравится
Реакции: explorer
explorer

explorer

Red Team
05.08.2018
788
1 697
может кто то выложить на другой обменник а то я с этого скачать не могу почему то
Да здесь ничего качать не нужно. Копируешь исходный код, делаешь пустой файл gendorks.py вставляешь туда код, сохраняешь и пользуешься )
 
Мы в соцсетях: