独立开发者系列(27)——python生成文本

在简单的安全漏洞测试里面,文本的信息自动化填充生成和储存还有使用非常有用。简单的比如IP段的生成,检查某个IP段的服务器存在数量一般取俩个IP段

比如101.35.*.* 最多256*256 条IP 信息 分别发出对应的检测命令,可以知道该IP段有多少可以查询到。如果检测到服务器,就可以分别检测3306端口/22端口的弱口令,一般是读取密码本 进行密码探测。此类的应用很多,大部分的安全攻击人员写简单脚本,也是利用这种思路原理。所以写代码做安全的时候,需要考虑到这些层面。简单的实用方面,就是模拟简单的注册,给系统增加用户量,有些系统需要一些虚拟用户来实现网站的数据效果。
  所以这里来使用python来实现一个基础的俩个效果,生成10W的虚拟用户资料,读取我们生成的资料文本,然后打印下,具体的通途和使用逻辑,需要根据我们自己的业务场景再去实现。
   实现1个简单的目标 : 生成10W个机器人账号,手机号+密码+昵称+性别的方式,存档到txt里面。(一些网站早期为了吸引用户会开放注册账号,风控比较低的情况下,很多看有价值,会生成一批账号密码进行注册) 或者自己的系统里面,需要一批僵尸号生成注册,但是需要把账号弄的真实一些,但是又不能直接修改服务端的代码,否则会造成一些不必要的代码风险。考虑到10W代码的读写,已经开始有时间差距和内存使用差距效应,所以写代码的时候,同时加入了俩者的信息获取。使用了time模块和tracemalloc模块进行跟踪,同时为了随机性,我们使用了python的random模块,因为需要读写文件,我们使用到了os模块,随机的字符串字母特殊符号我们使用到了string模块。

在第一个版本里面,我们特意直接使用代码的循环,10W次I/O,可以发现实现时间要30秒,而采用第二种方法,只需要3秒,这充分说明,在代码里面我们减少反复I/O的重要性,还有做I/O操作的时候,需要考虑性能相关问题。I/O对性能的影响远比运算要大。

本次我们主要写了几个函数: 封装了一个写入函数,获取随机注册名,随机密码,随机性别,随机昵称的方法。

def  create_account (num = 10000) :strings = ''for i in range(1, num):uname = generate_rand(10, 4)passwd = generate_rand(8, 2)nickname = str(generate_chinese_nickname(1)[0])sexnum = random.randint(1,2)sex = "male" if sexnum==1 else "female"stra = uname + "|" + passwd + "|"+nickname +"|"+ sex +"\n"strings = strings + straputFileContent(strings, "account.txt")



   随机生成账号密码相关:

def generate_rand(length, char_type=1):char_sets = {1: string.ascii_letters + string.digits + string.punctuation,2: string.ascii_letters + string.digits,3: string.digits,4: string.digits}# 获取对应的字符集characters = char_sets.get(char_type, char_sets[4])# 生成随机字符串rtchar = ''.join(random.choice(characters) for _ in range(length))if char_type == 4:rtchar = '1' + rtcharreturn rtchar

中文昵称的随机生成:

def generate_chinese_nickname(count=1):# 定义昵称的前缀、中缀和后缀列表first = ["优雅", "从容", "淡定", "忧伤", "犹豫", "清纯", "秀丽"]second = ["琴声", "居住", "沧桑", "厚重", "流水", "无痕", "轮回"]last = ["少年", "少女", "老人", "兄弟", "妈妈", "爸爸", "爷爷", "奶奶"]# 使用列表推导式生成昵称列表nicknames = [random.choice(first) + random.choice(second) + random.choice(last)for _ in range(count)]return nicknames

封装个写入函数

def putFileContent(cont, fileName='jobs.txt'):if not os.path.exists(fileName):with open(fileName, 'w') as file:file.write('')with open(fileName, 'a', encoding='utf-8') as file:file.write(cont)


    我们定义一个写入函数和一个随机生成字符串的函数,同时生成 10W个账号,然后写个最简单的版本出来。用初步的测量时间测试下代码跑的时间。代码运行时间:32.20751476287842秒 。很方便我们完成了我们第一个目标,生成了 10W个账号给我们使用。

学习点,一种是每次都生成一个账号密码,然后写入txt,10W账号花费32S,第二种生成10W个号码,拼接成一个很长的字符串,直接写入txt 花费3秒,所以可以看到 反复I/O对系统的性能损耗是非常严重的,偶尔的时候,我们可以多开销一些内存来提高代码的运行效率。

     完成了我们生成我们自己账号的机器人账号本。其实该账号本可以是任意的密码本/IP本,我们在后续其他操作里面,需要扫描,批量化的时候,都是一样的使用原理。

