使用PIL python进行编码,移位密码,暴力哈希和图片创建。 用r0ot-mi Cryto解决问题。 第一部分

图片

本文包含针对编码的ASCII编码和UU编码任务的解决方案,哈希消息摘要5和哈希SHA-2(用于查找哈希的逆图像),Shift密码(用于移位密码)和Pixel Madness(用于构成图片)。

组织信息
特别是对于那些想要学习新知识并在信息和计算机安全性的任何领域中发展的人们,我将撰写和讨论以下类别:

  • PWN;
  • 密码学(加密);
  • 网络技术(网络);
  • 反向(反向工程);
  • 隐写术(Stegano);
  • 搜索和利用Web漏洞。

除此之外,我将分享我在计算机取证,恶意软件和固件分析,对无线网络和局域网的攻击,进行笔测试和编写漏洞利用程序方面的经验。

为了使您可以查找有关新文章,软件和其他信息的信息,我在Telegram中创建了一个频道,并创建了一个小组来讨论 ICD领域的所有问题 。 另外,我会亲自考虑您的个人要求,问题,建议和建议, 并会回答所有人

提供所有信息仅出于教育目的。 对于由于使用本文档而获得的知识和方法对某人造成的任何损害,本文档的作者不承担任何责任。

编码-ASCII


让我们从第一个工作开始-编码ASCII。

图片

我们传递给任务本身。 我们看到了第16个字符的序列。 第一个假设是常规十六进制(所有字符均以第16个形式显示)。

图片

s = "4C6520666C6167206465206365206368616C6C656E6765206573743A203261633337363438316165353436636436383964356239313237356433323465" s.decode("hex") 

图片

我们得到答案并继续前进。

编码-UU


图片

我们传递给任务本身。 即使任务名称中有提示,也很容易区分UUE中的文件(用于传输包含非文本数据的文件的编码)-它们从以下行开始:

 Begin_--_- 

图片

 s = '''begin 644 root-me_challenge_uudeview B5F5R>2!S:6UP;&4@.RD*4$%34R`](%5,5%)!4TE-4$Q%"@`` ` end''' f = open('./uu.enc', 'w') f.write(s) f.close() import uu uu.decode('uu.enc', 'uu.dec') ans = open('uu.dec', 'r').read() 

图片

我们交出国旗。

哈希-消息摘要5


图片

我们被要求找到md5哈希的原型。 使用此站点(https://md5decrypt.net/)可以轻松完成此操作。 但是,出于培训目的,我们当然使用哈希猫。 为此,请使用以下参数和代码:

  • -a 0-搜索字典;
  • -m 0-哈希类型MD5;
  • File.hash-带有哈希的文件;
  • rockyou.txt-我们的字典;
  • --force-忽略错误。

图片

我们继续下一个任务。

哈希-SHA-2


图片

作为答案,您需要从该哈希的逆像给出SHA1哈希。 事实是,这是一个额外的角色。

图片

删除它。 为了确定哈希算法,我们使用了hashid程序。

图片

在提出的算法中,最有可能的SHA-256。 Hashcat展示了如何使用hashcat解决此类任务,现在我们将使用
网站

图片

仍然需要从这条线中提取SHA-1。

 from hashlib import * sha1('4dM1n').hexdigest() 

图片

移位密码


图片

好吧,借助加密算法,它们可以为我们提供帮助。 相同的凯撒密码,只有从零到字母长度的范围内不会发生移位,而是根据一个字节的所有256个值进行。 我们将编写一个程序,该程序首先将每个字符移位1,然后再移位2,依此类推。 最多255。

 s = open('ch7.bin', 'r').read() for x in range(255): “”.join( chr((ord(y) + x)%256 ) ) for y in s) 

图片

在各行中,我们找到了包含答案的那一行。

图片

像素疯狂


图片

我们得到了几种表达式,最后他们说0是白色,1是黑色。 结果很可能应该是一张图片。 我想在表达式中您不需要相乘,而需要重复某个字符所需的次数。

