c = 566134289175001073338056659296498386641704313655869270504728356324933522811329068806508523532229682163525391220524802986785979422224911403071360548998101883993096018419857810663495564026562659363871989824162135535273717970285889221585901801835578256566036552604952749911282130835836581634840314211017046826426109774890418389574576128514071616464686335314358612894449871297012320880991577385456512998134643750537355527145843861005150574206728763965567156607610158050662833497593328881837388826744959143787862030176066778562928676173698618553745217799573433348833221151549888811871451808452955305602107063553259177528973779863154453333102822257682773411954333494475389886363107483562321532979964779714092494561759919711378961571336972685333275022586113138145007123147423870377012703192994633879942428704057951403358824692549839968488524015173505870905889600039037750913144895609595459004953371070240801671011997833228707676492818822464352241156584093362459311507045539329339058073049976087255850541570728786975634641284864343466456814506387776441995199436103111145990444660701184107235574238419914669387830626551319768539563036924648893943101966787768445626547186646731973307521638141189845168175085035920200073130311681615711143905321
n = 966808932627497190635859236054960349099463975227350564265384373280336699853387254070662881265937565163000758606154308757944030571837175048514574473061401566330836334647176655282619268592560172726526643074499534129878217409046045533656897050117438496357231575999185527675071002803951800635220029015932007465117818739948903750200830856115668691007706836952244842719419452946259275251773298338162389930518838272704908887016474007051397194588396039111216708866214614779627566959335170676055025850932631053641576566165694121420546081043285806783239296799795655191121966377590175780618944910532816988143056757054052679968538901460893571204904394975714081055455240523895653305315517745729334114549756695334171142876080477105070409544777981602152762154610738540163796164295222810243309051503090866674634440359226192530724635477051576515179864461174911975667162597286769079380660782647952944808596310476973939156187472076952935728249061137481887589103973591082872988641958270285169650803792395556363304056290077801453980822097583574309682935697260204862756923865556397686696854239564541407185709940107806536773160263764483443859425726953142964148216209968437587044617613518058779287167853349364533716458676066734216877566181514607693882375533
e = 65537

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from sympy import factorint
from sympy import mod_inverse
n = 966808932627497190635859236054960349099463975227350564265384373280336699853387254070662881265937565163000758606154308757944030571837175048514574473061401566330836334647176655282619268592560172726526643074499534129878217409046045533656897050117438496357231575999185527675071002803951800635220029015932007465117818739948903750200830856115668691007706836952244842719419452946259275251773298338162389930518838272704908887016474007051397194588396039111216708866214614779627566959335170676055025850932631053641576566165694121420546081043285806783239296799795655191121966377590175780618944910532816988143056757054052679968538901460893571204904394975714081055455240523895653305315517745729334114549756695334171142876080477105070409544777981602152762154610738540163796164295222810243309051503090866674634440359226192530724635477051576515179864461174911975667162597286769079380660782647952944808596310476973939156187472076952935728249061137481887589103973591082872988641958270285169650803792395556363304056290077801453980822097583574309682935697260204862756923865556397686696854239564541407185709940107806536773160263764483443859425726953142964148216209968437587044617613518058779287167853349364533716458676066734216877566181514607693882375533

# 分解 n
factors = factorint(n)
p, q = factors.keys()
phi_n = (p - 1) * (q - 1)


c = 566134289175001073338056659296498386641704313655869270504728356324933522811329068806508523532229682163525391220524802986785979422224911403071360548998101883993096018419857810663495564026562659363871989824162135535273717970285889221585901801835578256566036552604952749911282130835836581634840314211017046826426109774890418389574576128514071616464686335314358612894449871297012320880991577385456512998134643750537355527145843861005150574206728763965567156607610158050662833497593328881837388826744959143787862030176066778562928676173698618553745217799573433348833221151549888811871451808452955305602107063553259177528973779863154453333102822257682773411954333494475389886363107483562321532979964779714092494561759919711378961571336972685333275022586113138145007123147423870377012703192994633879942428704057951403358824692549839968488524015173505870905889600039037750913144895609595459004953371070240801671011997833228707676492818822464352241156584093362459311507045539329339058073049976087255850541570728786975634641284864343466456814506387776441995199436103111145990444660701184107235574238419914669387830626551319768539563036924648893943101966787768445626547186646731973307521638141189845168175085035920200073130311681615711143905321
e = 65537
d = mod_inverse(e, phi_n)
m = pow(c, d, n)
def num_to_ascii(m):
m_bytes = m.to_bytes((m.bit_length() + 7) // 8, byteorder='big')
return m_bytes.decode('utf-8')

flag = num_to_ascii(m)
print(f"flag = {flag}")

flag=TZCFlag{factor_is_so_easy}


n = 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793
e = 3 ==当e较小时则可直接通过开立方根得到明文==
c = 6021062141588965841587167293

1
2
3
4
5
6
7
8
9
10
11
12
n = 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793
e = 3
c = 6021062141588965841587167293

# 计算立方根
m = round(c ** (1/3))
if pow(m, 3) == c:
print("明文整数:", m)
flag = m.to_bytes((m.bit_length() + 7) // 8, byteorder='big').decode('ascii')
print("Flag:", flag)
else:
print("无法通过低指数攻击破解")

明文整数: 1819244357
Flag: lowE
TZCFlag{lowE}