python 里面的 使用bh_ssh server 的写法

import socket
import paramiko
import threading
import sys
host_key = paramiko.RSAKey(filename=‘test_rsa.key‘)
class Server (paramiko.ServerInterface):
    def __init__(self):
        self.event = threading.Event()
    def check_channel_request(self,kind,chanid):
        if kind == ‘session‘:
            return paramiko.OPEN_SUCCEEDED
        return paramiko.OPEN_FAILED_ADMINISTRAIVELY_PROHIBITED
    def check_auth_password(self,username,password):
        if (username == ‘justin‘) and (password == ‘lovesthepython‘):
            return paramiko.AUTH_SUCCESSFUL
        return paramiko.AUTH_FAILED
server = sys.argv[1]
ssh_port = int(sys.argv[2])
try:
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    sock.bind((server,ssh_port))
    sock.listen(100)
    print ‘[+] Listening for connection...‘
    client,addr = sock.accept()
except Exception,e:
    print ‘[-] Listen failed:‘+str(e)
    sys.exit(1)
print ‘[+] Got a connection!‘
try:
    bhSession = paramiko.Trasport(client)
    bhSession.add_server_key(host_key)
    server = Server()
    try:
        bhSession.start_server(server=server)
    except paramiko.SSHException,x:
        print ‘[-] SSH negotiation failed.‘
    chan = bhSession.accept(20)
    print ‘[+] Authenticated!‘
    print chan.recv(1024)
    chan.send(‘Welcome to bh_ssh‘)
    while True:
        try:
            command = raw_input("Enter command:").strip(‘\n‘)
            if command != ‘exit‘:
                chan.send(command)
                print chan.recv(1024)+‘\n‘
            else:
                chan.send(‘exit‘)
                print ‘exiting‘
                bhSession.close()
                raise Exception(‘exit‘)
        except KeyboardInterrupt:
            bhSession.close()
except Exception,e:
    print ‘[-] Caught exception:‘+str(e)
    try:
        bhSession.close()
    except:
        pass
    sys.exit(1)
时间: 2024-10-24 10:34:17

python 里面的 使用bh_ssh server 的写法的相关文章

使用 Python 在 Caché 和 Sql Server 之间同步数据

任务目标:抽取 Caché 中的数据,导入 Sql Server 中. 遇到的问题: 1.UnicodeEncodeError: ‘ascii’ codec can’t encode characters in…… 当程序中出现非ascii编码时,python 的处理常常会报这样的错.补救代码如下: stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr reload(sys) sys.stdin,sys.stdout,sys.stderr=stdi,std

Python学习笔记20:server先进

我们不依赖于一个框架,CGI如果是,只能使用socket介面.他完成了一个可以处理HTTP要求Pythonserver. 基于,不管是什么的计算机的操作系统(推荐Linux)和Python该计算机可被用作HTTPserver采用.要设置你的网站. 改写上一篇文章中的程序.并引入更高级的Python包,以写出更成熟的Pythonserver. 一 支持POST 我们首先改写原文中的HTTPserver,从而让该server支持更加丰富的HTTP请求. 相对于原程序,这里增添了表格以及相应"POST

绕过010Editor网络验证(用python做一个仿真http server真容易,就几行代码)

010Editor是一款非常强大的十六进制编辑器,尤其是它的模板功能在分析文件格式时相当好用!网上现在也有不少010Editor的破解版,如果没钱或者舍不得花钱买授权的话,去官方下载安装包再使用注册机算号是一个比较安全的选择.不过010Editor是有网络验证功能的,可以在本地架一个HTTP服务器来绕过这个验证(网上也能找到通过修改注册表绕过的方法,没有验证).使用Python的BaseHTTPServer模块就可以实现这个功能(继承BaseHTTPRequestHandler并重写do_GET

50行python代码实现个代理server(你懂的)

之前遇到一个场景是这种: 我在自己的电脑上须要用mongodb图形client,可是mongodb的server地址没有对外网开放,仅仅能通过先登录主机A,然后再从A连接mongodbserverB. 本来想通过sshport转发的,可是我没有从机器A连接ssh到B的权限.于是就自己用python写一个. 原理非常easy. 1.开一个socket server监听连接请求 2.每接受一个客户端的连接请求,就往要转发的地址建一条连接请求.即client->proxy->forward.prox

Python+Flask搭建mock api server

前言: 近期由于工作需要,需要一个Mock Server调用接口直接返回API结果: 假如可以先通过接口文档的定义,自己模拟出服务器返回结果,直接对接口基本功能进行联调测试并编写自动化测试脚本,等服务器上线之后,切换server地址,直接可以简化调试时间,缩短项目测试周期: 准备工作 Python安装 Flask安装:pip install flask Get 请求 简单的python代码 from flask import abort, jsonify, Flask, request, Res

python学习过程中if的几种写法

python实例学习中遇到的小问题,我对题目改动一下需要显示每一档的结果,可以用列表和if语句来完成,文章最后是原题目和答案 一.if的方式 A.程序 # !/usr/bin/python# -*- coding: UTF-8 -*- i = int(input('净利润:'))arr = [1000000, 600000, 400000, 200000, 100000, 0]rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]r = 0for idx in r

10.python网络编程(socket server 实现并发 part 2)

一.基于tcp的socket通信的基本原理分析. 基于tcp的socket通信,主要依靠两个循环,分别是连接循环和通信循环. 这个前面的文章有写过,在这里就不再重复了. 二.socketserver实现多并发的原理分析. 1.server类: 2.reques类. 类继承关系: 示例代码: import socketserver import struct import json import os class FtpServer(socketserver.BaseRequestHandler)

Python单例的一种简单写法

最原始的想法就是每个类都重写new方法. class Dog: dog = None def __new__(cls, *args, **kwargs): if cls.dog is None: cls.dog = object.__new__(cls) print('create singleton over') return cls.dog def __init__(self, name): print('init is called') self.name = name # 下面这句话会报

python测试开发django-58.MySQL server has gone away错误的解决办法

前言 使用django执行sql相关操作的时候,出现一个"MySQL server has gone away"错误,后来查了下是sql执行过程中,导入的文件较大时候,会出现这个异常. 检查了下sql语句,确实有插入图片,图片较大导致出现MySQL server has gone away. 该问题是max_allowed_packet配置的默认值设置太小,只需要相应调大该项的值之后再次导入便能成功. 该项的作用是限制mysql服务端接收到的包的大小,因此如果导入的文件过大则可能会超过