20211113-L3HCTF-CryptoSecPartWriteUp

 

EzECDSA

考点

  • ECDSA泄漏k低位

题目意思比较简单了,ECDSA椭圆曲线签名,而且知道100个nonce的低8位

泄漏每个nonce的低位就可以攻击ECDSA,来自ECDSA: Handle with Care

image-20211113152712752

看不懂,然后在Github上搜代码,找到了这位师傅实现好的:bitlogik-Lattice ECDSA Attack

数据通过json传递一下,用sage运行,用到了fpylll,提供LLL,BKZ等矩阵运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from hashlib import sha256
from string import ascii_letters, digits
from pwn import *
from itertools import product
from re import findall

table = ascii_letters + digits
# context.log_level = 'debug'


class Solve():
def __init__(self):
# self.sh = remote('127.0.0.1', 23333)
self.sh = remote('121.36.197.254', 9999)
self.pk = (0, 0)
self.dA = 0
self.r, self.s, self.kp, self.hash = [[] for _ in range(4)]

def proof_of_work(self):
# sha256(XXXX+EiHCHlPjoO2PnV2Z) == c4f17d1f76f7f11f75349dcd84f51b6e615aa756271841558ec8dda57e274959
# Give me XXXX:
proof = self.sh.recvuntil(b'Give me XXXX:')
tail = proof[12:28].decode()
_hash = proof[33:97].decode()
for i in product(table, repeat=4):
head = ''.join(i)
t = sha256((head + tail).encode()).hexdigest()
if t == _hash:
self.sh.sendline(head.encode())
break

def solve_param(self):
self.pk = self.sh.recvline().decode()
self.pk = list(map(int, findall(r"\d+", self.pk)))

def solve_flag(self):
self.sh.sendlineafter(b'Give me dA\n', str(self.dA).encode())
flag = self.sh.recvline()
print(flag)

def solve_rskphash(self, _msg):
# r = 52048392139623372592078752615260846843189290463527724311126948642962323725543
# s = 109433217428494848625070143495220795563459361957459040433009455008946372438244
# kp = 4
# hash = 7233656426779106235949203295872203792378863493827336253291317784541539210508
self.sh.sendlineafter(b'Give me your message:\n', _msg)
_r = int(self.sh.recvline().decode()[4:-1])
_s = int(self.sh.recvline().decode()[4:-1])
_kp = int(self.sh.recvline().decode()[4:-1])
_hash = int(self.sh.recvline().decode()[7:-1])
self.r.append(_r), self.s.append(_s), self.kp.append(_kp), self.hash.append(_hash)

def solve(self):
self.proof_of_work()
self.solve_param()

_param = []
for i in range(100):
self.solve_rskphash(b'4XWi11')
_param.append({"r": self.r[i], "s": self.s[i], "kp": self.kp[i], "hash": self.hash[i]})

print(_param)
print(self.pk)
self.sh.interactive()


if __name__ == '__main__':
solution = Solve()
solution.solve()

然后把得到的两个列表丢进去,手动交互一下

image-20211113153348371

