题目首先下载题目压缩包,unzip解压之后得到了一个电路图和input.csv:电路图在这之前先介绍一些基本的简单的电路:AND在与门配置中:两个NPN晶体管串联连接。电源VCC接入第一个晶体管(T1)的集电极,该集电极连接至T2,电流最终流向地。输入端A和B分别连接至对应晶体管的基极。仅当两个晶体管同时导通(输入端为高电平)时电流才会流动——这是标准与门的特性。OR在或门电路中:晶体管呈并联连接。当任一晶体管基极接收到高电平输入时,电流便会流向输出端。经典或门行为——只要任一输入端有效,输出端即被触发。chip.jpg接下来回到题目给的电路图,我们用红线标出电源的流向,然后拆解一下电路,可以看到,这整个电路是先由IN0和IN1组成了AND门得到result1,然后又由IN2和IN3组成了AND门得到result2,最后由result1与result2进行OR操作得到OUT0。csv文件用head指令查看一下
可以看到,这个csv文件中每一行都是in0到in3的输入值,但是没给出输出值,我们经过电路分析,已知了逻辑关系,或许可以用python脚本计算出对应到OUT0序列是什么。expimport csv
def evaluate_logic_from_csv(file_path):
output_bits = []
# Open and read the CSV file
with open(file_path, 'r') as file:
reader = csv.reader(file)
next(reader) # Skip header row
#print(reader)
# Process each row of inputs
for inputs in reader:
#print(inputs)
in0 = int(inputs[0])
in1 = int(inputs[1])
in2 = int(inputs[2])
in3 = int(inputs[3])
# Apply logical AND to pairs
result1 = in0 & in1
result2 = in2 & in3
# Combine results using logical OR
final_result = result1 | result2
# Store output as string
output_bits.append(str(final_result))
return ''.join(output_bits)
# Define input CSV and execute logic
input_csv = 'input.csv'
logic_output = evaluate_logic_from_csv(input_csv)
print(logic_output)再转化为asciipython3 -c "s='binarystring';
print(''.join([chr(int(s[i:i+8], 2)) for i in range(0, len(s), 8)]))"引用和参考的博客:Hack The Box Hardware Exploitation Track: Low Logic | 1337 SheetsIntroduction of Logic Gates - GeeksforGeeks
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
#CrackMe
#Reverse
#Pwn
#other
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289914.htm
[原创]硬件安全 hardware ctf Low Logic Hack the box
322 浏览
0 回复
暂无回复,快来抢沙发吧!