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

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

00766b8e1f9c2665cf7fd29f9cf558df?s=128

odanado

July 15, 2017
Tweet

Transcript

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

  2. ԿͷAPIΛ࡞ͬͨͷ • ϙέϞϯʁ • ిؾ૏ͷήʔϜ • ڈ೥ൃച͞ΕͨαϯϜʔϯ • ཚ਺ௐ੔ʁ •

    ޙͰ࿩͢ • APIʁ • Application Programming Interface • URLୟ͘ͱඞཁͳ৘ใ͕ฦͬͯ͘Δ ϙέϞϯͷཚ਺ௐ੔ͷͨΊͷ΢ΣϒAPIΛ࡞ͬͨ
  3. ཚ਺ௐ੔ʁ • ٖࣅཚ਺ • seedͷ஋ʹΑͬͯͰͨΒΊʹݟ͑Δ͚Ͳ ࣍ʹԿ͕དྷΔ͔Θ͔͍ͬͯΔཚ਺ • ਅͷཚ਺ • ࣍ʹԿ͕དྷΔ͔༧ଌෆՄೳͳຊ౰ͷཚ਺

    ήʔϜ಺ͷٖࣅཚ਺Λࢥ͍௨Γʹૢ࡞͢Δ͜ͱ seed = 42 ࣍ʹԿ͕དྷΔ͔ ༧ଌՄೳ ࣍ʹԿ͕དྷΔ͔ ༧ଌෆՄೳ
  4. ϙέϞϯͷཚ਺ௐ੔ʁ • ڧ͍ݸମ΍৭ҧ͍ͳͲग़͠์୊ • ιγϟήͰ֬ఆͰSSRΛҾ͘Α͏ͳײ͡ • ྑ͍αΠίϩͷ໨=ڧ͍ݸମ,SSR • Ͳ͏΍Δͷ͔ʁ ٖࣅཚ਺ͷseedʹΑͬͯ

    αΠίϩͷ໨͸ܾ·Δ ٖࣅཚ਺ͷseedͷ஋͸ 0͔Β2"#ͷ஋ΛऔΔ αΠίϩͷ໨͔Βseedͷ஋Λٯࢉ͢Ε͹ ͦͷޙͷαΠίϩͷ໨͸༧ଌՄೳ αΠίϩͷ໨͸ ήʔϜ্Ͱ؍ଌՄೳ
  5. ཚ਺ΞϧΰϦζϜ • ཚ਺ΞϧΰϦζϜ • seed ͔ΒαΠίϩͷ໨Λܭࢉ͢Δํ๏ • ཚ਺ΞϧΰϦζϜͷछྨ • ฏํ࠾த๏

    • ઢܗ߹ಉ๏ • ϝϧηϯψɾπΠελ • xor shift • ͳͲͳͲ ϙέϞϯͰͲͷཚ਺ΞϧΰϦζϜ͕ ࢖ΘΕ͍ͯΔ͔Θ͔Βͳ͍
  6. ཚ਺ΞϧΰϦζϜ • όΠφϦղੳ͢Δ͔͠ແ͍ʁʁ

  7. ࡞ͬͨAPIͷ࢓༷ • લॲཧ • αʔόଆͰ࣍ͷ஋ͷϖΞΛ2"#ݸܭࢉ • (seed, ࠷ॳnݸͷαΠίϩͷ໨) • ࠷ॳnݸͷαΠίϩͷ໨Ͱιʔτ

    • ຊॲཧ • Ϣʔβʔ͔Β࠷ॳnݸͷαΠίϩͷ໨͕དྷΔͱ ೋ෼୳ࡧͰseedΛܭࢉ • ܭࢉ݁ՌΛjsonܗࣜͰฦ٫
  8. ࡞ͬͨAPIͷ࢓༷ ࠷ॳnݸͷαΠίϩͷ໨ seed=42 ͩΑ ʘೋ෼୳ࡧʗ ʘڧ͍ݸମͷϙέϞϯήοτʗ

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

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

    wwwwwwzx/3DSRNGTool • zaksabeast/SMBrowserRNG
  11. ײ૝ • ωοτ্ͷ஌Γ߹͍ͱҰॹʹ͜͜·ͰདྷΕͨ • ੈքதͷਓʹ࢖ͬͯ໯͑ͨͷ͸ॳͩͬͨ • ΍ͬͺΓϓϩάϥϛϯά͸ָ͍͠ • ࣗ෼ͷ໾ʹཱͭͱ΋ͬͱָ͍͠ •

    ୭͔ʹ࢖ͬͯ໯͑Δͱߋʹָ͍͠ • 5000ஹճ·Ͱ࢒Γ4999ஹ9999ԯ9940ສճ • 41ԯ6666ສ6667೥ޙ