改动的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def lattice_attack_cli(loop):
print("\n ----- Lattice ECDSA Attack ----- ")
curve_string = "SECP256K1"
data_type = "LSB"
known_bits = 8
signatures = [{'r': 24064571097121945632922895240428054047008294283601148999833806644054455832256, 's': 22336607989275764340059934215706164673745867481448617269599257943128698097430, 'kp': 128, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 4463660676509533715525859073947399242276437236356579722988720911272080024194, 's': 95184582521357021784942152280696633359087861395630894773134105864180920370833, 'kp': 17, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 40665562916507218486092437970946871701506092053179547706286916616798148649001, 's': 25664463718395831677708078193899613927191594250435827338029374883338264441103, 'kp': 145, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 62134655233924687212924387180433699066778387229102991143083649859489887158653, 's': 89827476149358698561689033385477487868462807802741299201723565961428404486665, 'kp': 120, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 91743101403954022324940469079645536140946274935623955082539036305437756739343, 's': 49231456976716399505068810326851443124368033416296775932715592338232029765033, 'kp': 40, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 60118325601081833527647977022636339882040341712168406104696025049539193405923, 's': 108263313707672191413470251856794765032624947992550839745807767664950314148218, 'kp': 213, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 30065788320992881217148582776098185844479568458389368519038464174967591879538, 's': 100152338166884323893640190892474206206231996144056242559927906798697672906730, 'kp': 50, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 35489967726668007042990697874141601932217076505321903927975464183297375191635, 's': 62671798262198621160922892891679774852547334810629183097844481954425801529252, 'kp': 94, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 40325814863904162338232318750994924418421835615767198516853576893290682300046, 's': 15989269176742750627771729447600104487064896651886248330305261173968210958688, 'kp': 124, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 111145066390235980845124325083016703676499315403829371772181781109652613138216, 's': 42748858991312283540243673505740069163105471217729084540279112491462119156848, 'kp': 167, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 9942181992430775532995169308645382865716825653184399965013015024521795560445, 's': 2040552058758046776327917763250261038686605857462578043690548671510015399903, 'kp': 188, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 59285744990866036562172242890106604822723823682131484185052946940305396134164, 's': 46924616651317980112060803798050579265826641544752311301072413923868513177549, 'kp': 159, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 8266866969980736920169934574450693424841397773339890186741076070269883898687, 's': 49665921373513614838157179339157208467593359554517015972164991449551167702368, 'kp': 47, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 39115785036192514738025599343102404175824690574548933372250564383780298256056, 's': 63653040165489523410008448735043710570010292534670013054314855125927745049957, 'kp': 207, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 60002102029739152682472248051749479298103056039811198990495670299329361771238, 's': 104084323174536650482109779404504798734411173396128332502452070818582100135379, 'kp': 163, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 27787364429978998775096537929165654846390595884803880752977170498539422585113, 's': 33906111749326233752541058214424749871781740802460828094494031375514066531392, 'kp': 120, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 78419161169708677864050303931513981848627977301275757780375524608251807993559, 's': 2046781244809995555043522988048715240994172872466168974297295802333575196479, 'kp': 111, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 16305985096263356537711862540340407961669367033804253049138237771289848804031, 's': 63668898512984236022957824751272909840013201760763278925601709302165483537754, 'kp': 195, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 103752332053793585333463710585983917550929298265321300780270827390514989405981, 's': 84464910918738330351542447369162200910794950649613201304525071568114508476173, 'kp': 187, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 38291430687407128427867342660257516736317330271523410817601713675005564934414, 's': 88402223212147448437394088851680415429948038565958859060829460325155897704965, 'kp': 4, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 84323698460015599216987281664483212093914059533716412464339023149091291363920, 's': 74454396061533922056165551532377436117021947867761561545386467754272131383336, 'kp': 21, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 94652359738443742656427702994872154419362173953540530613675485516473015136097, 's': 58979588252301893338171901228747351893229723674148134270227122119084935981086, 'kp': 159, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 57035562738019063186290405901303462688544016382894419021551598457301170539851, 's': 106810732790502323984716735333922681899385960282732027639295501033822329513095, 'kp': 132, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 71720101268882482001341926562799691163916261182294243023112526262725668461039, 's': 66238263938293320834432476177362155449781385711943558789812495372990460603628, 'kp': 102, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 79217664224625891577288065822390044055424497318832202722330455827537228453987, 's': 9728594954980254660443491331319378935977116253644866857417143026507098138493, 'kp': 142, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 50417674417908240110700920566794731133911757658243324000211747372433823865434, 's': 74036799396605670020465243258112573458559987099664738041457322577623383740150, 'kp': 12, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 34249095295853682596567672274282865357173590812471209243488352782102238262790, 's': 56329821599489174636076273450033279549799527650878999714834453357902951777016, 'kp': 218, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 802992665895604116149528587653332282394721540505330665934238125742103799645, 's': 5428664552780927049589242649253504341588002093173144292039738684160498564446, 'kp': 32, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 86019135605632312533003574356241310966775167320919143972907497981200534429486, 's': 109455236794780038086342966032133672324694552943661188737502695833558381149636, 'kp': 55, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 65502561336371093326014756449768044329637910457733790873909508952712806558275, 's': 113929492847608603543892673062284286888742167507069182224849984142937060229251, 'kp': 178, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 78681803493598708781704851013177502711960431976673307465953770437009275951590, 's': 49674180353978255167259103839938068686866182075213824318557182314938037660614, 'kp': 14, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 58846841510786876897179098124111065636995935908959633746621419304249825025848, 's': 89154085040287026552915925342120943873439786304495658177869773488900413561331, 'kp': 188, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 61282940048672303710246699987045551708862797751020077071897169267522861954848, 's': 66002334900710561368468145986446393633241460361692621325117354715080888850728, 'kp': 90, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 81038357006344878843231064578651308378639132821723934209449344478360690098676, 's': 7690205894383234601656981155047787199517182455307368975320798091037405981690, 'kp': 206, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 109906117283389599383267125995612631604738679225921326774096030457704242722323, 's': 43493935019027505511442268443311834274390131796377637442411050094817362580052, 'kp': 192, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 71004483558260840751052451665723743480138211782065718720540245068467327148872, 's': 107958638346412297098700280157968653578336457901364225032022477039525423050174, 'kp': 64, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 8379706138642767879789492131765033075973072668572920833327086321106035103924, 's': 18457638647854285155334422912914899020122104523819833285175962764234997052715, 'kp': 119, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 13506833719497205310335803791404081551593103922525622577754284846722412185234, 's': 48786514313823849943566772815666346862837121558799421713954352406775875038932, 'kp': 39, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 43318765108358086468648054514831832105425852958699586512516411121806748162244, 's': 76611095623617718137819075604626479032159788169976435587319796431647089025942, 'kp': 185, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 50639275101034623060510226776856072002631469409117575192245129715394053079388, 's': 379768327662870352586367170960803125205731091682353079565721866278490560864, 'kp': 234, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 31825370299758817738811760212737719374347382389429558359219945763715483872750, 's': 541879448936518443353076884606162758760048281571082926021308678464363854594, 'kp': 224, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 13601817511622577911281025235244998292130259645310098627346048427533461499944, 's': 109141974194095714792066715741955092060895513608267568568573803884357617059995, 'kp': 92, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 113497913836293842312148494321747603521635058517129203010499179606400836715701, 's': 84888435361972525658941281980997342508748274622023820353524839729268394643312, 'kp': 216, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 82734134540243431057532589212714104848547208496112557727452074465504823486198, 's': 96354237665098247779868723103167381622579260362631967012473189354910980839154, 'kp': 215, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 98745854649555452692336023708972115999163311987898625164095479011126426351081, 's': 102834626570257831729270969528085763264392581086196771333983657242343395253804, 'kp': 8, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 24420303190205486868577085306959366524438282457397899084978123077970167737279, 's': 10261548032370358478243593946501181661630310686496591280276691956339112964258, 'kp': 90, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 30460305454953381788818171456464546370311715404840958374717538926236356559803, 's': 67133045599383558471980598751464646985143777205020976306556352264274079713363, 'kp': 42, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 111699704151971747577825639248041765371325428058507326451264626870773914926445, 's': 113044257701636212742207620709531848533208228762098440562365767143038383323898, 'kp': 67, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 55259588168428866690769244492784222281448819586199143977669408994489706063722, 's': 44879788828310698190640940707098316613630603984709847485109676153317413345536, 'kp': 195, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 95821828747012270079632976383366292728840760245223580689825937312792425516333, 's': 22164928131217587120823988833630085889074303492801262486685559832552777669741, 'kp': 203, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 47993445392282070517665997289956977115896255535879354420504900607601836637890, 's': 37646777708367978131173727579740827913294865142881256078048100035622729412756, 'kp': 117, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 808355034313794503540924441853310842934763011251993961430920797511096008498, 's': 26632135675180210600213811273743061334613137412718761969429946967156351897478, 'kp': 194, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 12392416887330653367097198830655106050886366421602603917063463705594675827896, 's': 11159199409000290611423295457204594419093980691288042890900008944695720507094, 'kp': 241, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 27599569229152188515098116861078353401920880103786084917426725825204732098211, 's': 39987965321321132283596688531004453990235197145405096647412766025363442252850, 'kp': 109, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 42289950968174454749441047060040749291731563691223034152381274396502736463253, 's': 430697554585691994477420373429995082823840322680701866691877430949729629555, 'kp': 200, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 107230634320979617260193247891883739258196897576104284444794437524724617036106, 's': 22268913286231697322837030804346095978779838774538419534845912944297929855615, 'kp': 131, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 33538975512090171954077420570151758485572385188097072558614893751131154302975, 's': 21481885849898381280754062964617136954229988551047493918100999192122592373097, 'kp': 96, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 11784637354184338646572281524358107554753511610013685384383007685263421332270, 's': 30184855468775851668049255327970629076505205004744811028105419783683405575670, 'kp': 108, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 34342269111182431917641402508856054207866094407152434816898848759887594624173, 's': 92095083650002131829586588767194819762008290805323706457541454769043993705818, 'kp': 28, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 29242069126775272389089128168018364761369925828725921222949230244582917326456, 's': 81174574701827135316795676201051580144650977542592226443984620479047166976275, 'kp': 135, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 71480811354425869981287449055478912430827232077005344067889675424164477049520, 's': 55666335806309380248999596624640170208803190918022142807899162242141583329174, 'kp': 92, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 47724527569474530425493172166097570977104157039876161168764539904108791716296, 's': 73097690521715951799970838178781632193477113563863753640695474160716869379764, 'kp': 18, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 106161906844186418058181301258275701377478528456000776806125783785658631404181, 's': 31715141625988858395647563347388393436887940182588450761533407117309806174077, 'kp': 66, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 5303535821788657002325944705273136233819562542522195125121038371955343421419, 's': 78397084386133206842177430090192061714731488372250396733773851724398880497514, 'kp': 101, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 47334534798804086081486681543722162354894779113562050101787508819286859806850, 's': 68089994439417471012695854504683307776242576873504459358107900063950359216143, 'kp': 189, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 36727966094828492985010705464970784349886646761852256158003957807677345808368, 's': 56483072968516416277056131657803081037243661629860909110025658578993681976695, 'kp': 172, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 66767498501865501059586172224178680992433429230899397158151647077546376914330, 's': 71507726414099919847061480992524469185628538199482529188398302751269244413, 'kp': 74, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 42331219431518983942053287015263175710318540173683166191728827482546416852200, 's': 103296118807595402290453781121662381645145002957161794624581579143784860333642, 'kp': 226, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 73137683054475202604691445299629345128331602405316744478949553222293627816512, 's': 95736070574332409143271040569971516204641464665029894945162898075678965925911, 'kp': 55, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 59322396996150802441268548540408489103102729015912885455090402178935475075274, 's': 86211486643602088705124304208190601107227400071368214292735678674659753863895, 'kp': 118, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 109284751097372741715472236724359002803381919164425981347643418650665196594995, 's': 64437551949268598142008236285131984252451055568777495868220310434195796060532, 'kp': 179, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 63226440312145244111437322458843394627785519820305814308675566097273193036010, 's': 4122101870841210737716151622780017796991782299604264587729763829387507107239, 'kp': 178, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 70123467048635185148732787145251526019694962174096017923976017225760977001835, 's': 106936884916672867817194495447546864904684825055332200105035390411409292442424, 'kp': 54, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 43625160405666286105034419346441270171119537900263617268442743043478466770712, 's': 88016093997617463445687404088233295780396703084992919918915653935200820870114, 'kp': 19, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 37794511871358787559898091983989809149282480016758278442564934501204007782565, 's': 108726494577882306693566887621441222341481012316758653813801090222878990357007, 'kp': 236, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 55346397754686965001204122905095888588901405930263297844043851570235645651906, 's': 1326139938660601245698126283958513274174083970073078956723206560764495386187, 'kp': 18, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 80598458036879470043717563337403147522994695969612975863693729842183925731882, 's': 106400614138823315672488594305512071134854391773937526076561140551919873506697, 'kp': 12, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 73525611232302083737198085083457046646106727666521489812507560813073947228983, 's': 67648134858682718272030895010114496363861752247813558714250675660686067580827, 'kp': 0, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 77374004464593503347326078438915418046353454265353331423642866541001576581671, 's': 72807393556556726117697090335352026325853546007358146239096035418038196579915, 'kp': 251, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 55801417881848103985268367853827175553098225151244298592828756478211148987372, 's': 4696812647447589163557323334444292601541713255631239100801037072217573852717, 'kp': 132, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 66478305438885463157624751848170679451678290687034746979789959994179199169441, 's': 9246311535344979322617659403684845974497037445283478065823782826536199592112, 'kp': 81, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 57767533386102133266569263929854152970510701703020500741400686553770482662045, 's': 85209313576106356001715103784787349352733677752257813925634808583995892995426, 'kp': 68, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 22080432169355659942746405143419982106572487696614903943595709487899859033465, 's': 87124400406258970178433093706440351121426460377988695413004541644518826157224, 'kp': 19, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 81219830145632319474968310548001591071223486124426988584411621536993829625231, 's': 88853374648998735199455965124015057175802221774446875973641496412959256466574, 'kp': 120, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 41520575590885186096918771408514019644344901221031904184774272134324821644409, 's': 110489520276858536368901906035541819634025137491921279400613347723807146840270, 'kp': 213, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 30729812582938805525139786082933408782386995927051636583759667684162324365533, 's': 93629827169098241968890451208009360916537531256561631172792515686470663686994, 'kp': 105, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 1151148536401761079913222863678576801951780318174132914896436722677930599763, 's': 72869048062916226282898356328745058239119995524825570516346536949827908185913, 'kp': 200, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 31673762366362278041436072194318465084201504896641204205700010554561864351724, 's': 7971479792818355721755091942605141221820375902374107072872827528371245095540, 'kp': 103, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 94172167488409241833886283969895720213315807988076674432449581745202270411219, 's': 102599546646731647136698631769948894513209638932109597222981704513778082401646, 'kp': 20, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 80913714298459525759792646164197418695975002585545709516964899474703516088798, 's': 52636687791912054066928359636925655162166239912664563489231935367446353944310, 'kp': 203, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 58189431506357507469414047113700754987554496704882722421644981177549974910108, 's': 81185374791742970379378708683986692053503091200138313795555132162085398775031, 'kp': 11, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 72618477625259038063592993741778171988966935139957099286353751045809127010161, 's': 72459315233430064708454397191494297777816942336264199720879958591321824783937, 'kp': 46, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 18942795613437888076490527561091733321609539179266968622656696445931400366819, 's': 56617744641771622905529173218006328250138331061548120199503112395048253668493, 'kp': 214, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 30226544625731484087135954995489866952012787201852570605968607393546578906022, 's': 113452385063545747070843495924448430192277733544213912108779329438996361430276, 'kp': 5, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 20914099571520279196240842035585610365295688614553638376660238021020081274236, 's': 66521308758556183158097794927317895924318447285636001282995756174350820340744, 'kp': 235, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 65053167747034693117463012883347272626401144776494297499620155992382342472229, 's': 59822852780708784896478764978370543864303314314055224580164461809981460120957, 'kp': 18, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 109306712103726597023230557872272867971866838280982095070992578701450183821977, 's': 48423502128359288611990164830565884718636026525812155400168905719379254901679, 'kp': 40, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 92544350098313717393129847530859804233881635458575529574318912687871742684090, 's': 100650477269522761926550962269465062358174074689026021220619912706706978696439, 'kp': 63, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 67246871017779520213724656190571439980316065919398783469511920958233757720904, 's': 28043881127075439770049551267145060612019930240861915869810098075680535449051, 'kp': 245, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}, {'r': 76760605256444668018428351508640362126700062908699638534724783804098739437364, 's': 5150734774989448213481187144894210376004695450332747476783074396804882538634, 'kp': 115, 'hash': 49445761299415096312358027714619628169076798968817504851486972775694191147018}]
q_target = [14691259845007157720953724270398401638548691391777695401107860616275888318430, 69216796642646390769515733371786970706593715870498880947415192904662437894112]

if not ecdsa_lib.check_publickey(q_target, curve_string):
print(
f"Public key data invalid, not on the given {curve_string.upper()} curve."
)
return
print(f"Running with {known_bits} bits of k ({data_type})")
print(f"Starting recovery attack (curve {curve_string.upper()})")
if loop:
print("Will shuffle loop until the key found.")
result = recover_private_key(
signatures, None, q_target, curve_string, data_type, known_bits, loop
)
if result:
print("Key found \\o/")
print(result)
else:
print("Private key not found. Sorry For Your Loss")


if __name__ == "__main__":
lattice_attack_cli(False)

干出这道直接冲到第九