读取指定行的txt进行操作:

def getFmem(start =0 ,end = 10000) :with open('account.txt', 'r',encoding='utf-8') as file:for current_line, line in enumerate(file):if current_line < start:continueif current_line >= end:breakacc = line.strip()  # 使用strip()去除行尾的换行符arr = acc.split("|")print(arr[0])print(arr[1])print(arr[2])print(arr[3])time.sleep(2)

 前面主要实现的目标是生成我们的 10W个账号密码,同时储存到对应文本里,方便我们自己进行备用,在一些验证不严格的地方,多注册几个账号,还是比较有好处的,这样也方便对账号进行管理。其中包括增加对代码内存和时间的监测,代码的随机账号密码生成,同时理解了反复I/O会对性能造成巨大的负面影响。

现在实现我们需要的第二个目标,我们希望我们在使用这些账号密码的时候,能指定具体的行数使用,具体的使用规则,可能是通过调用内部接口的方式,也可能是直接调用外部不严谨的注册接口方式。我们希望实现一个方法,能指定我们使用任意行数的账号|手机号|性别|昵称|简单介绍的生成。具体的调用方法,我们可以在以后的逻辑里面实现。这里我们暂停2秒表示正在调用过程执行中。

读取文件的时候,需要注意,代码默认是gbk读取汉字,所以open的时候要特别指定utf8编码 否则解析是错误的。

这样就完成了本次python生成账号储存在文本里面,然后在适当的时候,使用文本注册对应机器模拟人的方法。

随机效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3245799.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

F1-score(标准度量)

什么是F1-score&#xff1f; F1分数&#xff08;F1-score&#xff09;是分类问题的一个衡量指标。一些多分类问题的机器学习竞赛&#xff0c;常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数&#xff0c;最大为1&#xff0c;最小为0&#xff0c;如公式1所示…

Java面试八股之简述单例redis并发承载能力

简述单例redis并发承载能力 单例Redis实例的并发承载上限受到多种因素的影响&#xff0c;包括但不限于硬件性能、网络条件、数据集大小、操作类型以及Redis自身的配置。以下是几个关键因素的详细说明&#xff1a; 硬件性能&#xff1a; CPU&#xff1a;Redis主要依赖于CPU的…

蓝桥 双周赛算法赛【小白场】

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 蓝桥第14场小白入门赛T1/T2/T3 题目&#xff1a; T1照常还是送分题无需多…

【数据集处理工具】根据COCO数据集的json标注文件实现训练与图像的文件划分

根据COCO数据集的json标注文件实现训练与图像的文件划分 一、适用场景&#xff1a;二、COCO数据集简介&#xff1a;三、场景细化&#xff1a;四、代码优势&#xff1a;五、代码 一、适用场景&#xff1a; 适用于一个常见的计算机视觉项目应用场景&#xff0c;特别是当涉及到使…

硅谷裸机云多IP服务器怎么样?

硅谷裸机云多IP服务器是一种在硅谷地区提供的、具有多个IP地址的裸机云服务器。这种服务器结合了裸机服务器的高性能和云服务器的灵活性&#xff0c;同时提供了多个IP地址&#xff0c;为用户的各种需求提供了支持。以下是关于硅谷裸机云多IP服务器的一些详细信息&#xff0c;ra…

【Docker】Docker 的数据管理与镜像创建

目录 一.数据管理 1.数据卷 2.数据卷容器 二.端口映射 三.容器互联 四.Docker 镜像的创建 1.基于现有镜像创建 1.1.首先启动一个镜像&#xff0c;基于镜像创建容器&#xff0c;更新容器内容 1.2.将修改后的容器提交为新的镜像&#xff0c;需要使用该容器的 ID 号创建新…

嵌入式人工智能(9-基于树莓派4B的PWM-LED呼吸灯)

1、PWM简介 (1)、什么是PWM 脉冲宽度调制(PWM)&#xff0c;是英文“Pulse Width Modulation”的缩写&#xff0c;简称脉宽调制&#xff0c;是在具有惯性的系统中利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术&#xff0c;广泛应用在从测量、通信到功率控制…

基于mcu固件反汇编逆向入门示例-stm32c8t6平台

基于mcu固件反汇编逆向入门示例-stm32c8t6平台 本文目标&#xff1a;基于mcu固件反汇编逆向入门示例-stm32c8t6平台 按照本文的描述&#xff0c;应该可以在对应的硬件上通实验并举一反三。 先决条件&#xff1a;拥有C语言基础&#xff0c;集成的开发环境&#xff0c;比如&am…

