Tags: verilog rev
Rating:
[link to original writeup](https://github.com/babaiserror/ctf/blob/main/%5B210723-27%5D%20ImaginaryCTF%202021/Abnormal/README.md)
It's a continuation from Normal. First observe that the `abnormal` module calls `nor` and `norc`, `norc` calls `norb`, and `norb` calls `nora`.
`nora`: Drawing a diagram and truth tables, and figuring out that the `nora` module is a [full adder](https://en.wikipedia.org/wiki/Adder_(electronics)#Full_adder) is key.
After that, it's easy, `norb` just adds two 16-bit numbers, and `norc` just adds two 256-bit numbers. `abnormal` adds a constant to the input, and another constant to the other constant, then xor's the two (the nor's are identical (with one nor gate added to essentially do a `not` operation) to that of `Normal`). The input is the flag, and the output needs to be 0. So it boils down to: `flag = (result of adding two constants given) - (another given constant)`.