Rating:
## Solution
### Quick Explanation
This is a [__Padding Oracle Attack__](https://en.wikipedia.org/wiki/Padding_oracle_attack) and we use mwielgoszewski's [paddingoracle.py](https://github.com/mwielgoszewski/python-paddingoracle) to get the key.
### Fuil Explanation
I have omitted the parts of `server.py` that are not really necessary.
```python
...
class ThreadedServer(object):
def listenToClient(self, client, address):
ciphertext = client.recv(length)
plaintext = self.decrypt(ciphertext)
if self.check_pad(plaintext):
client.send('1')
else:
client.send('0')
```
This is pretty easy to figure out since the only information we get is whether or not `check_pad` of the __plaintext__ returns `true` or `false`.
If you are not familiar then a search of `aes padding attack` will eventually lead you to __padding oracle attack__.
Fortunately, as mentioned above, we found existing python code to help us as well as a [writeup](https://eugenekolo.com/blog/csaw-qual-ctf-2016/) from a previous CTF on this attack that confirms
`noxCTF{0n3_p4d_2_f4r}`
__For the implementation see the link__