# vul_rsa02 Problem --- - 250pt - 139solves あなたは引き続き組織の定期研修に参加しています。教官は昨日と同じ人物です。「早く帰れると言ったな。あれは嘘だ」昨日の信じられない光景が脳裏に蘇ります。RSA 暗号の禁止事項くらいは覚えておくようにと再び RSA 暗号の課題が出題されました。もはや誰も信じていませんがどうやら暗号文 c を解くことができればそれだけ早く帰れるようです。 以下の RSA 暗号を解読してフラグを入手してください。 Output --- c : `227982950403746746755552239763357058548502617805036635512868420433061892121830106966643649614593055827188324989309580260616202575703840597661315505385258421941843741681` n : `314346410651148884346780415550080886403387714336281086088147022485674797846237037974025946383115524274834695323732173639559408484919557273975110018517586435379414584423` e : `66936921908603214280018123951718024245768729741801173248810116559480507532472797061229726239246069153844944427944092809221289396952390359710880636835981794334459051137` Solve --- `e`が大きいと秘密鍵 `d`を計算可能な**Wiener's Attack**が刺さる Wiener's Attackのコードは[ここ](https://github.com/pablocelayes/rsa-wiener-attack)からコピーしてきた。 ```python= c = 227982950403746746755552239763357058548502617805036635512868420433061892121830106966643649614593055827188324989309580260616202575703840597661315505385258421941843741681 n = 314346410651148884346780415550080886403387714336281086088147022485674797846237037974025946383115524274834695323732173639559408484919557273975110018517586435379414584423 e = 66936921908603214280018123951718024245768729741801173248810116559480507532472797061229726239246069153844944427944092809221289396952390359710880636835981794334459051137 # Wiener's Attack import RSAwienerHacker import binascii from Crypto.Util.number import long_to_bytes d = RSAwienerHacker.hack_RSA(e,n) print(d) m=pow(c,d,n) cc = pow(m,e,n) print(m) assert c==cc mm = long_to_bytes(m) print(mm) ``` Flag --- :tada: flag{197_Michael_J_Wiener_673} ###### tags: `seotodaNoteCTF` `crypto`