构建SSH僵尸网络
import argparse
import paramiko# 定义一个名为Client的类,用于表示SSH客户端相关操作
class Client:# 类的初始化方法,接收主机地址、用户名和密码作为参数def __init__(self, host, user, password):self.host = hostself.user = userself.password = password# 创建一个paramiko的SSHClient实例,用于后续的SSH连接操作self.client = paramiko.SSHClient()# 设置自动添加主机密钥策略,避免出现未知主机密钥时连接失败self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 调用连接方法,尝试建立SSH连接self.connect()# 定义连接方法,用于建立到指定主机的SSH连接def connect(self):try:# 使用提供的主机、用户名和密码进行SSH连接self.client.connect(self.host, username=self.user, password=self.password)print(f"[+] Connected to {self.host}")except Exception as e:print(f"[-] Error connecting to {self.host}: {e}")# 用于在已连接的SSH会话上执行命令,并返回命令的输出结果def send_command(self, cmd):# 在SSH会话上执行命令,获取标准输入、标准输出和标准错误输出流stdin, stdout, stderr = self.client.exec_command(cmd)# 读取标准输出内容,并使用utf-8编码将字节数据转换为字符串output = stdout.read().decode('utf-8')# 读取标准错误输出内容,并进行同样的编码转换error = stderr.read().decode('utf-8')if error:print(f"[-] Error executing command on {self.host}: {error}")return output# 类方法,用于向所有已添加到botNet列表中的客户端发送相同命令,并收集结果@classmethoddef botnet_command(cls, command):results = []# 遍历botNet列表中的每个客户端实例for client in cls.botNet:# 在每个客户端上执行命令,并获取输出结果output = client.send_command(command)# 将客户端的主机地址和对应的命令输出结果作为元组添加到results列表中results.append((client.host, output))return results# 类方法,用于向botNet列表中添加一个新的客户端实例@classmethoddef add_client(cls, host, user, password):client = cls(host, user, password)cls.botNet.append(client)# 类方法,用于关闭所有已添加到botNet列表中的客户端的SSH连接@classmethoddef close_all_connections(cls):for client in cls.botNet:client.client.close()print(f"[+] Connection to {client.host} closed")# 初始化一个空的botNet列表,用于存储所有的客户端实例
Client.botNet = []def main():# 创建一个命令行参数解析器对象,用于解析用户输入的命令行参数parser = argparse.ArgumentParser(description='SSH Botnet Client')# 添加一个名为--host的命令行参数,可接收多个值,用于指定要连接的主机地址parser.add_argument('--host', nargs='+', help='Host(s) to connect to')# 添加一个名为--user的命令行参数,可接收多个值,用于指定SSH连接的用户名parser.add_argument('--user', nargs='+', help='Username(s) for SSH connection')# 添加一个名为--password的命令行参数,可接收多个值,用于指定SSH连接的密码parser.add_argument('--password', nargs='+', help='Password(s) for SSH connection')args = parser.parse_args()# 检查是否缺少必要的命令行参数,如果缺少则报错if not args.host or not args.user or not args.password:parser.error('Missing required arguments')# 检查主机地址、用户名和密码的数量是否一致,如果不一致则报错if len(args.host)!= len(args.user) or len(args.host)!= len(args.password):parser.error('The number of hosts, users, and passwords must be the same')# 通过循环,为每个主机地址、用户名和密码的组合创建一个Client实例,并添加到botNet列表中for host, user, password in zip(args.host, args.user, args.password):Client.add_client(host, user, password)print("Connected to all hosts. Enter 'exit' to quit.")while True:command = input("Enter command: ")if command.lower() == 'exit':breakresults = Client.botnet_command(command)for host, output in results:print(f"Output from {host}:")print(output)# 关闭所有已添加的客户端的SSH连接Client.close_all_connections()if __name__ == '__main__':main()
运行方法: 第一种:终端控制:python your_script.py --host IP1 IP2 --user user1 user2 --password password1 password2

输出结果:

