Emojify your Wi-Fi šŸ“”šŸ™€šŸ”„šŸ”„šŸ”„

Brian Jordan
4 min readAug 14, 2016

--

Just moved to a new placeā€”while thicker walls are nice in the morning when kitty is meowing that she wants me to wake up and play šŸ˜¼, our crappy old single-mode wi-fi router wasnā€™t up to the task of distributing sweet internets to the corner rooms of our abode.

Our old Wi-Fi name was sign-up-for-free-wireless.exe but this time I wanted to try adding an emoji to the mix. Now, with your router, it might be simpleā€”try putting the emoji in where you set your routerā€™s SSID (on Mac OS, you can hit command + control + space to open up the Emoji keyboard). šŸ‘Œ

When I tried that on our brand spanking new TP-Link Archer C1900 router (truly the Ford F-250 of wi-fi routers), things exploded. šŸ’„

What! ā€œInvalid?!ā€ šŸ˜” Iā€™ll show you invalidā€¦ hand me my Dev Toolsā€¦ time to sort this out.

Approach #1: Client-side approval šŸ’» āœ…

Step #1 when working from the outside-in to fix a bug in an unknown codebase is to find where the visuals are coming from. In this case, weā€™ve got a unique string, so Iā€™ll fire up Chrome Dev Tools, CMD + Alt + F to do a multi-file search, and paste in that string.

Bingo! Letā€™s take a look around thereā€¦

checkSsidname. Letā€™s see who calls that. checkSsidValid, letā€™s see who calls that!

Great. Now normally Iā€™d edit this file client-side with Chrome Dev Tools to make it return true at the top of the function, but because Chrome does not let you edit inline javascript on a .htm page, weā€™ll need to try something else.

How about overriding that variable! I set a breakpoint and it paused when I submitted the form. Letā€™s write a simple function that always returns true, and set that identifier to that.

Press run, andā€¦ success! šŸ˜ƒ Right?? Letā€™s re-connect.

It appears our friend the emoji šŸ˜” has become its corresponding HTML entity code 😔 en route to the server.

Letā€™s try a different tack and try doing this at the network level.

Approach #2: Down to the network level šŸ“”

At this point, Iā€™m not sure whether the Wi-Fi name was encoded client-side just before it was sent out, or if this is happening server side which would mean it wonā€™t work with stock firmware at all šŸ˜–. Letā€™s pop open the Chrome Dev Tools Network tab and watch for a non-emojified ssid/password request to come over the wire.

šŸŽ¼ Do you seeeeee what I seeeeee šŸŽ¶

šŸ‘ Now letā€™s use the handy ā€œCopy as cURLā€ link to get a command we can use to replay this request from the terminal.

Now letā€™s paste it in, and edit out the placeholder string EMOJIHERE to become an emoji. šŸ‘€

Bingo! šŸ˜—

Now I decided to set the 2.4ghz Wi-Fi to not include an emoji because apparently some machines canā€™t handle emojis. Who knew! šŸ˜

Now letā€™s press enter andā€¦

Cheers! šŸ¹ Great success. Until next time!

--

--

Brian Jordan

Indie Game and Web Developer. Building @CloneDroneZone with @iamdoborog. Prev: @codeorg building interactive CS curricula, @popcap making games.