前言
1.十进制转二进制
十进制转二进制的算法:
- 将十进制数不断除以2,直到商为0
- 将每次的余数倒序排列,得到二进制数
Python脚本实现:
def decimal_to_binary(decimal_number):
binary_number = ''
while decimal_number > 0:
binary_number += str(decimal_number % 2)
decimal_number //= 2
return binary_number[::-1]
其中,decimal_number
为需要转换的十进制数,binary_number
为转换后的二进制数,%
为取余操作,//
为整除操作,[::-1]
表示将字符串倒序排列。
示例:
print(decimal_to_binary(10)) # 输出:1010
print(decimal_to_binary(27)) # 输出:11011
注意:Python中还提供了bin()
函数可以直接将十进制数转换为二进制数,使用方法为bin(decimal_number)
,例如:bin(10)
输出为'0b1010'
,需要注意输出结果中的'0b'
前缀。
2.口红色号由来
口红的颜色通常都会标注色号,不同品牌和系列的口红有不同的色号对应关系。一般来说,口红的色号分为数字、字母和组合的形式。
例如,数字形式的色号通常是从1开始递增,表示颜色的深浅程度,如1代表最浅的颜色,40代表中等深浅的颜色,70代表最深的颜色。
字母形式的色号通常以字母来代表颜色的性质,如L代表亮色、M代表哑光色、S代表闪亮色、N代表自然色等。
组合形式的色号是数字和字母的结合,表示颜色的深浅程度和性质。不同品牌和系列的组合形式也各不相同。
以下是一些常见的品牌口红的色号对应关系,仅供参考:
- MAC:数字形式的色号,如Ruby Woo是#13,Velvet Teddy是#16,Russian Red是#21,Twig是#46。
- YSL:以字母YSL和数字结合的形式,如Rouge Pur Couture系列中的Le Rouge是#01,Le Orange是#13,Le Fuchsia是#19。
- Chanel:以字母和数字结合的形式,如Rouge Allure系列中的Pirate是#99,Passion是#104,Inimitable是#152。
- Dior:以数字和字母结合的形式,如Dior Addict中的New Look是#745,Casual Gold是#324。
- Bobbi Brown:以数字和字母结合的形式,如Luxe Lip Color系列中的Brocade是#10,Red Berry是#13,Raspberry Pink是#17。
需要注意的是,不同国家和地区的色号标准也不同,同一款口红在不同地区的色号可能存在差异。
一、Lipstick
1.打开题目
2.解题
lipstick为口红的意思,这次题目是一张图片
首先使用隐写神器Stegsolve
Save Bin保存为一个zip包,解压后得到
BC0B28D04179D47A6FC2696FEB8262CF1A77C0083EBC0B28BC0B28D132746A1319BC0B28BC0B28D4121DD75B59DD8885CE0A4AD4121D7E453AD75B59DD8885
颜色色号对应网址:https://www.yslbeautyus.com/on/demandware.store/Sites-ysl-us-Site/en_US/Product-Variation?pid=194YSL
这里颜色值可以对应上色号,于是写脚本收集颜色值对应的色号,并把色号转换为二进制,再组合,再bin2text
# -*- coding:utf8 -*-
import sys
import libnum
ss=''
s=[1,27,59,11,23,7,57,1,1,76,222,1,1,50,214,6,77,50,53,214,6]
for i in s:
ss+=bin(i)[2:]
print(ss)
print(libnum.b2s(ss).decode('utf-8'))
得到白学家,进行解密
得到flag:White_Album_is_Really_worth_watching_on_White_Valentine's_Day