$30 off During Our Annual Pro Sale. View Details »

半年間で60万回叩かれたAPIを公開した話 / rng-api

半年間で60万回叩かれたAPIを公開した話 / rng-api

odanado
PRO

July 15, 2017
Tweet

More Decks by odanado

Other Decks in Programming

Transcript

  1. ൒೥ؒͰ60ສճୟ͔Εͨ
    APIΛެ։ͨ͠࿩

    View Slide

  2. ԿͷAPIΛ࡞ͬͨͷ
    • ϙέϞϯʁ
    • ిؾ૏ͷήʔϜ
    • ڈ೥ൃച͞ΕͨαϯϜʔϯ
    • ཚ਺ௐ੔ʁ
    • ޙͰ࿩͢
    • APIʁ
    • Application Programming Interface
    • URLୟ͘ͱඞཁͳ৘ใ͕ฦͬͯ͘Δ
    ϙέϞϯͷཚ਺ௐ੔ͷͨΊͷ΢ΣϒAPIΛ࡞ͬͨ

    View Slide

  3. ཚ਺ௐ੔ʁ
    • ٖࣅཚ਺
    • seedͷ஋ʹΑͬͯͰͨΒΊʹݟ͑Δ͚Ͳ
    ࣍ʹԿ͕དྷΔ͔Θ͔͍ͬͯΔཚ਺
    • ਅͷཚ਺
    • ࣍ʹԿ͕དྷΔ͔༧ଌෆՄೳͳຊ౰ͷཚ਺
    ήʔϜ಺ͷٖࣅཚ਺Λࢥ͍௨Γʹૢ࡞͢Δ͜ͱ
    seed = 42
    ࣍ʹԿ͕དྷΔ͔
    ༧ଌՄೳ
    ࣍ʹԿ͕དྷΔ͔
    ༧ଌෆՄೳ

    View Slide

  4. ϙέϞϯͷཚ਺ௐ੔ʁ
    • ڧ͍ݸମ΍৭ҧ͍ͳͲग़͠์୊
    • ιγϟήͰ֬ఆͰSSRΛҾ͘Α͏ͳײ͡
    • ྑ͍αΠίϩͷ໨=ڧ͍ݸମ,SSR
    • Ͳ͏΍Δͷ͔ʁ
    ٖࣅཚ਺ͷseedʹΑͬͯ
    αΠίϩͷ໨͸ܾ·Δ
    ٖࣅཚ਺ͷseedͷ஋͸
    0͔Β2"#ͷ஋ΛऔΔ
    αΠίϩͷ໨͔Βseedͷ஋Λٯࢉ͢Ε͹
    ͦͷޙͷαΠίϩͷ໨͸༧ଌՄೳ
    αΠίϩͷ໨͸
    ήʔϜ্Ͱ؍ଌՄೳ

    View Slide

  5. ཚ਺ΞϧΰϦζϜ
    • ཚ਺ΞϧΰϦζϜ
    • seed ͔ΒαΠίϩͷ໨Λܭࢉ͢Δํ๏
    • ཚ਺ΞϧΰϦζϜͷछྨ
    • ฏํ࠾த๏
    • ઢܗ߹ಉ๏
    • ϝϧηϯψɾπΠελ
    • xor shift
    • ͳͲͳͲ
    ϙέϞϯͰͲͷཚ਺ΞϧΰϦζϜ͕
    ࢖ΘΕ͍ͯΔ͔Θ͔Βͳ͍

    View Slide

  6. ཚ਺ΞϧΰϦζϜ
    • όΠφϦղੳ͢Δ͔͠ແ͍ʁʁ

    View Slide

  7. ࡞ͬͨAPIͷ࢓༷
    • લॲཧ
    • αʔόଆͰ࣍ͷ஋ͷϖΞΛ2"#ݸܭࢉ
    • (seed, ࠷ॳnݸͷαΠίϩͷ໨)
    • ࠷ॳnݸͷαΠίϩͷ໨Ͱιʔτ
    • ຊॲཧ
    • Ϣʔβʔ͔Β࠷ॳnݸͷαΠίϩͷ໨͕དྷΔͱ
    ೋ෼୳ࡧͰseedΛܭࢉ
    • ܭࢉ݁ՌΛjsonܗࣜͰฦ٫

    View Slide

  8. ࡞ͬͨAPIͷ࢓༷
    ࠷ॳnݸͷαΠίϩͷ໨
    seed=42 ͩΑ
    ʘೋ෼୳ࡧʗ ʘڧ͍ݸମͷϙέϞϯήοτʗ

    View Slide

  9. ࡞ͬͨAPIͷ࢓༷
    • αʔόʔ
    • ͘͞ΒVPS
    • ϓϩάϥϛϯάݴޠ
    • લॲཧ&୳ࡧ͸C++
    • API෦෼͸Python

    View Slide

  10. ࡞ͬͨ݁Ռ
    • ൒೥Ͱ60ສճAPI͕ίʔϧ͞Εͨ
    • ೔ຊࠃ಺͚ͩ͡Όͳͯ͘ੈքத͔Β
    • ΫϥΠΞϯτΞϓϦΛ࡞ͬͯ͘ΕΔਓ͕ݱΕͨ
    • Quandra/PokemonSunMoonRNGTool
    • wwwwwwzx/3DSRNGTool
    • zaksabeast/SMBrowserRNG

    View Slide

  11. ײ૝
    • ωοτ্ͷ஌Γ߹͍ͱҰॹʹ͜͜·ͰདྷΕͨ
    • ੈքதͷਓʹ࢖ͬͯ໯͑ͨͷ͸ॳͩͬͨ
    • ΍ͬͺΓϓϩάϥϛϯά͸ָ͍͠
    • ࣗ෼ͷ໾ʹཱͭͱ΋ͬͱָ͍͠
    • ୭͔ʹ࢖ͬͯ໯͑Δͱߋʹָ͍͠
    • 5000ஹճ·Ͱ࢒Γ4999ஹ9999ԯ9940ສճ
    • 41ԯ6666ສ6667೥ޙ

    View Slide