I think you get from Lance after you get rid of all the Electrodes from the Rocket Hideout in Mahogany Town.
Chat with our AI personalities
First, travel to Olivine City. Then, surf Southwest of Olivine to get to a Whirlpool. Then, use a Pokemon with Whirlpool to go across the whirlpool to get into the Whirl Islands.
You need Surf, Whirlpool , strength
From Lance after you infiltrate Team Rocket's Secret Base in Mahogany Town.
Whirl Islands only exist in Gold, Silver, Crystal, HeartGold and SoulSilver.
If you help Lance beat Rocket in Mahogany town, you will receive it.