Emojify your Wi-Fi 📡🙀🔥🔥🔥

Brian Jordan
Aug 14, 2016 · 4 min read

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. 💥

Image for post
Image for post

What! “Invalid?!” 😡 I’ll show you invalid… hand me my Dev Tools… time to sort this out.

Image for post
Image for post
Image for post
Image for post

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.

Image for post
Image for post

Bingo! Let’s take a look around there…

Image for post
Image for post

checkSsidname. Let’s see who calls that. checkSsidValid, let’s see who calls that!

Image for post
Image for post

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.

Image for post
Image for post

Press run, and… success! 😃 Right?? Let’s re-connect.

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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.

Image for post
Image for post
Image for post
Image for post

🎼 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.

Image for post
Image for post

Now let’s paste it in, and edit out the placeholder string EMOJIHERE to become an emoji. 👀

Image for post
Image for post

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…

Image for post
Image for post

Cheers! 🍹 Great success. Until next time!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store