**Author's Solve**
For Part 1, the order of the ECC curve is equal to the prime used for the field, aka `p`. So, an attack called Smart's attack can be applied on the curve which allows us to perform the discrete log of the curve in linear time. This paper (`https://wstein.org/edu/2010/414/projects/novotney.pdf`) goes over the details of why the attack works as well as a SageMath implementation method for the attack. The script `smarts_attack_solver.sage` is the solver for part 1.
For Part 2, the MOV attack can be used on the curves. The idea for the MOV attack is to take the curve and map the points to a different curve where the discrete log calculations would be easier. For that to happen, the embedding degree of the curve must be less than 6, aka `(p^k-1) % order = 0` and `k` is the embedding degree. With k<=6, it is possible to map the given points to the curve with field F(p^k) and quickly calculate the discrete log of the new points. The script `mov_attack_solver.sage` is the solver for part 2.
For Part 3, the given curve is a singular curve. In a singular curve, the parameters `a` and `b` satisfy the relationship `[4*(a^3) + 27*(b^2)] % p == 0`. This means that the discrete log is quick to calculate for this curve. The script `singular_curves_solver.sage` is the solver for part 3.
For the entire script implementation including server interaction, please check out `solution.sage`.