Пример #1
0
def main():
    n = 109966163992903243770643456296093759130737510333736483352345488643432614201030629970207047930115652268531222079508230987041869779760776072105738457123387124961036111210544028669181361694095594938869077306417325203381820822917059651429857093388618818437282624857927551285811542685269229705594166370426152128895901914709902037365652575730201897361139518816164746228733410283595236405985958414491372301878718635708605256444921222945267625853091126691358833453283744166617463257821375566155675868452032401961727814314481343467702299949407935602389342183536222842556906657001984320973035314726867840698884052182976760066141
    e = 30749686305802061816334591167284030734478031427751495527922388099381921172620569310945418007467306454160014597828390709770861577479329793948103408489494025272834473555854835044153374978554414416305012267643957838998648651100705446875979573675767605387333733876537528353237076626094553367977134079292593746416875606876735717905892280664538346000950343671655257046364067221469807138232820446015769882472160551840052921930357988334306659120253114790638496480092361951536576427295789429197483597859657977832368912534761100269065509351345050758943674651053419982561094432258103614830448382949765459939698951824447818497599
    d = owiener.attack(e, n)
    print_values(e, n)
    attackMode(d)
    timing(e,n)
    print()
    e = 7
    n = 77
    d = owiener.attack(e, n)
    print_values(e,n)
    attackMode(d)
    timing(e,n)
Пример #2
0
def crack(solver):

    e = (reduce(lambda x, y: x * y, solver.datas["e"]))
    d = owiener.attack(e, solver.datas["n"][-1])

    if d is None:
        pass
    else:
        solver.addd(d)
        solver.adde(e)
Пример #3
0
def e_big():

    n = 0x8da7d2ec7bf9b322a539afb9962d4d2ebeb3e3d449d709b80a51dc680a14c87ffa863edfc7b5a2a542a0fa610febe2d967b58ae714c46a6eccb44cd5c90d1cf5e271224aa3367e5a13305f2744e2e56059b17bf520c95d521d34fdad3b0c12e7821a3169aa900c711e6923ca1a26c71fc5ac8a9ff8c878164e2434c724b68b508a030f86211c1307b6f90c0cd489a27fdc5e6190f6193447e0441a49edde165cf6074994ea260a21ea1fc7e2dfb038df437f02b9ddb7b5244a9620c8eca858865e83bab3413135e76a54ee718f4e431c29d3cb6e353a75d74f831bed2cc7bdce553f25b617b3bdd9ef901e249e43545c91b0cd8798b27804d61926e317a2b745
    e = 0x86d357db4e1b60a2e9f9f25e2db15204c820b6e8d8d04d29db168c890bc8a6c1e31b9316c9680174e128515a00256b775a1a8ccca9c6936f1b4c2298c03032cda4dd8eca1145828d31466bf56bfcf0c6a8b4a1b2fb27de7a57fae7430048d7590734b2f05b6443ad60d89606802409d2fa4c6767ad42bffae01a8ef1364418362e133fa7b2770af64a68ad50ad8d2bd5cebb99ceb13368fb31a6e7503e753f8638e21a96af1b6498c18578ba89b98d70fa482ad137d28fe701b4b77baa25d5e84c81b26ee9bddf8cbb51a071c60dd57714de379cd4bc14932809ba18524a0a18e4133665cfc46e2c4fcfbc28e0a0957e5513a7307c422b87a6182d0b6a074b4d
    c = 0x6a2f2e401a54eeb5dab1e6d5d80e92a6ca189049e22844c825012b8f0578f95b269b19644c7c8af3d544840d380ed75fdf86844aa8976622fa0501eaec0e5a1a5ab09d3d1037e55501c4e270060470c9f4019ced6c4e67673843daf2fd71c64f3dd8939ae322f2b79d283b3382052d076ebe9bb50b0042f1f7dd7beadf0f5686926ade9fc8370283ead781a21896e7a878d99e77c3bb1f470401062c0e0327fd85da1cf12901635f1df310e8f8c7d87aff5a01dbbecd739cd8f36462060d0eb237af8d613e2d9cebb67d612bcfc353ef2cd44b7ac85e471287eb04ae9b388b66ea8eb32429ae96dba5da8206894fa8c58a7440a127fceb5717a2eaa3c29f25f7

    d = owiener.attack(e, n)
    #print(d)

    print(long_to_bytes(pow(c, d, n)))
Пример #4
0
def test_wiener(i, j, pas):  #ordre de grandeur de p et q en base 10
    for k in range(i, j, pas):
        for s in range(10):
            T = []
            n, e, d = RSA_generation(k)
            #print(n,e,d)
            t1 = perf_counter()
            d2 = owiener.attack(e, n)
            t2 = perf_counter()
            if d == d2:
                print(k, ' Hacked')
            else:
                print(k, 'FAUX')
            T.append(t2 - t1)
Пример #5
0
import owiener, binascii
e = 217356749319385698521929657544628507680950813122965981036139317973675569442588326220293299168756490163223201593446006249622787212268918299733683908813777695992195006830244088685311059537057855442978678020950265617092637544349098729925492477391076560770615398034890984685084288600014953201593750327846808762513
n = 413514550275673527863957027545525175432824699510881864021105557583918890022061739148026915990124447164572528944722263717357237476264481036272236727160588284145055425035045871562541038353702292714978768468806464985590036061328334595717970895975121788928626837881214128786266719801269965024179019247618967408217
c = 337907824405966440030495671003069758278111764297629248609638912154235544001123799434176915113308593275372838266739188034566867280295804636556069233774555055521212823481663542294565892061947925909547184805760988117713501561339405677394457210062631040728412334490054091265643226842490973415231820626551757008360
d = owiener.attack(e, n)

if d is None:
    print("Failed")
else:
    print("Hacked d={}".format(d))

l = hex(pow(c, d, n))[2:]
print(binascii.unhexlify(l))
#Here is your flag, pctf{Sup3r_st4nd4rd_W31n3r_4tt4ck}
Пример #6
0
#!/usr/bin/python3

from owiener import attack
from Crypto.Util.number import *

n = 
c = 
e = 

d = attack(e , n)

print(long_to_bytes(pow(c , d , n)).decode("latin-1"))
import owiener
import codecs

e = 165528674684553774754161107952508373110624366523537426971950721796143115780129435315899759675151336726943047090419484833345443949104434072639959175019000332954933802344468968633829926100061874628202284567388558408274913523076548466524630414081156553457145524778651651092522168245814433643807177041677885126141
n = 380654536359671023755976891498668045392440824270475526144618987828344270045182740160077144588766610702530210398859909208327353118643014342338185873507801667054475298636689473117890228196755174002229463306397132008619636921625801645435089242900101841738546712222819150058222758938346094596787521134065656721069
c = 299332969197175711189362475973176110018924953676765834206557170936449056044940463424192591024333960287834765144663838107275612534099922176841029550103731130301225827761650271435325506311287472459681420052612378517579125881519989567977576917642556419749968152894536307775054555830688673518208539947146038594927
d = owiener.attack(e, n)

if d is None:
    print("Failed")
else:
    print("Hacked d={}".format(d))

print(codecs.decode(hex(pow(c,d,n)).replace("0x",""), "hex"))
Пример #8
0
def wiener(c, e, n):
    d = owiener.attack(e, n)
    return pow(c, d, n)
Пример #9
0
from owiener import attack
from Crypto.Util.number import long_to_bytes

N = 0xDEADBEEF
e = 0xDEADBEEF
c = 0xDEADBEEF
d = attack(e, N)

if d:
    print(long_to_bytes(pow(c, d, N)).decode())
else:
    print('No luck!')