集线器、交换机、路由器的区别,冲突域、广播域

冲突域 定义&#xff1a;同一时间内只能有一台设备发送信息的范围。 分层&#xff1a;基于OSI模型的第一层物理层。 广播域 定义&#xff1a;如果某个站点发出一个广播信号&#xff0c;所有能接受到这个信号的设备的范围称为一个广播域。 分层&#xff1a;基于OSI模型的第二…

Makefile学习:第一章 GCC的简易用法

参考&#xff1a;《鸟哥的LINUX私房菜》 一、编译与链接 假设我们先在linux的控制台界面中使用 nano hello.c &#xff0c;进入文件后写一个简单的程序。现在要用GCC来编译运行&#xff0c;我们有两种方式&#xff1a; // hello.c #include <stdio.h>int main() {print…

PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动一、理解索引抖动二、索引抖动的影响三…

抖音短视频seo矩阵系统源码(搭建技术开发分享)

#抖音矩阵系统源码开发 #短视频矩阵系统源码开发 #短视频seo源码开发 一、 抖音短视频seo矩阵系统源码开发&#xff0c;需要掌握以下技术&#xff1a; 网络编程&#xff1a;能够使用Python、Java或其他编程语言进行网络编程&#xff0c;比如使用爬虫技术从抖音平台获取数据。…

玩转HarmonyOS NEXT之AppStorage应用全局UI状态存储

概述 AppStorage是应用全局的UI状态存储&#xff0c;是和应用的进程绑定的&#xff0c;由UI框架在应用程序启动时创建&#xff0c;为应用程序UI状态属性提供中央存储。 AppStorage是在应用启动的时候会被创建的单例。它的目的是为了提供应用状态数据的中心存储&#xff0c;这…

LeetCode热题100刷题16:74. 搜索二维矩阵、33. 搜索旋转排序数组、153. 寻找旋转排序数组中的最小值、98. 验证二叉搜索树

74. 搜索二维矩阵 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int row matrix.size();int col matrix[0].size();for(int i0;i<row;i) {//先排除一下不存在的情况if(i>0&&matrix[i][0]>target…

redis安装,启动客户端、验证(redis第一次作业)

Redis简介 全称&#xff1a; mote ctionary erver &#xff08;远程字典服务器&#xff09;。是完全开源免费的&#xff0c;用 C 语言编写的&#xff0c;遵守 BSD协议。是一个高性能的 (key/value) 分布式内存数据库&#xff0c;基于内存运行并支持持久化的 NoSQL 数据库&#…

在 Windows 上开发.NET MAUI 应用_1.安装开发环境

开发跨平台的本机 .NET Multi-platform App UI (.NET MAUI) 应用需要 Visual Studio 2022 17.8 或更高版本&#xff0c;或者具有 .NET MAUI 扩展的最新 Visual Studio Code。要开始在 Windows 上开发本机跨平台 .NET MAUI 应用&#xff0c;请按照安装步骤安装 Visual Studio 20…

Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别

目录 引言&#xff1a; 正文&#xff1a; 一、Serial GC工作原理 年轻代垃圾回收&#xff08;Minor GC&#xff09;&#xff1a; 老年代垃圾回收&#xff08;Major GC或Full GC&#xff09;&#xff1a; 二、年轻代和老年代的区别 年轻代&#xff08;Young Generation&a…

【简历】郑州某二本学院:前端秋招简历指导,简历通过率接近于0

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份二本前端同学的校招简历。25届的二本同学求职方向主要是在小公司&#xff0c;但是这个同学他故意把学校放在简历最后&#xff0…

橙芯创想:香橙派AIPRO解锁升腾LLM与Stable Diffusion的创意密码

文章目录 引言 一. 香橙派AI PRO配置以及展示优秀的扩展能力实物展示 二、Ascend-LLM模型部署开机xshell连接香橙派实战运行部署 三、Stable Diffusion介绍sd模型&#xff0c;vae&#xff0c;lora模型进入应用文生图工作区调参区图生图 四、体验总结总结性能噪音便捷性 引言 在…

linux的学习(七):读取,函数,正则表达式,文本处理工具cut和awk

##简介 shell编程中的读取&#xff0c;函数&#xff0c;正则表达式&#xff0c;文本处理工具的简单使用 read read&#xff1a;读取控制台的输入 参数&#xff1a; -p&#xff1a;指定读取时的提示符-t&#xff1a;等待读取的时间 脚本例子 编写i.sh脚本&#xff0c;enter…