Fik bevæget mig ud i et python projekt, og har nu brug for noget hjælp fra jer de lidt mere erfarne herinde
kunne jeg lokke jer gutter til at kigge mit lille program igennem? Det ville være fantastisk.
Er ikke den bedste til det her, men har prøvet mig frem
Kode:
#!/usr/bin/env python
import sys
import socket
import getopt
import threading
import subprocess
# Her er der bare defineret nogle globale variabler
listen = False
command = False
upload = False
execute = ""
target = ""
upload_destination = ""
port = 0
def usage():
print 'Fetchr'
print
print "Usage: bhpnet.py -t target_host -p port"
print "-l --listen - listen on [host]:[port] for - incoming connections"
print "-e --execute=file_to_run - execute the given file upon - receiving a connection"
print "-c --command - initialize a command shell"
print "-u --upload=destination - upon receiving connection upload a - file and write to [destination]"
print
print
print "Examples: "
print "bhpnet.py -t 192.168.0.1 -p 5555 -l -c"
print "bhpnet.py -t 192.168.0.1 -p 5555 -l -u=c:\\target.exe"
print "bhpnet.py -t 192.168.0.1 -p 5555 -l -e=\"cat /etc/passwd\""
print "echo 'ABCDEFGHI' | ./bhpnet.py -t 192.168.11.12 -p 135"
sys.exit(0)
def client_sender(buffer):
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
client.connect((target, port))
if len(buffer):
client.send(buffer)
while recv_len:
data = client.recv(4096)
recv_len = len(data)
repsonse += data
if recv_len < 4096:
break
print response,
buffer = raw_input("")
buffer += "\n"
client.send(buffer)
except:
print "[*] Exeption! Exiting."
client.close()
def client_handler(client_socket):
global upload
global execute
global command
# Checker for upload
if len(upload_destination):
file_buffer = ""
while true:
data = client_socket.recv(1024)
if not data:
break
else:
file_buffer += data
try:
file_descriptor = open(upload_destination,"wb")
file_descriptor.write(file_buffer)
file_descriptor.close()
client_socket.send("Successfully saved file to %s\r\n" % upload_destination)
except:
client_socket.send("Failed to save file to %s\r\n" % upload_destination)
if len(execute):
output = run_command(execute)
client_socket.send(output)
while True:
client_socket.send("<BHP:#> ")
while "\n" not in cmd_buffer:
cmd_buffer += client_socket.recv(1024)
response = run_command(cmd_buffer)
client_socket.send(response)
def main():
global listen
global port
global execute
global command
global upload_destination
global target
if not len(sys.argv[1:]):
usage()
# kommando optioner
try:
opts, args = getopt.getopt(sys.argv[1:], "hle:t:p:cu:",
- ["help", "listen", "execute", "target", "port", "command", "upload"])
except getopt.getoptError as err:
print str(err)
usage()
for o,a in opts:
if o in ("-h", "--help"):
usage()
elif o in ("-l", "--listen"):
listen = True
elif o in ("-p", "--port"):
port = int(a)
elif o in ("-e", "--execute"):
execute = a
elif o in ("-c", "--command"):
command = True
elif o in ("-t", "--target"):
target = a
elif o in ("-u", "--upload"):
upload_destination = a
else:
assert False, "Unhandled option"
# Vi skal lytte eller sende data?
if not listen and len(target) and port > 0:
# bufferen fra command line
buffer = sys.stdin.read()
client.sender(buffer)
if listen:
server.loop()
main()