Tags: reversing 

Rating:

# digital_play

## #논리회로 #digital

---

misc 에 가까운 문제가 아닐런지...?

어렵지 않아서 장황한 설명은 하지 않는다.

우선 주어진 **.dig** 파일은 아래의 프로그램에서 열린다.

[Digital - 논리회로 설계 프로그램](https://github.com/hneemann/Digital)

![i](../../.images/digital1.png)

digital.dig 파일을 Digital 프로그램에서 로드하면 위와 같이 나온다.

```txt
// enc.txt

00110110111111100000011000101
100001000000100000011000010101
001001111110101001110011001011
1111100000101010000110100010000
011011111011001110111011011001
1111100000101010110011100001100
010011111011001100100011110011
1100001101100001011101100110
0000010111100111100100011010001
```

그리고 같이준 이 파일을 보자.

여기서 게싱을 좀 해야하는데, 위에서부터 차례로 **Ciph 1** 부터 **Ciph 9** 까지의 데이터이다.

예시로 **Ciph 1** 과 **Ciph 2** 만 풀이한다.

![i](../../.images/ab2.png)

위에서 **Ciph 1** 는 `00110110111111100000011000101` 이다.

우선 해당 회로 마지막에 not 이 적용되어있으므로 비트 반전을 한다음, xor 키 값인 `0x4d415253` 하고 xor 하면 **Plain 1** 이 나올 것이다.

```python
ciph1="00110110111111100000011000101"
hex((int(ciph1,2)^((1<

Original writeup (https://github.com/goseungduk/CTF_WriteUp/tree/master/Tamil_2021/rev/digital_play).