慎用“from pwn import *”!和re库findall方法重名引发的问题

今天搓一个sage脚本遇到一个很无语的问题,经过调试,发现是pwntools库中的findall方法和re库中的findall方法重名导致的。这两个findall方法的用法完全不一样,稍有不慎就会踩坑。


文章目录

  • 区分
  • 问题引发
  • 如何规避


区分

re 是 Python 中用于处理正则表达式的内置模块,findall 是 re 模块中的一个函数,用于在输入的字符串中查找所有匹配指定模式的子串,并以列表的形式返回这些子串。例如:

from re import findall
result = findall(r'\d+', '12 drummers drumming, 11 pipers piping, 10 lords a-leaping')
print(result)  # 输出: ['12', '11', '10']

在这个例子中,findall 函数使用正则表达式 \d+ 在输入的字符串中查找所有的数字,并返回一个包含所有匹配数字的列表。

在pwntools中的findall方法,主要使用KMP算法来获取一个数组中某个元素的所有下标。

def findall(haystack, needle):"""findall(l, e) -> lGenerate all indices of needle in haystack, using theKnuth-Morris-Pratt algorithm.Example:>>> foo = findall([1,2,3,4,4,3,4,2,1], 4)>>> next(foo)3>>> next(foo)4>>> next(foo)6>>> list(foo) # no more appearances[]>>> list(findall("aaabaaabc", "aab"))[1, 5]"""

问题引发

如果在python的IDE中,如pycharm,那么写代码的时候就容易发现这个问题。但是如果在sage中,没有明显的语法提示,很容易就出现这个问题。

在这里插入图片描述
在这里插入图片描述

如果你使用了from pwn import *,且from re import findall导入语句在其之前,那么就会使用pwntools中的findall方法。

令人火恼的是,不会报语法错误,而是不经意间结果错了,需要你仔细调试才能发现这个问题!!!不经意间你的时间就被浪费了。

如何规避

  • 尽量不要使用from xxx import *,用什么方法在后面详细写出来。
  • 如果要使用类似from xxx import *的语句,将其放到最前面,这样后面的import会将里面的方法覆盖掉。

ATFWUS 2024-01-23

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法设计与分析实验1:利用减治法和分治法来处理同一个问题

目录 实验1 利用减治法和分治法来处理同一个问题 一、实验目的 二、实验内容和要求 【俄式乘法函数原型及功能说明】 【核心函数实现代码及时间复杂度与空间复杂度分析】 (1)俄式乘法实现代码 (2)时间复杂度:O(log(底数为2)n) (3)空间复杂度:无递归算法,为…

【unity】unity中如何随机选取list中的对象

【背景】 有一组Prefab,在游戏中希望随机Spawn实例。 【代码示例】 在脚本中创建一个List,在Unity编辑器中将需要生成的待选Prefab放入List中。通过随机Index来随机获取List元素实现目标。 using UnityEngine; using System.Collections.Generic;public class RandomSele…

mockjs使用(2)

mockjs使用(1) 4、Mock 4.1 Mock.mock() 根据数据模版生成模拟数据 Mock.mock( rurl?, rtype?, template|function(options) )问号代表该参数不必填 4.1.1 各参数及其默认值 rurl: 不必填。表示需要拦截的URL,可以使URL字符串或URL正…

Java-SPI机制

SPI基本概念 SPI(Service Provider Interface)是一种服务发现机制,为某个接口寻找服务实现的机制。这有点类似 IoC 的思想,将装配的控制权移交到了程序之外。SPI 将服务接口和具体的服务实现分离开来,将服务调用方和服…

Linux 强大的网络命令:nc命令操作方法

Netcat(或简称nc)是一个强大的网络工具,它在Linux系统中广泛使用,可用于创建各种网络连接。它被描述为"网络的瑞士军刀",因为它的功能非常灵活,可以在网络中执行多种任务。 在大多数Linux发行版中…

【笔记】Helm-3 主题-14 Helm版本支持策略

Helm版本支持策略 该文档描述了在Helm和Kubernetes之间的最大版本偏差。 支持的版本 Helm的版本用x.y.z描述,x是主版本,y是次版本,z是补丁版本,遵循 语义化版本 术语。 Semantic Versioning 2.0.0 | Semantic Versioning Helm项…

flutter 中使用flutter_slidable 实现左滑显示删除、修改菜单,仿微信

