microsoft/PythonProgrammingPuzzles

New Puzzle - 0CTF 2021 lalamblambdadambda

ThinerDAS opened this issue · 0 comments

Original author of the CTF challenge is believed to be @hzqmwne

def sat(x: str): 
    """0CTF 2021 lalamblambdadambda pseudo code, all rights belong to original author of challenge"""
    buf = bytes.fromhex(s[:16])
    S0 = []
    for i in range(8):
        for j in range(8):
            S0.append(((lambda b:lambda a:a),(lambda b:lambda a:b))[1&(buf[i]>>j)])
    S1 = [True,False]
    
    f1 = (lambda c:lambda b:lambda a:c(b)(a))
    f5 = (lambda c:lambda b:lambda a:f1(a)(c)(b))
    f6 = (lambda b:lambda a:f5(b)(a))
    f7 = (lambda d:lambda c:lambda b:lambda a:f5(f5(d)(c))(f5(b)(a)))
    f8 = (lambda d:lambda c:lambda b:lambda a:f5(f6(d)(c))(f6(b)(a)))
    f9 = (lambda h:lambda g:lambda f:lambda e:lambda d:lambda c:lambda b:lambda a:f5(f8(h)(g)(f)(e))(f8(d)(c)(b)(a)))
    f12 = (lambda b:lambda a:a)
    f13 = (lambda a:f12)
    f15 = f5(f5(f5(f5(f5(f12)(f12))(f5(f12)(f12)))(f5(f5(f12)(f12))(f5(f12)(f12))))(f5(f5(f5(f12)(f12))(f5(f12)(f12)))(f5(f5(f12)(f12))(f5(f12)(f12)))))(f5(f5(f5(f5(f12)(f12))(f5(f12)(f12)))(f5(f5(f12)(f12))(f5(f12)(f12))))(f5(f5(f5(f12)(f12))(f5(f12)(f12)))(f5(f5(f12)(f12))(f5(f12)(f12)))))
    f16 = f5(f15)
    f28 = (
        (lambda b:lambda a:
      b
      (
        b
        (
          b
          (
            b
            (
              b
              (
                b
                (
                  b
                  (
                    b
                    (
                      b
                      (
                        b
                        (
                          b
                          (
                            b
                            (
                              b
                              (
                                b
                                (
                                  b
                                  (
                                    b
                                    (
                                      b
                                      (
                                        b
                                        (
                                          b
                                          (
                                            b
                                            (
                                              b
                                              (
                                                b
                                                (
                                                  b
                                                  (
                                                    b
                                                    (
                                                      b
                                                      (
                                                        b
                                                        (
                                                          b(b(b(b(b(b(a))))))
                                                        )
                                                      )
                                                    )
                                                  )
                                                )
                                              )
                                            )
                                          )
                                        )
                                      )
                                    )
                                  )
                                )
                              )
                            )
                          )
                        )
                      )
                    )
                  )
                )
              )
            )
          )
        )
      )
    )
    )
    f30 = (lambda b:lambda a:b(a)(b))
    f33 = (lambda b:lambda a:b(b)(a))
    f41 = (lambda b:lambda a:b)
    f42 = (lambda a:a)
    f43 = (lambda c:(lambda a:c(a(a)))((lambda b:c((lambda a:b(b)(a))))))
    f2 = (lambda e:lambda d:lambda c:e((lambda b:lambda a:a(b(d))))((lambda a:c))(f42))
    f3 = (lambda a:a(f13)(f41))
    f10 = (lambda a:a(f12))
    f11 = (lambda a:a(f41))
    f17 = f7(f9(f12)(f12)(f41)(f41)(f12)(f12)(f12)(f12))(f9(f12)(f41)(f41)(f12)(f41)(f41)(f41)(f12))(f9(f12)(f12)(f41)(f41)(f12)(f41)(f12)(f41))(f9(f41)(f12)(f12)(f41)(f12)(f12)(f12)(f41))
    f18 = f7(f9(f12)(f41)(f41)(f12)(f12)(f12)(f12)(f41))(f9(f41)(f12)(f41)(f12)(f12)(f12)(f12)(f41))(f9(f12)(f12)(f41)(f12)(f12)(f41)(f41)(f12))(f9(f12)(f41)(f41)(f41)(f41)(f41)(f41)(f41))
    f19 = f7(f9(f41)(f12)(f12)(f12)(f12)(f41)(f41)(f12))(f9(f41)(f41)(f41)(f41)(f12)(f12)(f41)(f12))(f9(f41)(f41)(f12)(f12)(f41)(f41)(f12)(f41))(f9(f12)(f41)(f41)(f12)(f12)(f41)(f12)(f12))
    f20 = f7(f9(f41)(f12)(f12)(f12)(f41)(f41)(f41)(f12))(f9(f12)(f41)(f12)(f41)(f41)(f41)(f41)(f41))(f9(f12)(f41)(f41)(f12)(f12)(f12)(f12)(f12))(f9(f41)(f12)(f12)(f41)(f41)(f12)(f12)(f12))
    f21 = f7(f9(f41)(f12)(f12)(f41)(f41)(f41)(f41)(f12))(f9(f12)(f12)(f41)(f41)(f12)(f41)(f41)(f41))(f9(f12)(f41)(f41)(f41)(f41)(f12)(f12)(f41))(f9(f41)(f12)(f41)(f41)(f41)(f12)(f12)(f41))
    f22 = f7(f9(f41)(f41)(f12)(f41)(f41)(f41)(f41)(f41))(f9(f41)(f12)(f12)(f41)(f41)(f12)(f41)(f41))(f9(f12)(f12)(f12)(f12)(f41)(f41)(f41)(f41))(f9(f41)(f41)(f12)(f41)(f12)(f12)(f12)(f12))
    f23 = f7(f9(f41)(f41)(f41)(f41)(f12)(f12)(f12)(f12))(f9(f41)(f41)(f12)(f12)(f41)(f41)(f12)(f12))(f9(f12)(f12)(f12)(f12)(f12)(f41)(f12)(f12))(f9(f41)(f41)(f12)(f41)(f12)(f41)(f12)(f12))
    f29 = (lambda a:f41)
    f32 = (lambda a:a(f12)(f41))
    f34 = (lambda b:lambda a:f33(f30(f32(b))(a))(f30(b)(f32(a))))
    f35 = (lambda b:lambda a:f34(b)(a))
    f36 = (lambda f:lambda e:lambda d:lambda c:(lambda b:(lambda a:f5(f11(a))(f5(f10(a))(f10(b))))(f(e(f41))(d(f41))(f11(b))))(f(e(f12))(d(f12))(c)))
    f37 = (lambda e:lambda d:lambda c:(lambda b:(lambda a:f5(f11(a))(f5(f10(a))(f10(b))))(e(d(f41))(f11(b))))(e(d(f12))(c)))
    f38 = (lambda e:lambda d:lambda c:(lambda b:(lambda a:f5(f11(a))(f5(f10(b))(f10(a))))(e(d(f12))(f11(b))))(e(d(f41))(c)))
    f39 = (lambda c:lambda b:lambda a:f30(c(b(f41))(a(f41)))(c(b(f12))(a(f12))))
    f40 = (lambda c:lambda b:lambda a:f5(c(b(f41))(a(f41)))(c(b(f12))(a(f12))))
    f0 = (lambda c:lambda b:lambda a:f5(f33(f30(c)(b))(f30(f34(c)(b))(a)))(f34(f34(c)(b))(a)))
    f14 = (
        (lambda b:lambda a:
      f10(f36(f36(f36(f36(f36(f0)))))(b)(a)(f12))
    )
    )
    f25 = (
        (lambda a:
      f10(f37(f37(f37(f37(f37(f6)))))(a)(f12))
    )
    )
    f26 = (
        (lambda a:
      f10(f38(f38(f38(f38(f38(f6)))))(a)(f12))
    )
    )
    f27 = f40(f40(f40(f40(f40(f35)))))
    f31 = (lambda b:lambda a:f33(f30(b)(a))(f30(f32(b))(f32(a))))
    f24 = f39(f39(f39(f39(f39(f31)))))
    f4 = (lambda a:f30(f24(f11(a))(f22))(f24(f10(a))(f17)))
    answer = (
        (lambda v50:lambda v49:lambda v48:lambda v47:lambda v46:lambda v45:lambda v44:lambda v43:lambda v42:lambda v41:lambda v40:lambda v39:lambda v38:lambda v37:lambda v36:lambda v35:lambda v34:lambda v33:lambda v32:lambda v31:lambda v30:lambda v29:lambda v28:lambda v27:lambda v26:lambda v25:lambda v24:lambda v23:lambda v22:lambda v21:lambda v20:lambda v19:lambda v18:lambda v17:lambda v16:lambda v15:lambda v14:lambda v13:lambda v12:lambda v11:lambda v10:lambda v9:lambda v8:lambda v7:lambda v6:lambda v5:lambda v4:lambda v3:lambda v2:lambda v1:lambda v0:lambda z:lambda y:lambda x:lambda w:lambda v:lambda u:lambda t:lambda s:lambda r:lambda q:lambda p:lambda o:lambda n:
      f4
      (
        (lambda m:lambda l:
          f10
          (
            f43
            (
              (lambda k:lambda j:lambda i:
                f3(j)(i)
                (
                  (lambda h:
                    k(f2(j))
                    (
                      (lambda g:
                        (lambda f:
                          (lambda e:
                            (lambda d:
                              (lambda c:
                                (lambda b:
                                  (lambda a:f5(c)(f5(b)(a)))
                                  (
                                    f14(d)
                                    (
                                      f27
                                      (
                                        f27(f14(f25(f25(f25(f25(b)))))(f23))(f14(b)(c))
                                      )
                                      (
                                        f14(f26(f26(f26(f26(f26(b))))))(f18)
                                      )
                                    )
                                  )
                                )
                                (
                                  f14(e)
                                  (
                                    f27
                                    (
                                      f27(f14(f25(f25(f25(f25(d)))))(f19))(f14(d)(c))
                                    )
                                    (
                                      f14(f26(f26(f26(f26(f26(d))))))(f20)
                                    )
                                  )
                                )
                              )
                              (f14(f)(f21))
                            )
                            (f10(f10(g)))
                          )
                          (f11(f10(g)))
                        )
                        (f11(g))
                      )
                      (i)
                    )
                    (h)
                  )
                )
              )
            )
            (f28)(f16(f5(m)(l)))
          )
        )
        (f7(f9(v19)(v20)(v21)(v22)(v23)(v24)(v25)(v26))(f9(v27)(v28)(v29)(v30)(v31)(v32)(v33)(v34))(f9(v35)(v36)(v37)(v38)(v39)(v40)(v41)(v42))(f9(v43)(v44)(v45)(v46)(v47)(v48)(v49)(v50)))(f7(f9(n)(o)(p)(q)(r)(s)(t)(u))(f9(v)(w)(x)(y)(z)(v0)(v1)(v2))(f9(v3)(v4)(v5)(v6)(v7)(v8)(v9)(v10))(f9(v11)(v12)(v13)(v14)(v15)(v16)(v17)(v18)))
      )
    )
    (S0[0])(S0[1])(S0[2])(S0[3])(S0[4])(S0[5])(S0[6])(S0[7])(S0[8])(S0[9])(S0[10])(S0[11])(S0[12])(S0[13])(S0[14])(S0[15])(S0[16])(S0[17])(S0[18])(S0[19])(S0[20])(S0[21])(S0[22])(S0[23])(S0[24])(S0[25])(S0[26])(S0[27])(S0[28])(S0[29])(S0[30])(S0[31])(S0[32])(S0[33])(S0[34])(S0[35])(S0[36])(S0[37])(S0[38])(S0[39])(S0[40])(S0[41])(S0[42])(S0[43])(S0[44])(S0[45])(S0[46])(S0[47])(S0[48])(S0[49])(S0[50])(S0[51])(S0[52])(S0[53])(S0[54])(S0[55])(S0[56])(S0[57])(S0[58])(S0[59])(S0[60])(S0[61])(S0[62])(S0[63])(S1[0])(S1[1])
    )

    return answer

Solvers, post your solutions in the comments using the following formatting:

Reveal solution
def sol():
    return 'fe54620f00feb0ad'