Coolpix s3300

All things embedded.
*NO FEATURE REQUESTS*

Coolpix s3300

Postby RainMystic » Wed Jan 13, 2016 2:37 pm

Hello everybody!
Please help. I have the camera coolpix s3300. It lacks a few features. But basically this: After recording a video file (2GB) - recording stops. Need to switch on again automatically record on.
Tell me do it?

Sorry for my English :)
RainMystic
 
Posts: 1
Joined: Wed Jan 13, 2016 2:14 pm
Been thanked: 0 time

Re: Coolpix s3300

Postby mefistotelis » Sat Mar 12, 2016 3:23 am

Hello,

Looks like the coolpix FW might be more interesting than some of you though.

I just took a quick peek at s3600 FW, and:
- it is not encrypted at all
- after a short header, there's a magic value most of you should know - "ELF".
- but most importantly - the ELF is not stripped - it contains source line numbers and function names
- behind that there's another short header and another ELF with symbols
mefistotelis
 
Posts: 3
Joined: Sat Mar 12, 2016 2:53 am
Been thanked: 2 times

Re: Coolpix s3300

Postby mefistotelis » Sat Mar 12, 2016 1:08 pm

In case someone want to take a look at all the executables with symbols:
Code: Select all
  1. #!/bin/bash

  2. # Nikon Coolpix firmware F-S3600-V12W extractor

  3. # by Mefistotelis 2016

  4. #

  5. # This will extract firmware.bin into a bunch of parts

  6. # Most parts are ELF executables with debug info

  7. # One of them is a FAT partition image which contains

  8. # varoius GFX,SFX,apps and resources.

  9. # Some are jusb BINs - probably headers with offsets

  10. # to other files, but I could not understand them.

  11. #

  12. # This script can be executed on Linux with basic tools

  13. # installed, or on Windows with use of MinGW32 or MSys2

  14.  

  15. set -x

  16.  

  17. # Files within:

  18. FILELIST=()

  19. FILELIST+=(0x0000020 BIN)

  20. FILELIST+=(0x0000400 ELF)

  21. FILELIST+=(0x0200000 BIN)

  22. FILELIST+=(0x02008c0 ELF)

  23. FILELIST+=(0x02028c0 ELF)

  24. FILELIST+=(0x03402c0 ELF)

  25. FILELIST+=(0x05c7768 ELF)

  26. FILELIST+=(0x09b9a78 ELF)

  27. FILELIST+=(0x0b99ac0 IMG)

  28. FILELIST+=(0x1c3ecc0 BIN)

  29. FILELIST+=(0xfffffff END)

  30.  

  31. i=0

  32. for (( i=1; i<$(( ${#FILELIST[@]} / 2 )); i++ )); do

  33.   FILE_OFFS="${FILELIST[$(( 2 * ${i} - 2 ))]}"

  34.   FILE_KIND=$(echo "${FILELIST[$(( 2 * ${i} - 1 ))]}" | tr '[:upper:]' '[:lower:]')

  35.   FILE_NAME="firmware.par${i}.${FILE_KIND}"

  36.   if [ "${FILE_KIND}" = "end" ]; then

  37.     break

  38.   fi

  39.   echo "Extracting ${FILE_KIND} at ${FILE_OFFS}"

  40.   FILE_END="${FILELIST[$(( 2 * ${i} ))]}"

  41.   dd if=firmware.bin of=${FILE_NAME} bs=4 skip=$(( ${FILE_OFFS} / 4 )) count=$(( (${FILE_END} - ${FILE_OFFS}) / 4 ))

  42.   if [ "${FILE_KIND}" = "elf" ]; then

  43.     readelf -a "${FILE_NAME}" > "firmware.par${i}.readelf.txt"

  44.     LAST_SECTION=$(readelf --sections "${FILE_NAME}" | grep '  [[ ]*[0-9]+] ' | tail -n 1)

  45.     FILE_LEN=$(( 0x$(echo "${LAST_SECTION}" | cut -c 51-56) + 0x$(echo "${LAST_SECTION}" | cut -c 58-63) ))

  46.     echo "ELF size from sections ${FILE_LEN}"

  47.   fi

  48. done

  49.  

  50. exit 0

  51.  



There is no a single ELF stripped. Example view attached.
Attachments
fw_symbols.jpg
mefistotelis
 
Posts: 3
Joined: Sat Mar 12, 2016 2:53 am
Been thanked: 2 times

Re: Coolpix s3300

Postby coderat » Fri Nov 18, 2016 5:29 pm

Main part of firmware is encoded/compressed (starting from 3rd ELF file). So not much can be done about it.
coderat
Core Developer
 
Posts: 2283
Joined: Fri Apr 26, 2013 10:21 am
Been thanked: 450 times


Return to Firmware

Who is online

Users browsing this forum: No registered users and 2 guests