相关文章:
构建SSH僵尸网络
import argparse import paramiko# 定义一个名为Client的类,用于表示SSH客户端相关操作 class Client:# 类的初始化方法,接收主机地址、用户名和密码作为参数def __init__(self, host, user, password):self.host hostself.user userself.password pa…...
WPF中MVVM工具包 CommunityToolkit.Mvvm
CommunityToolkit.Mvvm,也称为MVVM工具包,是Microsoft Community Toolkit的一部分。它是一个轻量级但功能强大的MVVM(Model-View-ViewModel)库,旨在帮助开发者更容易地实现MVVM设计模式。 特点 独立于平台和运行时&a…...
学习空闲任务函数
一、user_StopEnterTask 停止 进入任务 /* Private includes -----------------------------------------------------------*/ //includes #include "user_TasksInit.h" #include "user_MPUCheckTask.h"#include "ui.h" #include "ui_Hom…...
Hyper-v中ubuntu与windows文件共享
Hyper-v中ubuntu与windows文件共享 前言相关链接第一步--第一个链接第二步--第二个链接测试与验证 前言 关于Hyper-V的共享我搞了好久,网上的很多教程太过冗余,我直接采用最简单的办法吧 相关链接 Hyper-V中Ubuntu 同windows系统共享文件夹-百度经验 …...
【软件工程】一篇入门UML建模图(类图)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…...
Windows 安装Docker For Desktop概要
Windows 安装docker 下载部分的工作需要使用科学技术。如果没有可以联系博主发送已下载好的文件。 本文档不涉及技术的讲解,仅有安装的步骤。 准备工作 包含下载与环境准备,下载的文件仅下载,在后续步骤进行安装。 微软关于wsl的文档&…...
解决循环依赖报错问题
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘asyncTaskServiceImpl’: Bean with name ‘asyncTaskServiceImpl’ has been injected into other beans [resignServiceImpl] in its raw version as part…...
代码随想录第46期 单调栈
这道题主要是单调栈的简单应用 class Solution { public:vector<int> dailyTemperatures(vector<int>& T) {vector<int> result(T.size(),0);stack<int> st;st.push(0);for(int i1;i<T.size();i){if(T[i]<T[st.top()]){st.push(i);}else{wh…...
中仕公考怎么样?事业编面试不去有影响吗?
事业编考试笔试已经通过,但是面试不去参加会有影响吗? 1. 自动放弃面试资格:未能按时出席事业单位的面试将被视为主动放弃该岗位的竞争机会。 2. 个人信誉问题:面试作为招聘流程的关键步骤,无故缺席可能被解释为诚信…...
OMV7 树莓派 tf卡安装
升级7之后,问题多多,不是docker不行了,就是代理不好使 今天又重装了一遍,用官方的链接,重新再折腾一遍…… 使用raspberry pi imager安装最新版lite OS。 注意是无桌面 Lite版 配置好树莓派初始化设置࿰…...
Go语言24小时极速学习教程(五)Go语言中的SpringMVC框架——Gin
作为一个真正能用的企业级应用,怎么能缺少RESTful接口呢?所以我们需要尝试在Go语言环境中写出我们的对外接口,这样前端就可以借由Gin框架访问我们数据库中的数据了。 一、Gin框架的使用 1. 安装 Gin 首先,你需要在你的 Go 项目…...
【汇编】c++游戏开发
由一起学编程创作的‘C/C项目实战:2D射击游戏开发(简易版), 440 行源码分享来啦~’: C/C项目实战:2D射击游戏开发(简易版), 440 行源码分享来啦~_射击c-CSDN博客文章浏览…...
Android Studio | 修改镜像地址为阿里云镜像地址,启动App
在项目文件的目录下的 settings.gradle.kts 中修改配置,配置中包含插件和依赖项 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urlu…...
Rocky linux8 安装php8.0
Rocky linux8 安装php8.0 1.安装remi源2.列出php版本3.变更php版本,Rocky8有提供php8版本,所以切换Rocky8提供的版本,而不是remi提供的版本,不过remi有提供php8.1和php8.2版本。4.切换成remi提供的8.0版本5.安装phpendl 1.安装rem…...
Ubuntu 18 EDK2 环境编译
视频:在全新的Ubuntu上从零搭建UEFI的EDK2开发环境 开始:git clone https://github.com/tianocore/edk2.git 开始编译BaseTools前先更新一下子模块:git submodule update --init ,然后:make -C BaseTools/ 问题1&a…...
C语言项⽬实践-贪吃蛇
目录 1.项目要点 2.窗口设置 2.1mode命令 2.2title命令 2.3system函数 2.Win32 API 2.1 COORD 2.2 GetStdHandle 2.3 CONSOLE_CURSOR_INFO 2.4 GetConsoleCursorInfo 2.5 SetConsoleCursorInfo 2.5 SetConsoleCursorPosition 2.7 GetAsyncKeyState 3.贪吃蛇游戏设…...
智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁
近日,贵州省贵阳市中级人民法院对余华英拐卖儿童案做出了一审宣判,判处其死刑,剥夺政治权利终身,并处没收个人全部财产。这一判决不仅彰显了法律的威严,也再次唤起了社会对拐卖儿童犯罪的深切关注。 余华英自1993年至2…...
Spring:IoC/DI加载properties文件
Spring框架可以通过Spring的配置文件完成两个数据源druid和C3P0的配置(Spring:IOC/DI配置管理第三方bean),但是其中包含了一些问题,我们来分析下: 这两个数据源中都使用到了一些固定的常量如数据库连接四要素…...
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…...
深挖C++赋值
详解赋值 const int a 10; int b a;&a 0x000000b7c6afef34 {56496} &a 0x000000b7c6afef34 {10} 3. &b 0x000000b7c6afef54 {10} 总结: int a 10 是指在内存中(栈)中创建一个int (4 byte)大小的空间…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
