python 实现 netcat

import sys
import socket
import getopt
import threading
import subprocess
listen = False
command = False
upload = False
execute = ""
target = ""
upload_destination = ""
port = 0

def usage():
    print "BHP Net Tool"
    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 uponreceiving a connection"
    print "-c --command - initialize a command shell"
    print "-u --upload=destination - upon receiveing 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 "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()
    try:
        opts,args = getopt.getopt(sys.argv[1:],"hle:t:p:cu:",["help","listen","execute","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 ("-e","--execute"):
            execute = a
        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,"unhanded Option"
    if not listen and len(target) and port > 0:
        buffer = sys.stdin.read()
        client_sender(buffer)
    if listen:
        server_loop()
main()
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 True:
            recv_len = 1
            response = ""
            while recv_len:
                data = client.recv(4096)
                recv_len = len(data)
                response += data

                if recv_len < 4096:
                    break
            print response,
            buffer = raw_input("")
            buffer += "\n"
            client.send(buffer)
    except:
        print "[*] Exception! Exiting."
        client.close()
def server_loop():
    global target
    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()
        client_thread = threading.Thread(target=client_handler,args=(client_socket,))
        client_thread.start()
def run_command(command):
    command = command.rstrip()
    try:
        output = subprocess.check_output(command,stderr=subprocess.STDOUT,shell=True)
    except:
        output = "Failed to execute command.\r\n"
    return output
def client_handler(client_soket):
    global upload
    global execute
    global command

    if len(upload_destination):
        file_buffer = ""
        while True:
            data = client_soket.recv(4096)
            if not data:
                break
            else:
                file_buffer += data
        try:
            file_description = open(upload_destination,"wb")
            file_description.write(file_buffer)
            file_description.close()
            client_soket.send("Successfully saved file to %s\r\n" % upload_destination)
        except:
            client_soket.send("Failed to save file to %s\r\n" % upload_destination)
    if len(execute):
        output = run_command(execute)
        client_soket.send(output)
    if command:
        while True:
            client_soket("<BHP:#>")
            cmd_buffer = ""
            while "\n" not in cmd_buffer:
                cmd_buffer += client_soket.recv(1024)
            response = run_command(cmd_buffer)
            client_soket.send(response)
时间: 2024-10-12 14:28:27

python 实现 netcat的相关文章

结合python实现的netcat与python实现的tcp代理,建立一个流量隧道

在proxy中 python2 proxy.py 127.0.0.1 3334 192.158.1.111 80 true 作为服务器在本地3334端口进行监听, 作为客户端连接远程web服务器192.158.1.111 80 在netcat中(我们只用到了客户端) python2 netcat.py -t 127.0.0.1 -p 3334 再在本地建立一个客户端,连接本地服务器,实现web服务器传来的流量流经本地3334端口. 我们浏览器访问127.0.0.1:3334, 显示的内容与直接访

Linux Netcat 命令

netcat用于调试和检查网络,能通过TCP和UDP在网络中读写数据.netcat是在两台电脑之间建立链接并返回两个数据流,可以建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端. 0x01.端口扫描 ncat-v -n 192.168.1.1 80 -v:显示详细信息 -n:使用纯数字ip地址,不用DNS来解析ip地址 -w 1 :设置超时时间为1 -u:扫描UDP端口,默认TCP -z:使用0IO,连接成功后立即关闭连接, 不进行数据交换 -l:连接和收听到来的

函数式 Python 中的 Pipe 与 itertools

1.迭代器与管道函数式编程简介 可迭代器(iterable),不仅限于list/str等,还包括任何包含有yield关键字的函数,后者未必有规律的迭代特征.标准库中的itertools包提供了更加灵活的产生迭代器的工具,这些工具的输入大都是已有的迭代器函数的封装,并且itertools给出的函数都是针对广义迭代器而言.而len()等函数是针对狭义迭代器,即sequence(i.e. str, list, tuple)而言的. 以内置函数range()为例,执行结果会是一次性计算好整个序列.这对于

Python Twisted 学习系列2(转载stulife最棒的Twisted入门教程)

第二部分:异步编程初探与reactor模式 作者:[email protected]http://krondo.com/?p=1247译者:杨晓伟(采用意译) 第二部分:低效的诗歌服务器来启发对Twisted机制的理解 这个系列是从这里开始的,欢迎你再次来到这里来.现在我们可能要写一些代码.在开始之前,我们都做出一些必要的假设. 关于对你的假设 在展开讨论前,我假设你已经有过用Python写同步程序的经历并且至少知道一点有关Python的Sockt编程的经验.如果你从没有写过Socket程序,或

Spark 入门(Python、Scala 版)

本文中,我们将首先讨论如何在本地机器上利用Spark进行简单分析.然后,将在入门级水平探索Spark,了解Spark是什么以及它如何工作(希望可以激发更多探索).最后两节将开始通过命令行与Spark进行交互,然后演示如何用Python写Spark应用,并作为Spark作业提交到集群上.同时也会提供相应的 Scala 版本. 1.设置Spark环境 在本机设置和运行Spark非常简单.你只需要下载一个预构建的包,只要你安装了Java 6+和Python 2.6+,就可以在Windows.Mac O

netcat 用法

功能说明:强大的网络工具 语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...] 参 数: -g<网关>  设置路由器跃程通信网关,最多可设置8个. -G<指向器数目>  设置来源路由指向器,其数值为4的倍数. -h   在线帮助. -

twisted之python代码解释

什么是twisted? twisted是一个用python语言写的事件驱动的网络框架,他支持很多种协议,包括UDP,TCP,TLS和其他应用层协议,比如HTTP,SMTP,NNTM,IRC,XMPP/Jabber. 非常好的一点是twisted实现和很多应用层的协议,开发人员可以直接只用这些协议的实现.其实要修改Twisted的SSH服务器端实现非常简单.很多时候,开发人员需要实现protocol类. 一个Twisted程序由reactor发起的主循环和一些回调函数组成.当事件发生了,比如一个c

【Python】Part1 应用1-Netcat

01 简介 netcat的主要功能是通过tcp或udp协议传输读写数据. 下面代码用python编写了tcp客户端,服务端,从而实现上传文件,本地执行命令,反弹shell三种功能. 02 代码 1 import sys 2 import socket 3 import getopt 4 import threading 5 import subprocess 6 7 listen = False #judge flag: client or server 8 target = "" #

CVE-2018-8174 EXP 0day python

usage: CVE-2018-8174.py [-h] -u URL -o OUTPUT [-i IP] [-p PORT] Exploit for CVE-2018-8174 optional arguments: -h, --help show this help message and exit -u URL, --url URL exp url -o OUTPUT, --output OUTPUT Output exploit rtf -i IP, --ip IP ip for net