from Crypto.Util.number import * a=[8490961288, 122685644196, 349851982069, 319462619019, 74697733110, 43107579733, 465430019828, 178715374673, 425695308534, 164022852989, 435966065649, 222907886694, 420391941825, 173833246025, 329708930734] iv = 3735927943 base = bytes_to_long(b"koito") key=5329712293^a[0]^iv b=[iv] for i in range(len(a)-1): b.append(a[len(a)-2-i]^a[len(a)-1-i]^key) b.append(a[0]^b[0]^key) a1=list(reversed(b[1:])) m=a1[0] for i in range(1,len(a1)): m = base*m+a1[i] flag = long_to_bytes(m) print(flag)
minipack
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from Crypto.Util.number import * key=[] withopen("E:\\key.txt", 'r') as fs: key1 = fs.read().split(","or'['or']') key1[0]=key1[0][1:] key1[-1]=key1[-1][:-1] for i in key1: key.append(int(i)) key = list(reversed(key)) withopen("E:\\ciphertext.txt", 'r') as fs: cip = int(fs.read()) m = '' for i inrange(len(key)): if cip - key[i] >= 0: cip = cip - key[i] m += '1' else: m += '0' print(long_to_bytes(int(m[::-1],2)))
from Crypto.Util.number import * from gmpy2 import * classContinuedFraction(): def__init__(self,numerator,denumerator): self.numberlist = [] # number in continued fraction self.fractionlist = [] # the near fraction list self.GenerateNumberList (numerator, denumerator) self.GenerateFractionList () defGenerateNumberList (self, numerator, denumerator): while numerator != 1: quotient = numerator // denumerator remainder = numerator % denumerator self.numberlist.append (quotient) numerator = denumerator denumerator = remainder defGenerateFractionList (self) : self.fractionlist.append ([self.numberlist[0], 1]) for i inrange (1, len (self.numberlist)): numerator = self.numberlist[i] denumerator = 1 for j inrange (i) : temp = numerator numerator = denumerator + numerator * self.numberlist[i-j-1] denumerator = temp self.fractionlist.append([numerator, denumerator])
e = 0x609778981bfbb26bb93398cb6d96984616a6ab08ade090c1c0d4fedb00f44f0552a1555efec5cc66e7960b61e94e80e7483b9f906a6c8155a91cdc3e4917fa5347c58a2bc85bb160fcf7fe98e3645cfea8458ea209e565e4eb72ee7cbb232331a862d8a84d91a0ff6d74aa3c779b2b129c3d8148b090c4193234764f2e5d9b2170a9b4859501d07c0601cdd18616a0ab2cf713a7c785fd06f27d68dff24446d884644e08f31bd37ecf48750e4324f959a8d37c5bef25e1580851646d57b3d4f525bc04c7ddafdf146539a84703df2161a0da7a368675f473065d2cb661907d990ba4a8451b15e054bfc4dd73e134f3bf7d8fa4716125d8e21f946d16b7b0fc43 n=0xbaa70ba4c29eb1e6bb3458827540fce84d40e1c966db73c0a39e4f9f40e975c42e02971dab385be27bd2b0687e2476894845cc46e55d9747a5be5ca9d925931ca82b0489e39724ea814800eb3c0ea40d89ebe7fe377f8d3f431a68d209e7a149851c06a4e67db7c99fcfd9ec19496f29d59bb186feb44a36fe344f11d047b9435a1c47fa2f8ed72f59403ebb0e439738fd550a7684247ab7da64311690f461e6dce03bf2fcd55345948a3b537087f07cd680d7461d326690bf21e39dff30268cb33f86eeceff412cd63a38f7110805d337dcad25e6f7e3728b53ca722b695b0d9db37361b5b63213af50dd69ee8b3cf2085f845d7932c08b27bf638e98497239 c=0x45a9ce4297c8afee693d3cce2525d3399c5251061ddd2462513a57f0fd69bdc74b71b519d3a2c23209d74fcfbcb6b196b5943838c2441cb34496c96e0f9fc9f0f80a2f6d5b49f220cb3e78e36a4a66595aa2dbe3ff6e814d84f07cb5442e2d5d08d08aa9ccde0294b39bfde79a6c6dcd2329e9820744c4deb34a039da7933ddf00b0a0469afb89cba87490a39783a9b2f8f0274f646ca242e78a326dda886c213bc8d03ac1a9150de4ba08c5936c3fe924c8646652ef85aa7ac0103485f472413427a0e9d9a4d416b99e24861ca8499500c693d7a07360158ffffa543480758cafff2a09a9f6628f92767764fa026d48a9dd899838505ae16e38910697f9de14 a = ContinuedFraction(e,n) for k,d in a.fractionlist: s = long_to_bytes(pow(c, d, n)) try: print(s.decode()) except Exception: pass
al=[6811480804433459752827714558479851837166061762294131563310130325846430072816177165149613687307165209577130630311477665591141650399740741396784593477667511, 6991223361118904775931217829045348785013077549030883418924453538830605687999480005714979700653172534877541317997174968789510984315425270755055110913347281, 7592439908930473591169395506464664967460880934907692099467559610659035874008829133810341129161864445676397227262130671224157308868678442281617413952593477, 7661276973316857207751367277881032536449069939447322837508906694964933673171693624171780997296797446643574508184011878230465391879808258241752897792891323, 8752762682421281693932454897190422008900505775990831144558827755415243453970083322530846132571648469860763497724505255094464743633789884168771246977571539, 9987009117206906203158749743824168660291275882852229158070368815160479543708376165641735042845357978292384303332559592302507789120810447986634662721490507, 10022455487144667211701100343824680124338467215246658405697280466931561838565228778624923751405642974058833143888323468902504576610147119708725877528011439, 11627877395179828773706504422918933052041685770731872812302758181943244472706231518350716590168708806854971155512042158777017234038219076771501368374236727, 12876877424944854147075816504195994138450356002779004886384584287813869165469217718717854027672044903401715370348223932937626725119320180795716270261309139] n=899081756851564072995842371038848265712822308942406479625157544735473115850983700580364485532298999127834142923262920189902691972009898741820291331257478170998867183390650298055916005944577877856728843264502218692432679062445730259562784479410120575777748292393321588239071577384218317338474855507210816917917699500763270490789679076190405915250953860114858086078092945282693720016414837231157788381144668395364877545151382171251673050910143023561541226464220441 e = 65537 c = 841335863342518623856757469220437045493934999201203757845757404101093751603513457430254875658199946020695655428637035628085973393246970440054477600379027466651143466332405520374224855994531411584946074861018245519106776529260649700756908093025092104292223745612991818151040610497258923925952531383407297026038305824754456660932812929344928080812670596607694776017112795053283695891798940700646874515366341575417161087304105309794441077774052357656529143940010140
from Crypto.Util.number import * from gmpy2 import *
from Crypto.Util.number import getPrime from math import prod from sympy import nextprime for i in range(9): for j in range(9): for k in range(9): q=nextprime(al[i]) w=nextprime(al[j]) r=nextprime(al[k]) z=q*w*r if(n==z): print("q=",q) print("r=",r) print("w=",w) phi=(q-1)*(w-1)*(r-1) d=invert(e,phi) m=powmod(c,d,n) print(long_to_bytes(m))