import gdb
import secrets
POKEDEX = {
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: "ウツボット",
72: "メノクラゲ",
73: "ドククラゲ",
74: "イシツブテ",
75: "ゴローン",
76: "ゴローニャ",
77: "ポニータ",
78: "ギャロップ",
79: "ヤドン",
80: "ヤドラン",
81: "コイル",
82: "レアコイル",
83: "カモネギ",
84: "ドードー",
85: "ドードリオ",
86: "パウワウ",
87: "ジュゴン",
88: "ベトベター",
89: "ベトベトン",
90: "シェルダー",
91: "パルシェン",
92: "ゴース",
93: "ゴースト",
94: "ゲンガー",
95: "イワーク",
96: "スリープ",
97: "スリーパー",
98: "クラブ",
99: "キングラー",
100: "ビリリダマ",
101: "マルマイン",
102: "タマタマ",
103: "ナッシー",
104: "カラカラ",
105: "ガラガラ",
106: "サワムラー",
107: "エビワラー",
108: "ベロリンガ",
109: "ドガース",
110: "マタドガス",
111: "サイホーン",
112: "サイドン",
113: "ラッキー",
114: "モンジャラ",
115: "ガルーラ",
116: "タッツー",
117: "シードラ",
118: "トサキント",
119: "アズマオウ",
120: "ヒトデマン",
121: "スターミー",
122: "バリヤード",
123: "ストライク",
124: "ルージュラ",
125: "エレブー",
126: "ブーバー",
127: "カイロス",
128: "ケンタロス",
129: "コイキング",
130: "ギャラドス",
131: "ラプラス",
132: "メタモン",
133: "イーブイ",
134: "シャワーズ",
135: "サンダース",
136: "ブースター",
137: "ポリゴン",
138: "オムナイト",
139: "オムスター",
140: "カブト",
141: "カブトプス",
142: "プテラ",
143: "カビゴン",
144: "フリーザー",
145: "サンダー",
146: "ファイヤー",
147: "ミニリュウ",
148: "ハクリュー",
149: "カイリュー",
150: "ミュウツー",
151: "ミュウ",
152: "チコリータ",
153: "ベイリーフ",
154: "メガニウム",
155: "ヒノアラシ",
156: "マグマラシ",
157: "バクフーン",
158: "ワニノコ",
159: "アリゲイツ",
160: "オーダイル",
161: "オタチ",
162: "オオタチ",
163: "ホーホー",
164: "ヨルノズク",
165: "レディバ",
166: "レディアン",
167: "イトマル",
168: "アリアドス",
169: "クロバット",
170: "チョンチー",
171: "ランターン",
172: "ピチュー",
173: "ピィ",
174: "ププリン",
175: "トゲピー",
176: "トゲチック",
177: "ネイティ",
178: "ネイティオ",
179: "メリープ",
180: "モココ",
181: "デンリュウ",
182: "キレイハナ",
183: "マリル",
184: "マリルリ",
185: "ウソッキー",
186: "ニョロトノ",
187: "ハネッコ",
188: "ポポッコ",
189: "ワタッコ",
190: "エイパム",
191: "ヒマナッツ",
192: "キマワリ",
193: "ヤンヤンマ",
194: "ウパー",
195: "ヌオー",
196: "エーフィ",
197: "ブラッキー",
198: "ヤミカラス",
199: "ヤドキング",
200: "ムウマ",
201: "アンノーン",
202: "ソーナンス",
203: "キリンリキ",
204: "クヌギダマ",
205: "フォレトス",
206: "ノコッチ",
207: "グライガー",
208: "ハガネール",
209: "ブルー",
210: "グランブル",
211: "ハリーセン",
212: "ハッサム",
213: "ツボツボ",
214: "ヘラクロス",
215: "ニューラ",
216: "ヒメグマ",
217: "リングマ",
218: "マグマッグ",
219: "マグカルゴ",
220: "ウリムー",
221: "イノムー",
222: "サニーゴ",
223: "テッポウオ",
224: "オクタン",
225: "デリバード",
226: "マンタイン",
227: "エアームド",
228: "デルビル",
229: "ヘルガー",
230: "キングドラ",
231: "ゴマゾウ",
232: "ドンファン",
233: "ポリゴン2",
234: "オドシシ",
235: "ドーブル",
236: "バルキー",
237: "カポエラー",
238: "ムチュール",
239: "エレキッド",
240: "ブビィ",
241: "ミルタンク",
242: "ハピナス",
243: "ライコウ",
244: "エンテイ",
245: "スイクン",
246: "ヨーギラス",
247: "サナギラス",
248: "バンギラス",
249: "ルギア",
250: "ホウオウ",
251: "セレビィ",
252: "キモリ",
253: "ジュプトル",
254: "ジュカイン",
255: "アチャモ",
256: "ワカシャモ",
257: "バシャーモ",
258: "ミズゴロウ",
259: "ヌマクロー",
260: "ラグラージ",
261: "ポチエナ",
262: "グラエナ",
263: "ジグザグマ",
264: "マッスグマ",
265: "ケムッソ",
266: "カラサリス",
267: "アゲハント",
268: "マユルド",
269: "ドクケイル",
270: "ハスボー",
271: "ハスブレロ",
272: "ルンパッパ",
273: "タネボー",
274: "コノハナ",
275: "ダーテング",
276: "スバメ",
277: "オオスバメ",
278: "キャモメ",
279: "ペリッパー",
280: "ラルトス",
281: "キルリア",
282: "サーナイト",
283: "アメタマ",
284: "アメモース",
285: "キノココ",
286: "キノガッサ",
287: "ナマケロ",
288: "ヤルキモノ",
289: "ケッキング",
290: "ツチニン",
291: "テッカニン",
292: "ヌケニン",
293: "ゴニョニョ",
294: "ドゴーム",
295: "バクオング",
296: "マクノシタ",
297: "ハリテヤマ",
298: "ルリリ",
299: "ノズパス",
300: "エネコ",
301: "エネコロロ",
302: "ヤミラミ",
303: "クチート",
304: "ココドラ",
305: "コドラ",
306: "ボスゴドラ",
307: "アサナン",
308: "チャーレム",
309: "ラクライ",
310: "ライボルト",
311: "プラスル",
312: "マイナン",
313: "バルビート",
314: "イルミーゼ",
315: "ロゼリア",
316: "ゴクリン",
317: "マルノーム",
318: "キバニア",
319: "サメハダー",
320: "ホエルコ",
321: "ホエルオー",
322: "ドンメル",
323: "バクーダ",
324: "コータス",
325: "バネブー",
326: "ブーピッグ",
327: "パッチール",
328: "ナックラー",
329: "ビブラーバ",
330: "フライゴン",
331: "サボネア",
332: "ノクタス",
333: "チルット",
334: "チルタリス",
335: "ザングース",
336: "ハブネーク",
337: "ルナトーン",
338: "ソルロック",
339: "ドジョッチ",
340: "ナマズン",
341: "ヘイガニ",
342: "シザリガー",
343: "ヤジロン",
344: "ネンドール",
345: "リリーラ",
346: "ユレイドル",
347: "アノプス",
348: "アーマルド",
349: "ヒンバス",
350: "ミロカロス",
351: "ポワルン",
352: "カクレオン",
353: "カゲボウズ",
354: "ジュペッタ",
355: "ヨマワル",
356: "サマヨール",
357: "トロピウス",
358: "チリーン",
359: "アブソル",
360: "ソーナノ",
361: "ユキワラシ",
362: "オニゴーリ",
363: "タマザラシ",
364: "トドグラー",
365: "トドゼルガ",
366: "パールル",
367: "ハンテール",
368: "サクラビス",
369: "ジーランス",
370: "ラブカス",
371: "タツベイ",
372: "コモルー",
373: "ボーマンダ",
374: "ダンバル",
375: "メタング",
376: "メタグロス",
377: "レジロック",
378: "レジアイス",
379: "レジスチル",
380: "ラティアス",
381: "ラティオス",
382: "カイオーガ",
383: "グラードン",
384: "レックウザ",
385: "ジラーチ",
386: "デオキシス",
387: "ナエトル",
388: "ハヤシガメ",
389: "ドダイトス",
390: "ヒコザル",
391: "モウカザル",
392: "ゴウカザル",
393: "ポッチャマ",
394: "ポッタイシ",
395: "エンペルト",
396: "ムックル",
397: "ムクバード",
398: "ムクホーク",
399: "ビッパ",
400: "ビーダル",
401: "コロボーシ",
402: "コロトック",
403: "コリンク",
404: "ルクシオ",
405: "レントラー",
406: "スボミー",
407: "ロズレイド",
408: "ズガイドス",
409: "ラムパルド",
410: "タテトプス",
411: "トリデプス",
412: "ミノムッチ",
413: "ミノマダム",
414: "ガーメイル",
415: "ミツハニー",
416: "ビークイン",
417: "パチリス",
418: "ブイゼル",
419: "フローゼル",
420: "チェリンボ",
421: "チェリム",
422: "カラナクシ",
423: "トリトドン",
424: "エテボース",
425: "フワンテ",
426: "フワライド",
427: "ミミロル",
428: "ミミロップ",
429: "ムウマージ",
430: "ドンカラス",
431: "ニャルマー",
432: "ブニャット",
433: "リーシャン",
434: "スカンプー",
435: "スカタンク",
436: "ドーミラー",
437: "ドータクン",
438: "ウソハチ",
439: "マネネ",
440: "ピンプク",
441: "ペラップ",
442: "ミカルゲ",
443: "フカマル",
444: "ガバイト",
445: "ガブリアス",
446: "ゴンベ",
447: "リオル",
448: "ルカリオ",
449: "ヒポポタス",
450: "カバルドン",
451: "スコルピ",
452: "ドラピオン",
453: "グレッグル",
454: "ドクロッグ",
455: "マスキッパ",
456: "ケイコウオ",
457: "ネオラント",
458: "タマンタ",
459: "ユキカブリ",
460: "ユキノオー",
461: "マニューラ",
462: "ジバコイル",
463: "ベロベルト",
464: "ドサイドン",
465: "モジャンボ",
466: "エレキブル",
467: "ブーバーン",
468: "トゲキッス",
469: "メガヤンマ",
470: "リーフィア",
471: "グレイシア",
472: "グライオン",
473: "マンムー",
474: "ポリゴンZ",
475: "エルレイド",
476: "ダイノーズ",
477: "ヨノワール",
478: "ユキメノコ",
479: "ロトム",
480: "ユクシー",
481: "エムリット",
482: "アグノム",
483: "ディアルガ",
484: "パルキア",
485: "ヒードラン",
486: "レジギガス",
487: "ギラティナ",
488: "クレセリア",
489: "フィオネ",
490: "マナフィ",
491: "ダークライ",
492: "シェイミ",
493: "アルセウス",
494: "ビクティニ",
495: "ツタージャ",
496: "ジャノビー",
497: "ジャローダ",
498: "ポカブ",
499: "チャオブー",
500: "エンブオー",
501: "ミジュマル",
502: "フタチマル",
503: "ダイケンキ",
504: "ミネズミ",
505: "ミルホッグ",
506: "ヨーテリー",
507: "ハーデリア",
508: "ムーランド",
509: "チョロネコ",
510: "レパルダス",
511: "ヤナップ",
512: "ヤナッキー",
513: "バオップ",
514: "バオッキー",
515: "ヒヤップ",
516: "ヒヤッキー",
517: "ムンナ",
518: "ムシャーナ",
519: "マメパト",
520: "ハトーボー",
521: "ケンホロウ",
522: "シママ",
523: "ゼブライカ",
524: "ダンゴロ",
525: "ガントル",
526: "ギガイアス",
527: "コロモリ",
528: "ココロモリ",
529: "モグリュー",
530: "ドリュウズ",
531: "タブンネ",
532: "ドッコラー",
533: "ドテッコツ",
534: "ローブシン",
535: "オタマロ",
536: "ガマガル",
537: "ガマゲロゲ",
538: "ナゲキ",
539: "ダゲキ",
540: "クルミル",
541: "クルマユ",
542: "ハハコモリ",
543: "フシデ",
544: "ホイーガ",
545: "ペンドラー",
546: "モンメン",
547: "エルフーン",
548: "チュリネ",
549: "ドレディア",
550: "バスラオ",
551: "メグロコ",
552: "ワルビル",
553: "ワルビアル",
554: "ダルマッカ",
555: "ヒヒダルマ",
556: "マラカッチ",
557: "イシズマイ",
558: "イワパレス",
559: "ズルッグ",
560: "ズルズキン",
561: "シンボラー",
562: "デスマス",
563: "デスカーン",
564: "プロトーガ",
565: "アバゴーラ",
566: "アーケン",
567: "アーケオス",
568: "ヤブクロン",
569: "ダストダス",
570: "ゾロア",
571: "ゾロアーク",
572: "チラーミィ",
573: "チラチーノ",
574: "ゴチム",
575: "ゴチミル",
576: "ゴチルゼル",
577: "ユニラン",
578: "ダブラン",
579: "ランクルス",
580: "コアルヒー",
581: "スワンナ",
582: "バニプッチ",
583: "バニリッチ",
584: "バイバニラ",
585: "シキジカ",
586: "メブキジカ",
587: "エモンガ",
588: "カブルモ",
589: "シュバルゴ",
590: "タマゲタケ",
591: "モロバレル",
592: "プルリル",
593: "ブルンゲル",
594: "ママンボウ",
595: "バチュル",
596: "デンチュラ",
597: "テッシード",
598: "ナットレイ",
599: "ギアル",
600: "ギギアル",
601: "ギギギアル",
602: "シビシラス",
603: "シビビール",
604: "シビルドン",
605: "リグレー",
606: "オーベム",
607: "ヒトモシ",
608: "ランプラー",
609: "シャンデラ",
610: "キバゴ",
611: "オノンド",
612: "オノノクス",
613: "クマシュン",
614: "ツンベアー",
615: "フリージオ",
616: "チョボマキ",
617: "アギルダー",
618: "マッギョ",
619: "コジョフー",
620: "コジョンド",
621: "クリムガン",
622: "ゴビット",
623: "ゴルーグ",
624: "コマタナ",
625: "キリキザン",
626: "バッフロン",
627: "ワシボン",
628: "ウォーグル",
629: "バルチャイ",
630: "バルジーナ",
631: "クイタラン",
632: "アイアント",
633: "モノズ",
634: "ジヘッド",
635: "サザンドラ",
636: "メラルバ",
637: "ウルガモス",
638: "コバルオン",
639: "テラキオン",
640: "ビリジオン",
641: "トルネロス",
642: "ボルトロス",
643: "レシラム",
644: "ゼクロム",
645: "ランドロス",
646: "キュレム",
647: "ケルディオ",
648: "メロエッタ",
649: "ゲノセクト",
650: "ハリマロン",
651: "ハリボーグ",
652: "ブリガロン",
653: "フォッコ",
654: "テールナー",
655: "マフォクシー",
656: "ケロマツ",
657: "ゲコガシラ",
658: "ゲッコウガ",
659: "ホルビー",
660: "ホルード",
661: "ヤヤコマ",
662: "ヒノヤコマ",
663: "ファイアロー",
664: "コフキムシ",
665: "コフーライ",
666: "ビビヨン",
667: "シシコ",
668: "カエンジシ",
669: "フラベベ",
670: "フラエッテ",
671: "フラージェス",
672: "メェークル",
673: "ゴーゴート",
674: "ヤンチャム",
675: "ゴロンダ",
676: "トリミアン",
677: "ニャスパー",
678: "ニャオニクス",
679: "ヒトツキ",
680: "ニダンギル",
681: "ギルガルド",
682: "シュシュプ",
683: "フレフワン",
684: "ペロッパフ",
685: "ペロリーム",
686: "マーイーカ",
687: "カラマネロ",
688: "カメテテ",
689: "ガメノデス",
690: "クズモー",
691: "ドラミドロ",
692: "ウデッポウ",
693: "ブロスター",
694: "エリキテル",
695: "エレザード",
696: "チゴラス",
697: "ガチゴラス",
698: "アマルス",
699: "アマルルガ",
700: "ニンフィア",
701: "ルチャブル",
702: "デデンネ",
703: "メレシー",
704: "ヌメラ",
705: "ヌメイル",
706: "ヌメルゴン",
707: "クレッフィ",
708: "ボクレー",
709: "オーロット",
710: "バケッチャ",
711: "パンプジン",
712: "カチコール",
713: "クレベース",
714: "オンバット",
715: "オンバーン",
716: "ゼルネアス",
717: "イベルタル",
718: "ジガルデ",
719: "ディアンシー",
720: "フーパ",
721: "ボルケニオン",
722: "モクロー",
723: "フクスロー",
724: "ジュナイパー",
725: "ニャビー",
726: "ニャヒート",
727: "ガオガエン",
728: "アシマリ",
729: "オシャマリ",
730: "アシレーヌ",
731: "ツツケラ",
732: "ケララッパ",
733: "ドデカバシ",
734: "ヤングース",
735: "デカグース",
736: "アゴジムシ",
737: "デンヂムシ",
738: "クワガノン",
739: "マケンカニ",
740: "ケケンカニ",
741: "オドリドリ",
742: "アブリー",
743: "アブリボン",
744: "イワンコ",
745: "ルガルガン",
746: "ヨワシ",
747: "ヒドイデ",
748: "ドヒドイデ",
749: "ドロバンコ",
750: "バンバドロ",
751: "シズクモ",
752: "オニシズクモ",
753: "カリキリ",
754: "ラランテス",
755: "ネマシュ",
756: "マシェード",
757: "ヤトウモリ",
758: "エンニュート",
759: "ヌイコグマ",
760: "キテルグマ",
761: "アマカジ",
762: "アママイコ",
763: "アマージョ",
764: "キュワワー",
765: "ヤレユータン",
766: "ナゲツケサル",
767: "コソクムシ",
768: "グソクムシャ",
769: "スナバァ",
770: "シロデスナ",
771: "ナマコブシ",
772: "タイプ:ヌル",
773: "シルヴァディ",
774: "メテノ",
775: "ネッコアラ",
776: "バクガメス",
777: "トゲデマル",
778: "ミミッキュ",
779: "ハギギシリ",
780: "ジジーロン",
781: "ダダリン",
782: "ジャラコ",
783: "ジャランゴ",
784: "ジャラランガ",
785: "カプ・コケコ",
786: "カプ・テテフ",
787: "カプ・ブルル",
788: "カプ・レヒレ",
789: "コスモッグ",
790: "コスモウム",
791: "ソルガレオ",
792: "ルナアーラ",
793: "ウツロイド",
794: "マッシブーン",
795: "フェローチェ",
796: "デンジュモク",
797: "テッカグヤ",
798: "カミツルギ",
799: "アクジキング",
800: "ネクロズマ",
801: "マギアナ",
802: "マーシャドー",
803: "ベベノム",
804: "アーゴヨン",
805: "ツンデツンデ",
806: "ズガドーン",
807: "ゼラオラ",
808: "メルタン",
809: "メルメタル",
810: "サルノリ",
811: "バチンキー",
812: "ゴリランダー",
813: "ヒバニー",
814: "ラビフット",
815: "エースバーン",
816: "メッソン",
817: "ジメレオン",
818: "インテレオン",
819: "ホシガリス",
820: "ヨクバリス",
821: "ココガラ",
822: "アオガラス",
823: "アーマーガア",
824: "サッチムシ",
825: "レドームシ",
826: "イオルブ",
827: "クスネ",
828: "フォクスライ",
829: "ヒメンカ",
830: "ワタシラガ",
831: "ウールー",
832: "バイウールー",
833: "カムカメ",
834: "カジリガメ",
835: "ワンパチ",
836: "パルスワン",
837: "タンドン",
838: "トロッゴン",
839: "セキタンザン",
840: "カジッチュ",
841: "アップリュー",
842: "タルップル",
843: "スナヘビ",
844: "サダイジャ",
845: "ウッウ",
846: "サシカマス",
847: "カマスジョー",
848: "エレズン",
849: "ストリンダー",
850: "ヤクデ",
851: "マルヤクデ",
852: "タタッコ",
853: "オトスパス",
854: "ヤバチャ",
855: "ポットデス",
856: "ミブリム",
857: "テブリム",
858: "ブリムオン",
859: "ベロバー",
860: "ギモー",
861: "オーロンゲ",
862: "タチフサグマ",
863: "ニャイキング",
864: "サニゴーン",
865: "ネギガナイト",
866: "バリコオル",
867: "デスバーン",
868: "マホミル",
869: "マホイップ",
870: "タイレーツ",
871: "バチンウニ",
872: "ユキハミ",
873: "モスノウ",
874: "イシヘンジン",
875: "コオリッポ",
876: "イエッサン",
877: "モルペコ",
878: "ゾウドウ",
879: "ダイオウドウ",
880: "パッチラゴン",
881: "パッチルドン",
882: "ウオノラゴン",
883: "ウオチルドン",
884: "ジュラルドン",
885: "ドラメシヤ",
886: "ドロンチ",
887: "ドラパルト",
888: "ザシアン",
889: "ザマゼンタ",
890: "ムゲンダイナ",
891: "ダクマ",
892: "ウーラオス",
893: "ザルード",
894: "レジエレキ",
895: "レジドラゴ",
896: "ブリザポス",
897: "レイスポス",
898: "バドレックス",
899: "アヤシシ",
900: "バサギリ",
901: "ガチグマ",
902: "イダイトウ",
903: "オオニューラ",
904: "ハリーマン",
905: "ラブトロス",
906: "ニャオハ",
907: "ニャローテ",
908: "マスカーニャ",
909: "ホゲータ",
910: "アチゲータ",
911: "ラウドボーン",
912: "クワッス",
913: "ウェルカモ",
914: "ウェーニバル",
915: "グルトン",
916: "パフュートン",
917: "タマンチュラ",
918: "ワナイダー",
919: "マメバッタ",
920: "エクスレッグ",
921: "パモ",
922: "パモット",
923: "パーモット",
924: "ワッカネズミ",
925: "イッカネズミ",
926: "パピモッチ",
927: "バウッツェル",
928: "ミニーブ",
929: "オリーニョ",
930: "オリーヴァ",
931: "イキリンコ",
932: "コジオ",
933: "ジオヅム",
934: "キョジオーン",
935: "カルボウ",
936: "グレンアルマ",
937: "ソウブレイズ",
938: "ズピカ",
939: "ハラバリー",
940: "カイデン",
941: "タイカイデン",
942: "オラチフ",
943: "マフィティフ",
944: "シルシュルー",
945: "タギングル",
946: "アノクサ",
947: "アノホラグサ",
948: "ノノクラゲ",
949: "リククラゲ",
950: "ガケガニ",
951: "カプサイジ",
952: "スコヴィラン",
953: "シガロコ",
954: "ベラカス",
955: "ヒラヒナ",
956: "クエスパトラ",
957: "カヌチャン",
958: "ナカヌチャン",
959: "デカヌチャン",
960: "ウミディグダ",
961: "ウミトリオ",
962: "オトシドリ",
963: "ナミイルカ",
964: "イルカマン",
965: "ブロロン",
966: "ブロロローム",
967: "モトトカゲ",
968: "ミミズズ",
969: "キラーメ",
970: "キラフロル",
971: "ボチ",
972: "ハカドッグ",
973: "カラミンゴ",
974: "アルクジラ",
975: "ハルクジラ",
976: "ミガルーサ",
977: "ヘイラッシャ",
978: "シャリタツ",
979: "コノヨザル",
980: "ドオー",
981: "リキキリン",
982: "ノココッチ",
983: "ドドゲザン",
984: "イダイナキバ",
985: "サケブシッポ",
986: "アラブルタケ",
987: "ハバタクカミ",
988: "チヲハウハネ",
989: "スナノケガワ",
990: "テツノワダチ",
991: "テツノツツミ",
992: "テツノカイナ",
993: "テツノコウベ",
994: "テツノドクガ",
995: "テツノイバラ",
996: "セビエ",
997: "セゴール",
998: "セグレイブ",
999: "コレクレー",
1000: "サーフゴー",
1001: "チオンジェン",
1002: "パオジアン",
1003: "ディンルー",
1004: "イーユイ",
1005: "トドロクツキ",
1006: "テツノブジン",
1007: "コライドン",
1008: "ミライドン",
1009: "ウネルミナモ",
1010: "テツノイサハ",
1011: "カミッチュ",
1012: "チャデス",
1013: "ヤバソチャ",
1014: "イイネイヌ",
1015: "マシマシラ",
1016: "キチキギス",
1017: "オーガポン",
1018: "ブリジュラス",
1019: "カミツオロチ",
1020: "ウガツホムラ",
1021: "タケルライコ",
1022: "テツノイワオ",
1023: "テツノカシラ",
1024: "テラパゴス",
1025: "モモワロウ",
}
class Xoroshiro:
def __init__(self, s0=secrets.randbits(64), s1=secrets.randbits(64)):
self.seed = [s0, 0x82A2B175229D6A5B]
@staticmethod
def rotl(x, k): return ((x << k) | (x >> (64 - k))) & 0xFFFFFFFFFFFFFFFF
@staticmethod
def nextP2(x):
x -= 1
for i in range(6): x |= x >> (1 << i)
return x
def next(self):
s0, s1 = self.seed
r = (s0 + s1) & 0xFFFFFFFFFFFFFFFF
s1 ^= s0
self.seed[0] = self.rotl(s0, 24) ^ s1 ^ ((s1 << 16) & 0xFFFFFFFFFFFFFFFF)
self.seed[1] = self.rotl(s1, 37)
return r
def nextInt(self, num=0xFFFFFFFF):
num2 = self.nextP2(num); s = self.next() & num2
while s >= num: s = self.next() & num2
return s
def getSV(tid, pid):
sid, tid = (tid >> 16), (tid & 0xffff)
hid, lid = (pid >> 16), (pid & 0xffff)
return tid ^ sid ^ lid ^ hid
def get_state():
buf = []
for _ in range(20000): # 回しすぎない(起動を軽く)
s0 = secrets.randbits(64)
rng = Xoroshiro(s0); rng.nextInt()
tid = rng.nextInt(); pid = rng.nextInt()
if getSV(tid, pid) < 0x10:
buf.append(s0)
if len(buf) >= 128: # 必要分だけ
break
return buf
states = get_state()
_busy = False
file_idx = 0
def dump_memory(base_addr: int, size: int, filename: str = "memdump.bin"):
"""
現在のGDBセッションから、指定範囲のメモリを読み取ってローカルに保存する。
:param base_addr: 読み込み開始アドレス(整数)
:param size: ダンプサイズ(バイト単位)
:param filename: 保存先ファイル名
"""
inferior = gdb.selected_inferior()
print(f"[+] dumping memory: 0x{base_addr:x} - 0x{base_addr+size:x} ({size} bytes) → {filename}")
try:
data = inferior.read_memory(base_addr, size).tobytes()
except gdb.MemoryError as e:
raise gdb.GdbError(f"memory read failed at 0x{base_addr:x}: {e}")
with open(filename, "wb") as f:
f.write(data)
print(f"[✓] dump completed: {len(data)} bytes written to {filename}")
def get_species(reg_base: str = "x19", imm: int = 0x2a) -> int:
global file_idx
base = int(gdb.parse_and_eval(f"${reg_base}"))
#print("x19", hex(base))
#dump_memory(base, 0x1000, "%10x_%d.bin"%(base, file_idx))
#file_idx += 1
addr = (base + int(imm)) & ((1 << 64) - 1)
inferior = gdb.selected_inferior()
try:
b = inferior.read_memory(addr, 2).tobytes()
except gdb.MemoryError as e:
raise gdb.GdbError(f"memory read failed at {addr:#x}: {e}")
value = int.from_bytes(b, byteorder="little")
print(value, POKEDEX[value])
return value, POKEDEX[value]
def _continue_later():
global _busy
try:
gdb.execute("continue", from_tty=False, to_string=True)
finally:
_busy = False
def on_stop(event):
global _busy
target_pokemon = [
376, #メタグロス
]
if not isinstance(event, gdb.BreakpointEvent):
return
try:
bps = getattr(event, "breakpoints", []) or []
if bps:
print(f"[break] hit bp#{bps[0].number} at {bps[0].location}")
else:
print("[break] hit (no bp info)")
except Exception as e:
gdb.write(f"[auto] print error: {e}\n")
try:
if not states:
states[:] = get_state()
idx, pokemon = get_species()
if idx in target_pokemon:
s0 = states.pop(0)
gdb.execute(f"set $x8 = 0x{s0:x}", to_string=True)
except Exception as e:
gdb.write(f"[auto] handler error: {e}\n")
if not _busy:
_busy = True
gdb.post_event(_continue_later)
try:
gdb.events.stop.disconnect(on_stop)
except Exception:
pass
gdb.events.stop.connect(on_stop)
print("[auto-continue] installed: printing every breakpoint hit.")
"""
usage
aarch64-none-elf-gdb-py
target extended-remote 192.168.x.x:22225
monitor wait application
attach 0xNN
monitor get info
set $main_app_base = (unsigned long)$main_app_addr
b *$main_app_base + 0x69b748
source auto_shiny.py # inject
continue
"""