from itertools import combinations
from Crypto.Util.number import inverse, long_to_bytes, getPrime, bytes_to_long
p='0xd270df408983bd5fb1ee363ba4f6722aeb850a304bc1bce19a3946b495b73889c5f49a6275c1bb750f0d3bc2b82b83eb45eec8993d701c3f1aa197c9a5d73bfcf627dcfa0272771c5886d7fdf0440e8c00b0a6a2037ebd5ea0084a5d7aebdf00320f1a8e3d51998cbe9e78daca8c66a077bfbb0fe27eb3860bbf59ccd3cb8159'
q=0xcc6486952cb6a3dcecb01f49499340e366cfe9b0962e5306267d655748881ccba7e0edb2480f0b67a54bad54c18ef26a547899625b9e92e16f5c1c82c4b8823d526e3237676994f61259984cbafd48dc6efc1ca27ceb9d365eb83872de337f40f0047829c825a830a18f2de33dcc27a75783984bba5fb482cef230b7517667af
n=0xa803f02773cdea3f8b580dff45dc7354096f30e9fc1332632482791d9912045867d2d4615175aad2977d00a63d224efa62150ac33ce7254c4e36a387c1e2a39680f0751b61354a3bdbb2cd58bf49eab527ccfe796bd1a85ad0d05cf3c395be41e5fe52c8b00a19696566bd1028c82bacb379e4280c708269d7e163ef4994ec2c7fd1f417aa9393a0f9683413a1e2dae078ff4035b5249b72b9a693ea678641d10ad1518a4024076bdeb3da1d7c59c5304daf4884198113fe9735eb1ca88e824069e9581879d5a6ec7a3c93b5a682c59fb1b12eeef43397d9fff387fc9f617e014b14918234746b48d24c3f6d5fed8bfe74e21dde435771c2ab38f695712e3ad7
e =65537
c=0x4904980f483cf726e1d69bc7be4f11f0da0689aeacd967b99557bedf61508848c43a788df6c33bf5b22eac6624f3bef55e3095e426767bb7b06de82b9101a349f32f1ca2125a5cdcd7e0b2b6965e489468be73cd1ccb4059a2f5c953c98dbf2aa26f49cbf19bb12a2c97f2c621702fadf6e9d9ef7c02be9df60eac95f848f3f8c6bbbd155939bbd92c37bf68fc44c9b1e070450458903d1d411658a2bad39637bb677d90d7476fb60e9751c8510c3397a7edab31bab2ab9cbd98d05e00d8722505b2ace50cd73343b52ec8c4c85166c705bae5d1beb59e700fcdbcbe328f340ea8cc91989ba946e09b4604ff9255c5e81dbb73c36f7da368e297ffb51fc7e7ddefsubsets(s):for candinality inrange(len(s)+1):yieldfrom combinations(s,candinality)#ch1为替换后的字符,ch2为原始的字符defreplace(p,ch1,ch2):
fp =[str(i)for i inrange(len(p))if p[i:i +2]== ch1]#print(fp)for sub in subsets(fp):#print(sub)
x=p
for i in sub:#print(i)
x = x[:int(i)]+ ch2 + x[int(i)+2:]#print(x)
p_result.append(x)
possible_p=[p]
p_result =[]for i in possible_p:
replace(i,'df','11')
possible_p=p_result
p_result =[]for i in possible_p:
replace(i,'a3','c4')
possible_p = p_result
p_result =[]for i in possible_p:
replace(i,'1c','ab')
possible_p = p_result
print(len(possible_p))for i in possible_p:
p=int(i,16)
npq=p*q
if(n==npq):print(hex(p))
p=0xd27011408983bd5fb1ee363ba4f6722aeb850a304bc1bce19c4946b495b73889c5f49a6275c1bb750f0d3bc2b82b83eb45eec8993d701c3f1aa197c9a5d73bfcf627dcfa027277ab5886d7f110440e8c00b0a6a2037ebd5ea0084a5d7aeb1100320f1a8e3d51998cbe9e78daca8c66a077bfbb0fe27eb3860bbf59ccd3cb8159
phi=(p-1)*(q-1)
d=inverse(65537,phi)
flag=long_to_bytes(pow(c,d,n))print(flag)