{"id":90,"date":"2014-01-26T00:26:35","date_gmt":"2014-01-26T00:26:35","guid":{"rendered":"http:\/\/simon.aldrich.eu\/blog\/?p=90"},"modified":"2014-01-27T12:40:28","modified_gmt":"2014-01-27T12:40:28","slug":"hacking-the-motorola-blink-1-baby-monitor-part-2","status":"publish","type":"post","link":"https:\/\/simon.aldrich.cc\/blog\/2014\/01\/hacking-the-motorola-blink-1-baby-monitor-part-2\/","title":{"rendered":"Hacking the Motorola Blink 1 Baby Monitor (Part 2)"},"content":{"rendered":"<p>Ok, so it&#8217;s been quite some time since I posted my first efforts at &#8220;hacking&#8221; the Motorola Blink 1 Baby Monitor. Suffice to say we&#8217;ve been quite busy for a while &amp; I&#8217;ve only just gotten around to actually plugging it in again now that our son is with us &amp; at an age where we&#8217;re starting to think about being able to put him down in his crib &amp; go into another room.<\/p>\n<p>Anyway, I powered it on for the first time since August today and it asked to perform a firmware upgrade. I though &#8216;Aha! I&#8217;ll capture what it&#8217;s up to and see if I can work out where it downloads new firmware from&#8217; but I inadvertently messed-up my tcpdump session &amp; didn&#8217;t actually capture anything while it was upgrading. Furthermore, as I should have known from reading the comments here it seems that Motorola have disabled the landing page for the onboard web-server in the new firmware version (08-050) and it now just gives you a 404.<\/p>\n<p>Well obviously this couldn&#8217;t be allowed to stand. Suffice to say if you capture all network traffic from the Blink when it powers on you&#8217;ll see it makes some web requests to a Monitor Everywhere &#8216;OTA&#8217; server. It seems this is how it determines if there&#8217;s a firmware upgrade to be downloaded &amp; with a bit of jiggery-pokery you too can download bmfwromfs_08_050.tar.gz which contains the latest firmware.<\/p>\n<p>Unpacking the gzip&#8217;d tarball you&#8217;ll see there is a binary file &#8216;conprog.bin&#8217; which I&#8217;m pretty sure is the kernel image\u00a0 (2.6.17.14 since you ask) and a file &#8216;rootfs.bin&#8217; which is a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Romfs\" target=\"_blank\">romfs<\/a> image file containing the root file system for the camera.<\/p>\n<p>You can mount this under Linux using the command:<\/p>\n<pre>mount -t romfs -o loop &lt;path to rootfs.bin&gt; &lt;mount-point&gt;<\/pre>\n<p>I&#8217;ve only just got this going tonight so I&#8217;ve yet to have a real poke around in there but for everyone who&#8217;s looking for the web interface point your brower at:<\/p>\n<pre>http:\/\/&lt;camera-ip&gt;\/blinkhome.html<\/pre>\n<p>&#8211; or &#8211;<\/p>\n<pre>http:\/\/&lt;camera-ip&gt;\/index2.html<\/pre>\n<p>to get it back. Incidentally the pages aren&#8217;t quite the same, so worth looking at both!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ok, so it&#8217;s been quite some time since I posted my first efforts at &#8220;hacking&#8221; the Motorola Blink 1 Baby Monitor. Suffice to say we&#8217;ve been quite busy for a while &amp; I&#8217;ve only just gotten around to actually plugging it in again now that our son is with us &amp; at an age where [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[20,19],"tags":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2Rw4E-1s","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/posts\/90"}],"collection":[{"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":4,"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":94,"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/posts\/90\/revisions\/94"}],"wp:attachment":[{"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simon.aldrich.cc\/blog\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}