首页 > 代码库 > BHP Net Tool

BHP Net Tool

#导入需要用到的包
import sys
import getopt
import threading
import socket
import subprocess

#定义全局变量
listen              = False
command             = False
upload              = False
execute             = ‘‘
target              = ‘‘
upload_destination  = ‘‘
port                = 0

def usage():
    print(‘‘‘BHP Net Tool
    
    usage: bhpnet.py -t target_host -p port
    -l --listen                 - listen on [host]:[port] for incoming connections
    -e --execute                - execute the given file upon receiving a connection
    -c --command                - initialize a command shell
    -u --upload = destination   - upon receiving connection upload a file and write to [destination]


    Examples:
    bhpnet.py -t 192.168.0.1 -p 5555 -l -c
    bhpnet.py -t 192.168.0.1 -p 5555 -l -u=c:\\target.exe
    bhpnet.py -t 192.168.0.1 -p 5555 -l -e=cat /etc/passwd
    echo ‘ABCDEFGHI‘ | ./bhpnet.py -t 192.168.0.1 -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.encode())

        while True:

            #等待数据回传
            recv_len = 1
            response = ‘‘

            while recv_len:
                data = client.recv(4096)
                recv_len = len(data)
                response+=data.decode()

                if recv_len < 4096:
                    break
            
            print(response)
            
            #等待输入
            buffer = input(‘‘)
            buffer +=\n

            #发送出去

            client.send(buffer.encode())

    except Exception as e:
        print(str(e))
        print([*] Exception ! Exiting .)
        client.close()


def main():
    global listen
    global command
    global upload
    global execute
    global target
    global upload_destination
    global port

    if not len(sys.argv[1:]):   #如果没有参数则打印帮助信息
        usage()

    try:
        options,args = getopt.getopt(sys.argv[1:],hle:t:p:cu:,[help,listen,target,port,command,upload])
    except getopt.GetoptError as err:
        print(str(err))
        usage()

    for o,a in options:
        if o in (-h,--help):
            usage()
        elif o in (-l,--listen):
            listen = True
        elif o in (-e,--execute):
            execute = a
        elif o in (-c,--command):
            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 Option"
    
    if not listen and len(target) and port > 0 :
        buffer = sys.stdin.read()
        
        client_sender(buffer)

    if listen :
        server_loop()
main()


 

BHP Net Tool