Skip to content

Xiaomi Vacuum Robot Reverse Engineering and Hacking

Notifications You must be signed in to change notification settings

desperadoduck/dustcloud

 
 

Repository files navigation

Welcome to our repository for hacking and rooting of the Xiaomi Vacuum Robot. We provide you methods how to root your device without opening it or breaking the warranty seal.

You can find a step-by-step guide how to wirelessly root your vacuum robot here.

Our presentation was designed for 35 minutes (+10 min FAQ) , however our available time was cut to 20 minutes(+10 min FAQ). Therefore we had to reduce the content in our presentation. You can find a more detailed version of our 34c3 presentation with more details here. More technical information you find here (techinfo.pdf). The cloud protocol is described here (cloudprotocol.pdf)

Recording of our talk at 34C3: https://media.ccc.de/v/34c3-9147-unleash_your_smart-home_devices_vacuum_cleaning_robot_hacking

FAQ

Can you hack all Xiaomi vacuum cleaners connected to the internet?

No, you can root only your own device, devices which are in your own wifi or where you have physical access to.

Do you consider the Xiaomi cloud as insecure?

Actually we think that Xiaomi did a good job in designing their cloud protocol (at least from a security perspective).

Is it required to open the robot / break the warranty seals to root it?

No, you can push the firmwareupdate to the robot without opening it. See the Update howto.

Do Xiaomi know the exact position of the vacuum (e.g. address)?

The vacuum transfers its connected SSID, the gateway's MAC address and the RSS value every 30 minutes to the cloud. Theoretically you can pinpoint a address very precisely with that information, e.g. by using Google's geolocation API.

Does the root also work for Gen2?

There might be a way to root also Gen2. However as I (Dennis) do not have access to a Gen2 vacuum, i cannot give you more information on that. As soon as i will get my own Gen2 vacuum, i will update the information.

Why there is still no custom patched firmware available (with SSH)?

While you can build your own firmware with SSH, we are not sure if we want to provide a pre-rooted version with some default SSH keys. As we know you (and us) some people might not change the keys afterwards. So instead of giving just you access to the vacuum, other people would have also access to your vacuum. We would like to make the world safer and not more vulnerable. Therefore we are thinking of some solution for that.

Is Dustcloud breaking the HTTPS connection / any SSL connection?

No, dustcloud requires the symmetric key (extracted from /mnt/default/device.conf) to decrypt the AES connection to the cloud. The same key is used to encrypt the forwarded messages to the cloud. Note: I personally think that Xiaomis approach of device's unique AES key solves a lot of cloud problems: authentication, integrity (over hmac) and confidentiality.

Is there a risk that Xiaomi do a force update and disable the root?

Technically there is, but i do not believe so. In any case you can disable updates (yours and Xiaomi's) by renaming the ccrypt command. See disable-UPDATES.md for additional information.

Will you publish rooting methods for other devices (like other vacuums, smarthome-devices, etc)?

There are plans for that. But keep in mind that the devices were financed from my private budget, therefore the focus will be on devices that i will use myself after the hacking. Do not expect a smart fridge (i have a stupid one already) or a smart car (too expensive). However if you have broken devices (like a used Air purifier or something) or spare devices you want to get rid of, you can contact me. I might be interested in some PCBs ;)

Contact

  • Dennis Giese <dgi[at]posteo.de>
  • Daniel Wegemer <daniel[at]wegemer.com>

Acknowledgements:

Prof. Matthias Hollick at Secure Mobile Networking Lab (SEEMOO)

SEEMOO logo

Prof. Guevara Noubir (CCIS, Northeastern University)

CCIS logo

Media coverage:

About

Xiaomi Vacuum Robot Reverse Engineering and Hacking

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 55.7%
  • PHP 32.0%
  • Shell 12.3%