daily pastebin goal
75%
SHARE
TWEET

hekate2rawnand.sh

rajkosto Apr 30th, 2018 (edited) 2,572 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/sh
  2. #This script requires some binary files, get them by extracting https://files.sshnuke.net/hekate2rawnand.zip
  3. #If on Windows, easiest way to get a compatible shell for running this script would be to install https://gitforwindows.org/ and then "Git Bash here" in the context menu of this folder
  4. #To get hekate_ipl to dump USER (and maybe BOOT0/1) you can download my fork from https://github.com/rajkosto/hekate/releases
  5.  
  6. if [ ! -f "gpt_prefix.bin" ]; then
  7.     echo "Missing required binary files. Get the zip from https://files.sshnuke.net/hekate2rawnand.zip and extract it to this folder."
  8.     exit 1
  9. fi
  10.  
  11. statusParam="status=progress"
  12. ddSupportsLine=`dd --help 2>&1 | grep "shows periodic transfer statistics"`
  13. if [ -z "$ddSupportsLine" ]; then
  14.     statusParam=""
  15. fi
  16.  
  17. dd of=hekate-RawNand.bin if=gpt_prefix.bin skip=0 seek=0 count=34 bs=512
  18. dd of=hekate-RawNand.bin if=PRODINFO skip=0 seek=34 count=8158 bs=512
  19. dd of=hekate-RawNand.bin if=PRODINFOF skip=0 seek=256 count=256 bs=16384
  20. dd of=hekate-RawNand.bin if=BCPKG2-1-Normal-Main skip=0 seek=512 count=512 bs=16384
  21. dd of=hekate-RawNand.bin if=BCPKG2-2-Normal-Sub skip=0 seek=1024 count=512 bs=16384
  22. dd of=hekate-RawNand.bin if=BCPKG2-3-SafeMode-Main skip=0 seek=1536 count=512 bs=16384
  23. dd of=hekate-RawNand.bin if=BCPKG2-4-SafeMode-Sub skip=0 seek=2048 count=512 bs=16384
  24. dd of=hekate-RawNand.bin if=BCPKG2-5-Repair-Main skip=0 seek=2560 count=512 bs=16384
  25. dd of=hekate-RawNand.bin if=BCPKG2-6-Repair-Sub skip=0 seek=3072 count=512 bs=16384
  26. dd of=hekate-RawNand.bin if=SAFE skip=0 seek=3584 count=4096 bs=16384 $statusParam
  27. dd of=hekate-RawNand.bin if=SYSTEM skip=0 seek=7680 count=163840 bs=16384 $statusParam
  28.  
  29. userStartSeek=171520
  30. userCurrSeek=$userStartSeek
  31.  
  32. if [ -f "USER" ]; then
  33.     fileSizeInBlocks=1703936
  34.     dd of=hekate-RawNand.bin if=USER skip=0 seek=$userCurrSeek count=$fileSizeInBlocks bs=16384 $statusParam
  35.     userCurrSeek=`expr "$userCurrSeek" + "$fileSizeInBlocks"`
  36. else
  37.     for file in USER.*; do
  38.         [ -f "$file" ] || break
  39.        
  40.         fileSize=`(
  41.             du --apparent-size --block-size=1 "$file" 2>/dev/null ||
  42.             gdu --apparent-size --block-size=1 "$file" 2>/dev/null ||
  43.             find "$file" -printf "%s" 2>/dev/null ||
  44.             gfind "$file" -printf "%s" 2>/dev/null ||
  45.             stat --printf="%s" "$file" 2>/dev/null ||
  46.             stat -f%z "$file" 2>/dev/null ||
  47.             wc -c <"$file" 2>/dev/null
  48.         ) | awk '{print $1}'`
  49.         fileSizeInBlocks=`expr "$fileSize" / 16384`
  50.         dd of=hekate-RawNand.bin "if=$file" skip=0 seek=$userCurrSeek count=$fileSizeInBlocks bs=16384 $statusParam
  51.         userCurrSeek=`expr "$userCurrSeek" + "$fileSizeInBlocks"`
  52.     done    
  53. fi
  54.  
  55. if [ "$userCurrSeek" -ne "$userStartSeek" ]; then
  56.     dd of=hekate-RawNand.bin if=gpt_suffix.bin skip=0 seek=61071327 count=33 bs=512
  57. fi
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top