flutter pub add flutter_slidable导入 import package:flutter_slidable/flutter_slidable.dart;使用 import package:flutter/material.dart; import package:flutter_slidable/flutter_slidable.dart;void main() > runApp(const MyApp());class MyApp extends Statele…

速锐得解码匹配吉利枫叶80V/60S远程控制汽车应用B端市场

吉利枫叶80V/60S这两款车平时是不多见的,因为吉利枫叶的定位就的B端市场,包括了公务用车、共享出行、网约车、大客户定制,所以,好风凭借力,送我上青云,吉利在默默地发着一笔小财,或者说拓宽了更…

Go 复合数据类型

1. 数组(array)(OK) 数组数组的概念数组是具有固定长度且拥有零个或多个相同数据类型元素的序列 i. 元素的数据类型相同 ii. 长度固定的序列 iii. 零个或多个元素的序列 与 slice 对比 由于数组的长度固定,所以在 G…

2023年春秋杯网络安全联赛冬季赛 Writeup

文章目录 Webezezez_phppicup Misc谁偷吃了外卖modules明文混淆 Pwnnmanagerbook Reupx2023 CryptoCF is Crypto Faker 挑战题勒索流量Ezdede 可信计算 Web ezezez_php 反序列化打redis主从复制RCE&#xff1a;https://www.cnblogs.com/xiaozi/p/13089906.html <?php c…

教育大模型浪潮中,松鼠Ai的“智适应”故事好讲吗?

“计算机对于学校和教育产生的影响&#xff0c;远低于预期&#xff0c;要改变这一点&#xff0c;计算机和移动设备必须致力于提供更多个性化的课程&#xff0c;并提供有启发性的反馈。” 这是2011年5月份乔布斯与比尔盖茨最后一次会面时的记录&#xff0c;当时的电脑还十分落后…

SpringMVC第三天(RESTful)

REST风格 REST简介 REST(Representational State Transfer)&#xff0c;表现形式状态转换 传统风格资源描述形式 http://localhost/user/getById?id1 http://localhost/user/saveUser REST风格描述形式 http://localhost/user/1 http://localhost/user 优点&#xff1a; 隐…

漏洞扫描服务可以检测出哪些安全问题?

漏洞扫描服务是一种用于检测和识别计算机系统、网络和应用程序中潜在安全漏洞的服务。通过漏洞扫描&#xff0c;可以发现并修复各种类型的漏洞&#xff0c;从而提高系统的安全性。本文将介绍漏洞扫描服务可以检测出的安全问题。一、网络架构安全问题 网络架构是计算机系统的核心…

大型语言模型 (LLM)全解读

一、大型语言模型&#xff08;Large Language Model&#xff09;定义 大型语言模型 是一种深度学习算法&#xff0c;可以执行各种自然语言处理 (NLP) 任务。 大型语言模型底层使用多个转换器模型&#xff0c; 底层转换器是一组神经网络。 大型语言模型是使用海量数据集进行训练…

Yuliverse:引领区块链游戏新篇章!

数据源&#xff1a;Yuliverse Dashboard 作者&#xff1a;lesleyfootprint.network 什么是 Yuliverse Yuliverse 是一款元宇宙游戏的先锋&#xff0c;是一款主打 Explore to earn 和 Social to earn 的链游。 这是一款能让你边玩边赚钱的免费区块链游戏&#xff0c;得到 LI…

如何在WordPress中使用 AI 进行 SEO(12 个工具)

您想在 WordPress 中使用 AI 进行 SEO 吗&#xff1f; 人工智能正在对 SEO 行业产生重大影响。已经有优秀的人工智能 SEO 工具&#xff0c;您可以使用它们来提高您的 SEO 排名&#xff0c;而无需付出太多努力。 在本文中&#xff0c;我们将向您展示如何通过我们精心挑选的工具…

代码随想录第十八天 513 找树左下角的值 112 路径之和 106 从中序与后序遍历序列构造二叉树

LeetCode 513 找树左下角的值 题目描述 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路 1.确定递…

牛客竞赛算法入门题单打卡 M younik要排队

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 Younik挂好号之后&#xff0c;就去找医生了。但是她没想到&#xff0c;看医生居然也要排队&#xff01; 于是younik可怜兮兮地站在大厅里&#xff0c;盯着墙上的显示屏&#xff0c;…

MySQL用户管理

1.用户 1.1 用户信息 mysql> use mysql; Database changed mysql> select host,user,authentication_string from user; --------------------------------------------------------------------- | host | user | authentication_string | --…