您可以使用eval函数快速执行表达式,但首先需要将格式0x1更改为'0'* 1。

 s = ''''0x3+1x1+0x1+0x1+0x7+1x2+0x15+1x1+0x8+1x1+0x8+1x1+0x1+1x1+0x1+1x1+0x1+1x1+0x1+1x1+0x3+1x1+0x1+1x1+0x3+1x1+0x1+1x4+0x2+1x1+0x25 '0x2+1x1+0x4+1x1+0x4+1x3+0x1+1x2+0x2+1x8+0x11+1x4+0x1+1x3+0x6+1x2+0x4+1x1+0x4+1x2+0x7+1x4+0x4+1x2+0x7+1x2+0x3+1x2+0x3 '0x3+1x1+0x2+1x1+0x2+1x1+0x11+1x2+0x2+1x3+0x7+1x1+0x4+1x2+0x2+1x2+0x7+1x1+0x6+1x1+0x2+1x1+0x4+1x3+0x1+1x1+0x4+1x1+0x2+1x1+0x2+1x1+0x3+1x1+0x2+1x3+0x2+1x2+0x3 '1x1+0x2+1x1+0x4+1x1+0x2+1x1+0x1+1x1+0x2+1x1+0x2+1x1+0x1+1x2+0x2+1x2+0x1+1x2+0x3+1x1+0x3+1x1+0x2+1x2+0x1+1x3+0x3+1x1+0x2+1x1+0x4+1x2+0x1+1x1+0x4+1x1+0x3+1x2+0x12+1x2+0x1+1x1+0x3+1x7+0x3 '0x3+1x1+0x7+1x1+0x1+1x1+0x4+1x1+0x2+1x2+0x2+1x2+0x4+1x1+0x2+1x1+0x1+1x2+0x1+1x8+0x1+1x1+0x4+1x1+0x5+1x1+0x3+1x2+0x2+1x1+0x1+1x2+0x2+1x1+0x3+1x2+0x9+1x1+0x1+1x2+0x2+1x3+0x2+1x1 '0x7+1x1+0x4+1x1+0x4+1x1+0x1+1x1+0x1+1x7+0x3+1x1+0x1+1x2+0x3+1x1+0x1+1x6+0x1+1x1+0x3+1x1+0x2+1x1+0x14+1x2+0x8+1x1+0x10+1x2+0x3+1x2+0x1+1x1+0x1 '0x6+1x5+0x4+1x1+0x7+1x1+0x2+1x1+0x3+1x2+0x4+1x1+0x8+1x1+0x3+1x2+0x1+1x2+0x3+1x1+0x8+1x1+0x2+1x2+0x1+1x1+0x3+1x7+0x5+1x2+0x2+1x1+0x2+1x2+0x3 '0x1+1x1+0x2+1x1+0x1+1x2+0x5+1x1+0x6+1x2+0x3+1x1+0x2+1x1+0x1+1x2+0x20+1x8+0x1+1x1+0x1+1x1+0x4+1x2+0x3+1x1+0x2+1x2+0x3+1x2+0x7+1x2+0x3+1x2+0x4 '0x2+1x1+0x3+1x5+0x5+1x2+0x7+1x1+0x4+1x2+0x2+1x1+0x2+1x2+0x1+1x1+0x3+1x1+0x6+1x2+0x2+1x2+0x3+1x2+0x2+1x3+0x1+1x1+0x6+1x3+0x3+1x5+0x3+1x1+0x4+1x1+0x5 '0x4+1x2+0x3+1x2+0x3+1x1+0x5+1x2+0x2+1x1+0x1+1x1+0x1+1x1+0x1+1x2+0x9+1x1+0x3+1x1+0x2+1x1+0x1+1x1+0x2+1x1+0x1+1x2+0x2+1x1+0x2+1x1+0x1+1x1+0x4+1x3+0x1+1x1+0x2+1x2+0x3+1x2+0x3+1x1+0x5+1x1+0x4+1x1+0x2 '0x6+1x5+0x4+1x1+0x1+1x1+0x2+1x2+0x6+1x1+0x1+1x7+0x4+1x3+0x3+1x1+0x4+1x1+0x2+1x2+0x4+1x1+0x6+1x1+0x6+1x8+0x3+1x1+0x5+1x1+0x7 '0x2+1x1+0x3+1x6+0x4+1x1+0x1+1x3+0x4+1x1+0x2+1x2+0x4+1x1+0x5+1x1+0x2+1x1+0x3+1x2+0x3+1x1+0x2+1x3+0x1+1x1+0x2+1x2+0x3+1x3+0x2+1x3+0x9+1x1+0x4+1x2+0x7+1x2''' s = s.replace("x", "'*").replace("+","+'") examp = s.split('\n') bits = [eval(i) for i in examp] print(bits) 

图片

现在使用PIL库创建图片。 让我们添加以下代码,对其进行编辑并打开生成的图片。

 from PIL import Image width, height = len(bits[0]), len(bits) pic = Image.new('RGB', (width, height)) pix = pic.load() for i in range(height): for j in range(width): pix[j,i] = ( bits[i][j]=='0' and (255,255,255) or (0,0,0) ) pic.save('pixel.png') 

图片

我放大了图片,读了“解决方案”一词。 实际上,隐窝比隐窝更多。 本文很可能仅对初学者才有意义。

越来越复杂...您可以加入Telegram 。 在这里,您可以提出自己的主题,并为以下文章的主题选择投票。

Source: https://habr.com/ru/post/zh-CN472628/


All Articles