Rating:

Initially, you have a ballance of 10$ and must make 10 transactions to user 1/2/3

Then you can see all transactions, a special transaction, enter encrypted transactions and if you get over 5k$ you get a flag.

When listing encrypted transactions, you see patterns, that some substrings are repeating.

When entering a transaction, and you enter an invalid text, you get: the format is sender/receiver/amount, 16 bytes each.

So we split all transactions in 3-parts, get the senders, receivers and amounts and create all possible transactions to ourself.

To run the solver, we have to copy out all the listed transactions as well as the special transaction into the data-string.

# Source Solver

```python
from collections import Counter

# print all transactions + special transaction
data = """61f1af1f7ec0ca9a08bbfa4245b27363ff06e912546f85871e27719d158ebe491efc9f19a764bf518a35d35ffcda48e9
ff06e912546f85871e27719d158ebe49f1e4e585af5702eb9a7863d3a927555f80d81f68672ba4ee9880e993a2d9f099
61f1af1f7ec0ca9a08bbfa4245b27363ff06e912546f85871e27719d158ebe491efc9f19a764bf518a35d35ffcda48e9
61f1af1f7ec0ca9a08bbfa4245b27363ff06e912546f85871e27719d158ebe491efc9f19a764bf518a35d35ffcda48e9
61f1af1f7ec0ca9a08bbfa4245b27363ecb851bad7b21e00a6ca25298349dc981efc9f19a764bf518a35d35ffcda48e9
f1e4e585af5702eb9a7863d3a927555fecb851bad7b21e00a6ca25298349dc98a25a7611d056fdddc941683aa27b1f47
61f1af1f7ec0ca9a08bbfa4245b27363ff06e912546f85871e27719d158ebe491efc9f19a764bf518a35d35ffcda48e9
f1e4e585af5702eb9a7863d3a927555fff06e912546f85871e27719d158ebe49bdb46b8645e80cb03a14c1f8a3b4a333
ff06e912546f85871e27719d158ebe49ecb851bad7b21e00a6ca25298349dc983eb3967be7610edcc9e339bcb9112f2a
61f1af1f7ec0ca9a08bbfa4245b27363ff06e912546f85871e27719d158ebe491efc9f19a764bf518a35d35ffcda48e9
61f1af1f7ec0ca9a08bbfa4245b27363f1e4e585af5702eb9a7863d3a927555f1efc9f19a764bf518a35d35ffcda48e9
ff06e912546f85871e27719d158ebe49ecb851bad7b21e00a6ca25298349dc98a3f36791a6cdfdf53acde5cbdd51e929
ecb851bad7b21e00a6ca25298349dc98f1e4e585af5702eb9a7863d3a927555f61c0cccb78c661a7b97e4724ef6774d3
ff06e912546f85871e27719d158ebe49ecb851bad7b21e00a6ca25298349dc98b1ba2b9422a517f2882bdf2ba780ebc9
ff06e912546f85871e27719d158ebe49f1e4e585af5702eb9a7863d3a927555f2309125193b399c36a0204b5b37a16a6
61f1af1f7ec0ca9a08bbfa4245b27363ff06e912546f85871e27719d158ebe491efc9f19a764bf518a35d35ffcda48e9
61f1af1f7ec0ca9a08bbfa4245b27363ecb851bad7b21e00a6ca25298349dc981efc9f19a764bf518a35d35ffcda48e9
f1e4e585af5702eb9a7863d3a927555fecb851bad7b21e00a6ca25298349dc98a25a7611d056fdddc941683aa27b1f47
ff06e912546f85871e27719d158ebe49ecb851bad7b21e00a6ca25298349dc98ea9aac6681fa4467b02f4528244e0e1b
61f1af1f7ec0ca9a08bbfa4245b27363ff06e912546f85871e27719d158ebe491efc9f19a764bf518a35d35ffcda48e9
ff06e912546f85871e27719d158ebe49ecb851bad7b21e00a6ca25298349dc98c4dbb0b91adc58c6268a8ca9deaae792"""

# create arrays of the senders, receivers and amounts
sender, receiver, amount = [], [], []
data = data.split("\n")
for line in data:
sender.append(line[0:32])
receiver.append(line[32:64])
amount.append(line[64:96])

print("sender", Counter(sender))
print("receiver", Counter(receiver))
print("amount", Counter(amount))

my_id = Counter(sender).most_common()[0][0]
print("my id", my_id)

people = set(sender)|set(receiver)-set([my_id]) # i don't want to send to myself

# generate all possible people as senders + me as receiver + all possible m
i=0
for p in people:
for a in amount:
print(p+my_id+a)
if i % 3 == 2:
print(4)
i+=1
```