0xy4c1n3

chall.py

Jul 30th, 2025 (edited)
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.33 KB | Cybersecurity | 0 0
  1. def add(P, Q, a, p):
  2.     if P is None:
  3.         return Q
  4.     if Q is None:
  5.         return P
  6.     x1, y1 = P
  7.     x2, y2 = Q
  8.     if x1 == x2 and (y1 != y2 or y1 == 0):
  9.         return None
  10.     if x1 == x2:
  11.         m = (3 * x1 * x1 + a) * pow(2 * y1, -1, p) % p
  12.     else:
  13.         m = (y2 - y1) * pow(x2 - x1, -1, p) % p
  14.     x3 = (m * m - x1 - x2) % p
  15.     y3 = (m * (x1 - x3) - y1) % p
  16.     return (x3, y3)
  17.  
  18. def mul(k, P, a, p):
  19.     R0 = None
  20.     R1 = P
  21.     for bit in bin(k)[2:]:
  22.         if bit == '0':
  23.             R1 = add(R0, R1, a, p)
  24.             R0 = add(R0, R0, a, p)
  25.         else:
  26.             R0 = add(R0, R1, a, p)
  27.             R1 = add(R1, R1, a, p)
  28.     return R0
  29.  
  30.  
  31. flag = int.from_bytes(b"wwf{???????????????????????????}")
  32.  
  33. from secret import p, a, b, G
  34. # EllipticCurve(GF(p), [a,b]) in sage gives an error for some reason :sob:
  35. # Some error in /src/sage/schemes/elliptic_curves but i'm too nub to figure out why :sob: :sob:
  36. Gx = G[0]
  37. Qx = mul(flag, G, a, p)[0]
  38. print(f'{p = }')
  39. print(f'{a = }')
  40. print(f'{Gx = }')
  41. print(f'{Qx = }')
  42. """
  43. p = 3059506932006842768669313045979965122802573567548630439761719809964279577239571933
  44. a = 2448848303492708630919982332575904911263442803797664768836842024937962142592572096
  45. Gx = 3
  46. Qx = 1461547606525901279892022258912247705593987307619875233742411837094451720970084133
  47. """
Advertisement
Add Comment
Please, Sign In to add comment