微博看到这样一个短租信息,其中亮点是房东把电话号码藏在代码中,需要能读懂代码才能把电话号码解出来:
以下代码是我把短租信息中的代码照抄下来的:
int [] arr = new int[]{8,2,1,0,3}; int [] index = new int[]{2,0,3,2,4,0,1,3,2,3,3}; String tel = ""; for (int i : index) { tel +- arr[i]; } System.out.println("联系方式:" + tel);
-_-!!!我并不知道是个什么毛语言写的,不过在看了两遍这个代码之后还是看懂了代码的意思。
很多语言中都有for 语句,所以代码的大致意思显然是迭代索引取arr的数字还原出电话号码。
一般现在大家都留的是手机号,而中国手机号1开头,所以可见索引从0开始。
所以当迭代index,i == 2时,取出arr中第三位,电话号码第一位为1
i == 0时,取出arr中的第一位,得到8,
i == 3时,取出arr中的第四位,得到0,和之前到数字拼起来可以得到电话码前三位是180,以此类推...
可以写代码来解,所以就写了个python一行流的代码来解了:
>>> arr = "82103" ; index = "20324013233" ; print("电话:",''.join([arr[r] for r in map(int,list(index))])) 电话: 18013820100
-_-百度搜索 18013820100 发现居然有一些人在提问怎么把号码解出来。。。这跟本不难嘛。
还没完,要是我们也想弄一个类似这样的招聘或者招租的信息呢?我们要把联系方式藏到代码中。
可以写代码那就写代码,写个python用来生成的包含电话号码的python代码!
""" 2016年6月25日 07:32:28 码农的联系方式 """ temp = """arr = %s index = %s tel = '' for i in index: tel += arr[i] print("电话号码:" + tel) """ def encode(tel): arr = list(set(list(tel))) index = [arr.index(r) for r in list(tel)] return temp % (arr,index) code=encode("15099003422") print(code) #因为code字符串是一段合法的python代码,用exec执行后可以电话号码解出来。 exec(code)
运行结果:
arr = ['3', '2', '9', '1', '5', '0', '4'] index = [3, 4, 5, 2, 2, 5, 5, 0, 6, 1, 1] tel = '' for i in index: tel += arr[i] print("电话号码:" + tel) 电话号码:15099003422
好像看了一些奇怪的东西

分类:
不是python是魔法
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET程序启动就报错,如何截获初期化时的问题json
· 理解 C# 中的各类指针
· C#多线程编程精要:从用户线程到线程池的效能进化论
· 如何反向绘制出 .NET程序 异步方法调用栈
· 领域驱动设计实战:聚合根设计与领域模型实现
· DeepSeek+Coze实战:从0到1搭建小红书图文改写智能体(喂饭级教程)
· 【SQL周周练】一千条数据需要做一天,怎么用 SQL 处理电表数据(如何动态构造自然月)
· 如何医治一条慢SQL?
· springAI实现一个MCP-Server
· .NET程序启动就报错,如何截获初期化时的问题json