Schreiben eines Windows-Schließfachs in Python 3.x.

Grüße an Python-Liebhaber. Einmal habe ich versehentlich meinen Finger in ctypes gesteckt. Und weißt du, es hat mir gefallen. Besonders der Tastatur- und Mauseingabeblock. Und das erste, was mir in den Sinn kam, war: "Warum nicht ein Schließfach für Windows in Python schreiben und es wie einen Schlüssel auf einem USB-Stick entsperren?" (Fragen Sie nicht warum, ich kenne mich selbst nicht). Und dann ging meine Fantasie. Jetzt schreibe ich auf, was Sie tun müssen, um es zu schreiben.



Nun, fangen wir an!



Der erste Schritt besteht darin, einen grafischen Teil des Schließfachs zu erstellen. Wir werden kein dummes weißes Blatt machen: d

Wir werden es benennen. ... ... locker.pyw





Warum pyw? Ja, denn wenn Sie das Schließfach starten, wird die Konsole herauskommen, die ein potenzieller schlechter Onkel schließen kann. Dann wird das gesamte Schließfach abgedeckt, aber wir brauchen es nicht.





import hashlib
import time
import sys
import os
from tkinter import Tk, Entry, Label
import tkinter
import pyautogui
import threading
from lofu import *
      
      



Importieren von Bibliotheken für locker.pyw





* hashlib wir müssen den Schlüssel in einer Hash-Form speichern, damit die Wahrscheinlichkeit von Ausschuss geringer ist (wenn Sie ihn nicht benötigen, müssen Sie ihn nicht importieren!)







* Zeit ist nur zum Schlafen ()







* sys für schönen Ausgang Ausgang ()







* os, um die Aufgabe des system () - Teils des Schließfachs zu starten







* tkinter das ist unser Graphenteil







* pyautogui, um die Maus in eine Ecke zu bewegen (lassen Sie ihn über sein Verhalten nachdenken)







* Threading für den zweiten Thread des Mausversatzes (um den Haupt-Thread nicht zu stören)







* Lofu. ... ... ... Ich habe ein paar Funktionen in eine andere Datei eingefügt und das war's, ich bin ein Künstler, wie ich es sehe!





Lassen Sie uns die Funktion ausführen, die Maus zur Seite zu bewegen, damit der Benutzer keine Zeit hat, irgendwo zu klicken.





def mouse_trac(screen_width, screen_height):
	while True:
		pyautogui.moveTo(screen_width, screen_height)
      
      



pyautogui.moveTo(screen_width, screen_height) - ( , )





screen_width, screen_height

Tk(), ,





root = Tk()

root.attributes('-fullscreen', True)
pyautogui.FAILSAFE = False
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
      
      



root.attributes('-fullscreen', True) - .





pyautogui.FAILSAFE = False - , .





screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() - ,





,





x = threading.Thread(target=mouse_trac, args=(screen_width, screen_height), daemon=True)
x.start()
      
      



target=mouse_trac - ,



args=(screen_width, screen_height) -



daemon=True -





Threading









label = Label(root, text='Enter flesh drive with code!', font='Courier 15', fg='#C71585')
label.place(relx=.5, rely=.94, anchor="center")

label3 = Label(root, text='USBCODE waiting...', font='Courier 20', fg='#00BFFF')
label3.place(relx=.5, rely=.40, anchor="center")

label4 = Label(root, text='Powered by .... wait....by who?', font='Courier 15', fg='#C71585')
label4.place(relx=.1, rely=.95, anchor="center")

root.update()
      
      



label = Label(root, text='Enter flesh drive with code!', font='Courier 15', fg='#C71585') label.place(relx=.5, rely=.94, anchor="center") -



root -



text - :G



font -



fg - HTML ( https://colorscheme.ru/html-colors.html )



relx - X



rely - Y



anchor="center" -





root.update() - ( CTRL+S)





Tkinter





.

.





, . , " " , windows. windows " ". , , . ( , , ).





  • " "





  • "" ( )





  • " "





  • , ""





  • ""





  • : " " " (, 1 , )"





  • ""





  • " "





  • ! ? . . .





. input_block.pyw





from ctypes import *
import time
import sys
from lofu import *

while True:
	statusl = status_lock()
	if str(statusl) == '0':
		windll.user32.BlockInput(False)
	elif str(statusl) == '1':
		windll.user32.BlockInput(True)
      
      



lofu





def status_lock():
	filee = open(r'  ', 'r')
	return filee.read()
	filee.close()

def disable_lock():
	filee = open(r'  ', 'w')
	text = 0
	filee.write(str(text))
	filee.close()

def enable_lock():
	filee = open(r'  ', 'w')
	text = 1
	filee.write(str(text))
	filee.close()
      
      



, : " , ? JSON ! !"





json, sqlite3 . . . !





input_block.pyw >> input_block.exe

pyinstaller





pyinstall input_block.pyw --onefile
      
      



? pyinstaller?





pip install pyinstaller
      
      



" ".





" " " " .





locker.pyw





os.system('schtasks.exe /run /tn "     "')
      
      



, ,





while True:
	try:
		enable_lock()
		file = open(r'F:\key.txt','r')
		file_t = str(file.read())
		file.close()
		hash_object = hashlib.sha256(file_t.encode())
		hex_dig = hash_object.hexdigest()
		if ' -' == str(hex_dig):
			label3.configure(text='USBCODE correct. Unlocking...', fg='#00FF00', font="Courier 30")
			root.update()
			time.sleep(4)
			disable_lock()
			sys.exit()
		else:
			label3.configure(text='USBCODE incorrect. Try again!', fg='#FF0000', font="Courier 30")
			enable_lock()
			root.update()
	except SystemExit:
		sys.exit()
	except:
		time.sleep(10)
		label3.configure(text='USBCODE not found! Waiting...', fg='#FF1493', font="Courier 20")
		enable_lock()
		root.update()
      
      



, . ,





enable_lock() - lofu





disable_lock() - lofu -





time.sleep(N) -





file = open(r'F:\key.txt','r')

file_t = str(file.read())

file.close() - ,





hash_object = hashlib.sha256(file_t.encode())

hex_dig = hash_object.hexdigest() -





if ' ' == str(hex_dig): - :d

:

* - ( , , , )

* ( )

* ( - locker.pyw)





, locker.pyw.





, shell:startup, " ".





Das ist alles. Meinen Glückwunsch! Wir haben gerade ein Schließfach für Windows in Python 3.xc erstellt, das die Eingabe über den "Task Scheduler" vollständig blockiert , über ein USB-Flash-Laufwerk entsperrt, mit einem Hash-Schlüssel und einer grafischen Oberfläche!



PS Sie können auch die Verknüpfung locker.pyw in das Feld " Verknüpfung " eingeben, um Schlüssel zum schnellen Sperren zu binden.








All Articles