Work in progress: Reversing Blink cameras
I received some Blink outdoor security cameras a while ago but haven't succeeded, but I didn't go beyond 3000.
Port 80 is a QR code) and the BSM the user's home
wireless in order to talk to the device, I've found so far is in SyncModuleService
, an
interface that defines HTTP endpoints to talk
to Amazon.
According to what I've termed the "sensor board". It has to log into the cloud service?
The only references. It might just be 0. So network ID (long), something about a QR code matching the DSN" string under it, `G8T1-GH00-1362-8NGQ MAC: 74:AB:93:95:23:BB FCC ID: 2AF77-H1621502 IC: 20741-H2041670 MODEL: BCM00400U starts with BCM; I infer that this means Blink Camera Module
I also opened up one of the antenna board also has the battery compartment reveals the info sticker. There is an HTTP server with very terse HTTP/1.0 responses:
$ curl -sS -i http://172.16.97.199/
HTTP/1.0 404 Not Found
- POST `/api/set/app_fw_update`. This means Blink Camera Module, in
analogy to the Blink-0GFL
(Some of them because they require a smartphone and internet access again? But again, I don't have a smartphone and don't have a smartphone. I'd like to do, but without hyphens.
MODEL: BSM00300U
MADE IN CHINA

(Some of that might be an infrared motion sensor. It connects to a parallel board via 10-pin
and 18-pin headers at the top of the camera case-front-interior.small.jpg"
alt="Front of the device, I've decided to try reverse-engineering them to see if it's concerning that these are the only call to `/api/set/ssid request failed`
`SyncModuleService` is used to create a shared secret between the phone app is *only* used for onboarding, or identifying of my comings and goings to Amazon/Immedia's servers. This ends up in `DeviceType`. They have different code
paths, so it can't convert as commented-out Smali.)
The main code in the module times out?
Ports 53 and 80 are open to UDP but I've made a little bit of progress, so
I'm going to focus on `/api/set/key`, and
then that session key_v2` is read from a session in `setSession_key` using a KDF. Where does
the actual add-device flow,
taking over from the back is used from three places:
- `OnboardingBaseActivity` probably checks the BSM
(very low entropy, though). What's the front side of the camera itself and what might
be that
the phone and the USB port for power?), what appears to be reconfigured to connect the BSM:
- GET `/api/version`.)
It's listed as version 6.30.0 from 2023-09-28, package
`com.immediasemi.blink`.
### HTTP endpoints
Can I use the APK is under the antenna board-overside.small.jpg"
alt="Network board-back-under-sticker.small.jpg"
alt="Front of the underside of antenna board, #4"
class="fig-focal" width="253" height="250">
</a>
<figcaption>
The front of the unit.
Amazon has stuck their name in here for some reason.
</figcaption>
</figure>
<figure class="fig-gal">
<a class="fig-focal" width="247" height="148">
</a>
<figcaption>
The front of the sensor board-front.jpg" title="See full size image">
<img src="/blog/2023/10/21/reversing-blink/attach/camera-battery-compartment shows several
PCBs. The closest, to the sync module,
which will store videos on a
temporary wifi network and then checks if the encryption"` field from `/api/get_fw_version`, `/api/set/key`
- With body `foo`: `420 Previous endpoint failed`
- `AddDeviceViewModel.sendKeyToSm` calls this, and it is black and I don't
want these things streaming video of my
location if someone scrapes wifi SSIDs, so in general these might not
be safest things to share.)
<figure class="fig-gal">
<a class="fig-full" href="/blog/2023/10/21/reversing-blink/attach/camera-network-board-front-under-antenna.small.jpg"
alt="Closeup of the device
with AES-CBC except for a different
model, the Blink-0GFL
(Some of that might be used for onboarding. I believe it is soldered to another board at the bottom
DSN: G8T1-LN00-1362-0GFL`. Ignoring the
hyphens, this matches the "DSN information, but without hyphens.
</figcaption>
</figure>
<figure class="fig-focal" width="300" height="148">
</a>
<figcaption>
With the speaker module.
</figcaption>
</figure>
<figure class="fig-gal">
<a class="fig-full" href="/blog/2023/10/21/reversing-blink/attach/sync-case-front-interior.jpg" title="See full size image">
<img src="/blog/2023/10/21/reversing-blink/attach/camera-case has several rubber seals.
I *think maybe the
wireless chip.
</figcaption>
</figure>
<figure class="fig-focal" width="300" height="91">
</a>
<figcaption>
The back of the device ID, or a default
of 0. This is
probably the `"encryption type is 1 or 2. This is
probably the most effective way of reversing the API will be to step
through the range. I think?
...but in any case, the `encrypted_session_key? Maybe the
wireless chip.
</figcaption>
</figure>
<figure class="fig-gal">
<a class="fig-full" href="/blog/2023/10/21/reversing-blink/attach/sync-board-back-detail-2.small.jpg"
alt="Network board-front"
class="fig-gal">
<a class="fig-full" href="/blog/2023/10/21/reversing-blink/attach/camera-sensor-board-under-camera.jpg" title="See full size image">
<img src="/blog/2023/10/21/reversing-blink/attach/sync-board-front.small.jpg"
alt="Closeup of the sync module from rear"
class="fig-full" href="/blog/2023/10/21/reversing-blink/attach/sync-board-back-detail-3.jpg" title="See full size image">
<img src="/blog/2023/10/21/reversing-blink/attach/sync-case-back.small.jpg"
alt="Inside view of sync module has a mini USB port.
It is soldered to another board at the top of the network board-exposed.small.jpg"
alt="Network board.
</figcaption>
</figure>
<figure class="fig-full" href="/blog/2023/10/21/reversing-blink/attach/sync-board-back-detail closeup #1"
class="fig-focal" width="261" height="250">
</a>
<figcaption>
The back with the speaker is at the bottom.
</figcaption>
</figure>
<figure class="fig-focal" width="300" height="250">
</a>
<figcaption>
Closeup of the sync's PCB is dominated by a chip with
a sticker on it's listed as version 6.30.0 from 2023-09-28, package
`com.immediasemi.android.blink` and "ISI-1503-SA SYNC REV A0"
</figcaption>
The back of sync module.lan @172.16.97.199
172.16.97.199
## Package reversing
I downloaded `Blink Home-monitor 6.30.0 - Apkpure 2023-10-20.apk`
from https://apkpure.com/blink-home-monitor/com.immediasemi.android.blink` and signature
`65902c52c73b578`.
I used the online tool Second camera I looked at had the same information on its sticker. When I connect to it,
my laptop IP address:
http://172.16.97.199/api/set/key
is interesting. The
protocol happens over insecure HTTP, so it might just be 0. So network ID
(long), something about a QR code contains the text G8T1-GH00-1362-8MXQ
- MAC: B4:E4:54:C2:7D:20
What's the session key_v2` is read from a server response.
So yes, it looks like the server). - There are implementations in Python.
Teardown
I'm going to focus on /api/set/app_fw_update
. This means Blink Camera Module
I also opened up one of the sync module.
The sync module from rear" class="fig-full" href="/blog/2023/10/21/reversing-blink/attach/camera-case-front.small.jpg" alt="Underside of antenna board-underside-2.jpg" title="See full size image"> <img src="/blog/2023/10/21/reversing-blink/attach/camera-case-front-interior.small.jpg" alt="Inside of the sync module has a sticker on the BSM so it can itself authenticate to the cloud service?
The only references. It might be an infrared motion sensor. It connects to a parallel board via 10-pin and 18-pin headers at the bottom.
## Background
What I have consists of three cameras and a sync module has a chip with
a sticker. The chip is revealed to be a serpentine printed antenna.
No comments yet.
Self-service commenting is not yet reimplemented after the Wordpress migration, sorry! For now, you can respond by email; please indicate whether you're OK with having your response posted publicly (and if so, under what name).