Domanda Aiuto Errore

Stato
Discussione chiusa ad ulteriori risposte.

Disordine.

Utente Silver
24 Dicembre 2015
136
20
15
74
Ciao bella gente,allora la compilazione viene portata a termine con successo,ma quando lo vado ad eseguire mi da questo errore:
Codice:
File "bhpnet.py", line 82
SyntaxError: Non-ASCII character '\xc3' in file bhpnet.py on line 82, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
il codice è questo e parte dalla riga 40 fino ad arrivare alla 92,
Codice:
def main():
    global listen
    global port
    global execute
    global command
    global upload_destination
    global target
  
    if not len(sys.argv[1:]):
        usage()
  
    #leggi le opzioni da linea di comando
    try:
        opts, args= getopt.getopt(sys.argv[1:],"hle:t:p:cu:",["help","listen","execute","terget","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 ("-e","--execute"):
            execute=a
        elif o in ("-l","--listen"):
            listen=True
        elif o in ("-c","--commandshell"):
            command=True
        elif o in ("-u","--upload"):
            upload_destination=a
        elif o in ("-t","--target"):
            target = a
        elif o in ("-p","--port"):
            port=int(a)
        else:
            assert False,"Unhandled Options"

#staremo in ascolto o invieremo dati allo stdin
        if not listen and len(target) and port >0:
          
    #leggi il buffer della linea di comando
    #questa operazione sarà bloccante,per cui digita
    #CTRL-D se non vuoi leggere dallo standard input
            buffer= sys.stdin.read()
    #invia i dati
            client_sender(buffer)

    #resteremo in ascolto e potenzialmente faremo degli upload,
    #eseguiremo comandi e ritorneremo alla shell a seconda delle nostre
    #opzioni da liena di comando indicate sopra
    if listen:
        server_loop()

l'errore è qua:
Codice:
#staremo in ascolto o invieremo dati allo stdin
        if not listen and len(target) and port >0:
         
    #leggi il buffer della linea di comando
    #questa operazione sarà bloccante,per cui digita
    #CTRL-D se non vuoi leggere dallo standard input
            buffer= sys.stdin.read()
    #invia i dati
            client_sender(buffer)

non riesco proprio a capire,a me sembra tutto corretto..
 
Ultima modifica:
L'indentazione non è corretta

Codice:
#-*- coding:utf-8 -*-
#staremo in ascolto o invieremo dati allo stdin
if not listen and len(target) and port >0:
                    #leggi il buffer della linea di comando
                    #questa operazione sarà bloccante,per cui digita
                    #CTRL-D se non vuoi leggere dallo standard input
                    buffer= sys.stdin.read()
                    #invia i dati
                    client_sender(buffer)
 
L'indentazione non è corretta

Codice:
#staremo in ascolto o invieremo dati allo stdin
if not listen and len(target) and port >0:
                    #leggi il buffer della linea di comando
                    #questa operazione sarà bloccante,per cui digita
                    #CTRL-D se non vuoi leggere dallo standard input
                    buffer= sys.stdin.read()
                    #invia i dati
                    client_sender(buffer)
avevo gia provato con l'indentazione ma niente mi ridà lo stesso errore
Python per hacker eh? a me funge perfettamente
Esatto proprio lui! boh adesso riprovo più attentamente..
 
se rimuovo questo commento funge:
Codice:
        #questa operazione sarà bloccante,per cui digita
anche se non ho la minima idea del perchè..
 
ok adesso ne ho un'altro che non riesco a capire,
quando eseguo il programma tramite geany va tutto bene,mentre quando lo vado ad eseguire da terminale mi da l'errore:
Codice:
./bhpnet.py: riga 16: errore di sintassi vicino al token non atteso "("
./bhpnet.py: riga 16: `def usage():'
la funzione a cui si riferisce:
Codice:
def usage():
   
    print "Sostituto di Netcat"
    print
    print "Utilizzo: bhpnet.py -t target_host -p port"
    print "-l --listen                  - ascolta su [host]:[port] in attesa di connessioni"
    print "-e --execute = file_to_run     - esegui il file appena ricevi una connessione"
    print "-c --command                 - inizializza un comando shell"
    print "-u --upload= destination     - subito dopo aver ricevuto una connessione, " "fai l'upload del file e scrivi su [destination]"
    print
    print
    print "Alcuni esempi"
    print "bhpnet.py -t 192.168.0.1 -p 5555 -l -c"
    print "bhpnet.py -t 192.168.0.2 -p 5555 -l "
    print "echo ABCDEFGHI | ./bhpnet.py -t 192.168.11.12 -p 135"
    sys.exit(0)

a me sembra andare bene anche questa..non ho trovato niente di simile ne googolando,ne nel mio cervello,ne sul forum..qualcuno mi sa aiutare?
grazie in anticipo
 
ok adesso ne ho un'altro che non riesco a capire,
quando eseguo il programma tramite geany va tutto bene,mentre quando lo vado ad eseguire da terminale mi da l'errore:
Codice:
./bhpnet.py: riga 16: errore di sintassi vicino al token non atteso "("
./bhpnet.py: riga 16: `def usage():'
la funzione a cui si riferisce:
Codice:
def usage():
 
    print "Sostituto di Netcat"
    print
    print "Utilizzo: bhpnet.py -t target_host -p port"
    print "-l --listen                  - ascolta su [host]:[port] in attesa di connessioni"
    print "-e --execute = file_to_run     - esegui il file appena ricevi una connessione"
    print "-c --command                 - inizializza un comando shell"
    print "-u --upload= destination     - subito dopo aver ricevuto una connessione, " "fai l'upload del file e scrivi su [destination]"
    print
    print
    print "Alcuni esempi"
    print "bhpnet.py -t 192.168.0.1 -p 5555 -l -c"
    print "bhpnet.py -t 192.168.0.2 -p 5555 -l "
    print "echo ABCDEFGHI | ./bhpnet.py -t 192.168.11.12 -p 135"
    sys.exit(0)

a me sembra andare bene anche questa..non ho trovato niente di simile ne googolando,ne nel mio cervello,ne sul forum..qualcuno mi sa aiutare?
grazie in anticipo
Usi Kali Linux vero? Comunque se metti lo script Netcat completo o me lo vuoi passare privatamente ti posso aiutare e te lo ritorno funzionante. Comunque per cos'è questo script? Remot command? Payload?
 
No sto usando ubuntu 15.10, che per fare questa tipologia di cose mi trovo meglio in quest'ambiente,poi le vado a testare su kali..
Questo è uno script fatto in py che andrebbe a sostituire Netcat nel momento in cui non si potrebbe utilizzare...
Non è farina del mio sacco,è tratto da un libro che sto studiando
Comunque quell'errore ancora non sono riuscito a capire come risolverlo..
 
No sto usando ubuntu 15.10, che per fare questa tipologia di cose mi trovo meglio in quest'ambiente,poi le vado a testare su kali..
Questo è uno script fatto in py che andrebbe a sostituire Netcat nel momento in cui non si potrebbe utilizzare...
Non è farina del mio sacco,è tratto da un libro che sto studiando
Comunque quell'errore ancora non sono riuscito a capire come risolverlo..
Non posso fare tanto se non posti tutto lo script.
 
Non posso fare tanto se non posti tutto lo script.

ce l'ho fatta! in pratica il terminale interpretava python non come linuguaggio python ma come linguaggio bash..colpo di scena signori!

ecco ora ne ho un altro ti posto lo script per intero :

Codice:
import sys
import socket
import getopt
import threading
import subprocess

# Definiamo alcune variabili Globali
listen=False
command=False
upload=False
execute=""
target=""
upload_destination=""
port=0

def usage():
   
    print "Sostituto di Netcat"
    print
    print "Utilizzo: bhpnet.py -t target_host -p port"
    print "-l --listen                  - ascolta su [host]:[port] in attesa di connessioni"
    print "-e --execute = file_to_run     - esegui il file appena ricevi una connessione"
    print "-c --command                 - inizializza un comando shell"
    print "-u --upload= destination     - subito dopo aver ricevuto una connessione, " "fai l'upload del file e scrivi su [destination]"
    print
    print
    print "Alcuni esempi"
    print "bhpnet.py -t 192.168.0.1 -p 5555 -l -c"
    print "bhpnet.py -t 192.168.0.2 -p 5555 -l "
    print "echo ABCDEFGHI | ./bhpnet.py -t 192.168.11.12 -p 135"
    sys.exit(0)



def main():
    global listen
    global port
    global execute
    global command
    global upload_destination
    global target
   
    if not len(sys.argv[1:]):
        usage()
   
    #leggi le opzioni da linea di comando
    try:
        opts, args= getopt.getopt(sys.argv[1:],"hle:t:p:cu:",["help","listen","execute","terget","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 ("-e","--execute"):
            execute=a
        elif o in ("-l","--listen"):
            listen=True
        elif o in ("-c","--commandshell"):
            command=True
        elif o in ("-u","--upload"):
            upload_destination=a
        elif o in ("-t","--target"):
            target = a
        elif o in ("-p","--port"):
            port=int(a)
        else:
            assert False,"Unhandled Options"
           

        #staremo in ascolto o invieremo dati allo stdin
    if not listen and len(target) and port >0:
        buffer= sys.stdin.read()
        client_sender(buffer)
        #leggi il buffer della linea di comando           
        #CTRL-D se non vuoi leggere dallo standard input
        #invia i dati
       
    #resteremo in ascolto e potenzialmente faremo degli upload,
    #eseguiremo comandi e ritorneremo alla shell a seconda delle nostre
    #opzioni da liena di comando indicate sopra
        if listen:
            server_loop()

main()

def client_send(buffer):
    client= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   
    try:
        #connettiti al nostro target host
        client.connect((target,port))
       
        #se rileviamo dell'input da stdin allora inviamolo
        #altrimenti aspettiamo che l'utente inserisca qualcosa
        if len(buffer):
            client.send(buffer)
       
        while True:
        #ora aspettiamo i dati in risposta
            recv_len = 1
            response=""
       
        while recv_len:
            data    =client.recv(4096)
            recv_len = len(data)
            response += data
           
            if recv_len < 4096:
                break
        print response,
       
        #aspetta nuovi input
        buffer=raw_input("")
        buffer += "\n"
       
        #invia il contenuto al buffer
        client_send(buffer)
    except:
    #gestisci errori generici
        print "[*] Exception!Exiting."
   
    #chiudi la discussione
    client.close()
def server_loop():
    global target
    global port
    #se non e specificato un target ascoltiamo su tutte.
    #le interfacce
    if not len(target):
        target="0.0.0.0"
        server= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.bind((target,port))
       
        server.listen(5)
       
        while True:
            client_socket, addr=server.accept()
           
            #creiamo un thread per gestire il nostro client
            client_thread= threading.Thread(target=client_handler,args=(client_socket,))
            client_thread.start()

def run_command(command):
    #rimuovi l'interruzione di linea
    command=command.rstrip()
   
    #esegui il comando e ottieni l'output della risposta
    try:
        output=subprocess.check_output(command,command,stderr=subbporocess.STDOUT,shell=True)
    except:
        output ="Failed to execute command\r\n"
   
    #rimanda al nostro client
    return output

#esecuzione dei comandi upload file e shell
def client_handler(client_socket):
    global upload
    global execute
    global command
   
    #verifica che si possano ricevere file
    if len(upload_destination):
        #leggi tutti i byte e scrivili nella nostra destinazione
        file_buffer=""
        #continua a leggere i dati finche sono disponibili
        while True:
            data = client_socket.recv(1024)
            if not data:
                break
            else:
               
                file_buffer += data
    #ora prendiamo i dati e li trasformiamo in output.
    try:
            file_descriptor=open(upload_destination,"wb")
            file_descriptor.write(file_buffer)
            file_descriptor.close()
       
        #diamo conferma che avviamo scritto il file
            client_socket.send("Successfully saved to % s\r\n" % upload_destination)
    except:
        clientsocket_send("Failed to save file to %s\r\n" % upload_destination)

    #verifica l'esecuzione del comando
    if len(execute):
    #esegui il comando
            output = run_command(execute)
            client_socket.send(output)

#andiamo in un altro loop in caso venga richiesta una shell
if command:
    while True:
            #mostra un semplice prompt
                client_socket.send("<BHP:#> ")
       
            #ora rivediamo sinche' vediamo un linfeed (enter key)
                cmd_buffer=""
                while "\n" not in cmd_buffer:
                    cmd_buffer += client_socket.recv(1024)
            #abbiamo un comando valido quindi eseguiamo e spediamo
            #indietro il risultato
                response=run_command(cmd_buffer)
       
            #restituisci la risposta
                client_socket.send(response)

l'errore è:
Codice:
Traceback (most recent call last):
  File "bhpnet.py", line 198, in <module>
    client_socket.send("<BHP:#> ")
NameError: name 'client_socket' is not defined

piano piano ce la sto facendo..
 
Stato
Discussione chiusa ad ulteriori risposte.