Bill Richardson | 1b1cf1c | 2014-10-02 10:59:52 -0700 | [diff] [blame] | 1 | #!/bin/sh -u |
| 2 | # Copyright (c) 2014 The Chromium OS Authors. All rights reserved. |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 3 | # Use of this source code is governed by a BSD-style license that can be |
| 4 | # found in the LICENSE file. |
| 5 | |
| 6 | if [ -z "$*" ]; then |
| 7 | cat <<EOF 1>&2 |
| 8 | |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 9 | Usage: vbutil_what_keys [-v|-V] IMAGE [IMAGE...] |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 10 | |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 11 | Given a ChromiumOS disk (or BIOS) image, try to figure out how it's signed. |
| 12 | Note that this does not verify the signature, it just reports which keyblock |
| 13 | was used to create the signature. |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 14 | |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 15 | With the -v option, it will attempt to mount any rootfs partitions from disk |
| 16 | images (using sudo), extract the BIOS from /usr/sbin/chromeos-firmwareupdate, |
| 17 | and process it as well. Use -V to display the shellball -V message too. |
| 18 | that. |
| 19 | |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 20 | EOF |
| 21 | exit 1 |
| 22 | fi |
| 23 | |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 24 | # We'll grep for the known sha1sums within this script (they're at the end). |
| 25 | # Obtain them by running script on images you know have been signed correctly |
| 26 | # (since the keys themselves are inside the HSM). |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 27 | # |
| 28 | # BTW, the default H2C HWIDs are fixed for each platform: |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 29 | # |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 30 | # {97A1FBD6-FDE1-4FC5-BB81-286608B90FCE} Alex H2C |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 31 | # {9D799111-A88A-439E-9E1F-FBBB41B00A9A} Mario H2C |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 32 | # {24B107F2-BA6A-4EBD-8CDD-E768438CE0F0} Stumpy H2C |
| 33 | # {FA42644C-CF3A-4692-A9D3-1A667CB232E9} ZGB H2C |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 34 | |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 35 | |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 36 | # args? |
| 37 | unpack_it= |
| 38 | verbose= |
| 39 | if [ "${1:-}" = "-v" ]; then |
| 40 | unpack_it=yes |
| 41 | shift |
| 42 | fi |
| 43 | if [ "${1:-}" = "-V" ]; then |
| 44 | unpack_it=yes |
| 45 | verbose=yes |
| 46 | shift |
| 47 | fi |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 48 | |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 49 | # clean up on exit |
| 50 | cleanup() { |
| 51 | [ -n "${CLEAN_UM:-}" ] && sudo umount $CLEAN_UM |
| 52 | [ -n "${CLEAN_RM:-}" ] && rm -rf $CLEAN_RM |
| 53 | } |
| 54 | trap cleanup EXIT |
| 55 | |
| 56 | # temp stuff |
| 57 | TMPFILE=$(mktemp /tmp/keyblock_XXXXXXXXX) |
| 58 | CLEAN_RM="$TMPFILE" |
| 59 | if [ -n "$unpack_it" ]; then |
| 60 | TMPMNT=$(mktemp -d /tmp/mountdir_XXXXXXXXX) |
| 61 | TMPDIR=$(mktemp -d /tmp/extractdir_XXXXXXXXX) |
| 62 | CLEAN_RM="$CLEAN_RM $TMPDIR $TMPMNT" |
| 63 | fi |
| 64 | |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 65 | greppy() { |
| 66 | local key="$1" |
| 67 | grep "$key" "$0" 2>/dev/null | sed -e 's/ \+/ /g' | \ |
| 68 | cut -d ' ' -f 4- | sed -e ':a;N;$!ba;s/\n/, /g' |
| 69 | } |
| 70 | |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 71 | |
| 72 | showbios() { |
| 73 | local file="$1" space="$2" |
| 74 | local hwid matchh rootkey matchn recoverykey matchr |
| 75 | |
Bill Richardson | a1d9fe6 | 2014-09-05 12:52:27 -0700 | [diff] [blame] | 76 | hwid=$(futility gbb_utility --hwid "$file" | sed -e 's/^.*: *//') || return |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 77 | matchh=$(grep "$hwid" "$0" 2>/dev/null | sed -e 's/^# //') |
| 78 | |
Bill Richardson | a1d9fe6 | 2014-09-05 12:52:27 -0700 | [diff] [blame] | 79 | futility gbb_utility --rootkey="$TMPFILE" "$file" >/dev/null |
| 80 | rootkey=$(futility vbutil_key --unpack "$TMPFILE" | grep sha1sum | \ |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 81 | sed -e 's/^.*: *//') |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 82 | matchn=$(greppy "$rootkey") |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 83 | |
Bill Richardson | a1d9fe6 | 2014-09-05 12:52:27 -0700 | [diff] [blame] | 84 | futility gbb_utility --recoverykey="$TMPFILE" "$file" >/dev/null |
| 85 | recoverykey=$(futility vbutil_key --unpack "$TMPFILE" | grep sha1sum | \ |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 86 | sed -e 's/^.*: *//') |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 87 | matchr=$(greppy "$recoverykey") |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 88 | |
| 89 | echo "$space hwid: ${matchh:-$hwid}" |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 90 | echo "$space root key: ${rootkey} ${matchn}" |
| 91 | echo "$space recovery key: ${recoverykey} ${matchr}" |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 92 | } |
| 93 | |
| 94 | |
| 95 | |
| 96 | # handle one input file |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 97 | dofile() { |
| 98 | file="$1" |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 99 | size=$(stat -c %s "$file") |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 100 | |
Bill Richardson | a5e1519 | 2012-02-22 09:10:19 -0800 | [diff] [blame] | 101 | if [ -f "$file" ] && [ "$size" -le 8388608 ]; then |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 102 | echo -e "\nBIOS: $file" |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 103 | |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 104 | showbios "$file" "" |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 105 | |
| 106 | else |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 107 | echo -e "\nIMAGE: $file" |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 108 | |
| 109 | for pnum in $(cgpt find -n -t kernel "$file" 2>/dev/null); do |
| 110 | |
| 111 | psize=$(cgpt show -s -i "$pnum" "$file") |
| 112 | if [ "$psize" -ge 128 ]; then |
| 113 | |
| 114 | pstart=$(cgpt show -b -i "$pnum" "$file") |
| 115 | dd if="$file" of="$TMPFILE" bs=512 count=128 skip="$pstart" 2>/dev/null |
| 116 | |
Bill Richardson | a1d9fe6 | 2014-09-05 12:52:27 -0700 | [diff] [blame] | 117 | psum=$(futility vbutil_keyblock --unpack "$TMPFILE" 2>/dev/null | \ |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 118 | grep sha1sum | sed -e 's/^.*: *//') |
| 119 | |
| 120 | if [ -n "$psum" ]; then |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 121 | match=$(greppy "$psum") |
Bill Richardson | a1d9fe6 | 2014-09-05 12:52:27 -0700 | [diff] [blame] | 122 | flags=$(futility vbutil_keyblock --unpack "$TMPFILE" 2>/dev/null | \ |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 123 | grep Flags: | sed -e 's/^.*:[ 0-9]*//') |
| 124 | else |
| 125 | match="" |
| 126 | psum="--invalid--" |
| 127 | flags="" |
| 128 | fi |
| 129 | |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 130 | echo " part $pnum kernel: $psum ($flags) $match" |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 131 | fi |
| 132 | |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 133 | done |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 134 | |
| 135 | if [ -n "$unpack_it" ]; then |
| 136 | for pnum in $(cgpt find -n -t rootfs "$file" 2>/dev/null); do |
| 137 | |
| 138 | psize=$(cgpt show -s -i "$pnum" "$file") |
| 139 | if [ "$psize" -ge 128 ]; then |
| 140 | |
| 141 | pstart=$(cgpt show -b -i "$pnum" "$file") |
| 142 | |
| 143 | echo " part $pnum shellball:" |
| 144 | sudo mount -o loop,ro,offset=$(( $pstart * 512 )) "$file" "$TMPMNT" |
| 145 | CLEAN_UM="$TMPMNT" |
| 146 | [ -n "$verbose" ] && "$TMPMNT/usr/sbin/chromeos-firmwareupdate" -V |
| 147 | "$TMPMNT/usr/sbin/chromeos-firmwareupdate" \ |
| 148 | --sb_extract "$TMPDIR" > /dev/null |
| 149 | sudo umount "$TMPMNT" |
| 150 | CLEAN_UM= |
| 151 | |
| 152 | showbios "$TMPDIR/bios.bin" " " |
| 153 | fi |
| 154 | |
| 155 | done |
| 156 | fi |
| 157 | |
Bill Richardson | 93a892c | 2011-12-15 14:05:43 -0800 | [diff] [blame] | 158 | fi |
Bill Richardson | f155ab3 | 2011-06-16 16:02:56 -0700 | [diff] [blame] | 159 | } |
| 160 | |
| 161 | |
| 162 | for file in "$@"; do |
| 163 | dofile $file |
| 164 | done |
| 165 | |
Bill Richardson | 788dbc3 | 2012-10-03 12:45:48 -0700 | [diff] [blame] | 166 | echo "" |
Bill Richardson | af23ef7 | 2014-07-31 13:50:12 -0700 | [diff] [blame] | 167 | |
| 168 | exit 0; |
| 169 | |
| 170 | ############################################################################## |
| 171 | # Here are the known keys |
| 172 | ############################################################################## |
| 173 | # |
| 174 | # Firmware recovery keys |
| 175 | # |
| 176 | # c14bd720b70d97394257e3e826bd8f43de48d4ed recovery developer keys |
| 177 | # |
| 178 | # 5c5776bf7574e5601c25042e0748b6844cfdd1dc recovery Alex MP |
| 179 | # 5c5776bf7574e5601c25042e0748b6844cfdd1dc recovery Alex MP-v4 |
| 180 | # 5c5776bf7574e5601c25042e0748b6844cfdd1dc recovery Alex-HE MP-v4 |
| 181 | # b3373d76358c3528d0653c4035bdd0020e2b0e1b recovery Butterfly MP-v3 |
| 182 | # 8a22e18a91e89f46f1f59b44a7887ab3821cb18d recovery Butterfly Pre-MP |
| 183 | # b6079520f8c8dc7192a78d111b9fefb98cee49b3 recovery Clapper MP |
| 184 | # 13b0ddf343bb0c325b178e5be138d4969a9e02be recovery Daisy MP-v3 |
| 185 | # 5e9d23b2d908a6ac5ee5c9747a9e2fe6dff01372 recovery Daisy-Skate MP |
| 186 | # 540bb135df55fe0036fe061b7a1f2a52d287cd1b recovery Daisy-Spring MP-v2 |
| 187 | # ae67678f8ed662ef4d1e4a639226d278b90ccaa3 recovery Enguarde MP-v10 |
| 188 | # ff7c07ae0ac04ccb92090e339545b716228a6da4 recovery Expresso MP-v10 |
| 189 | # 3c359d59432641a151161e2738ba8ca2b3eb12ab recovery Falco MP-v2 |
| 190 | # 3c359d59432641a151161e2738ba8ca2b3eb12ab recovery Falco-li MP-v2 |
| 191 | # c989d1ab66d2a67886e1019330812cb9e4e48f31 recovery Glimmer MP |
| 192 | # ab325d5411c6a21b41142b71b747335144e12538 recovery Gnawty MP |
| 193 | # d81c751df76a7d53a6d3c2f58987562c87416735 recovery Kiev MP |
| 194 | # 02601fcbcac953f043a53eac6fed7a5367a7189c recovery Kiev PreMP |
| 195 | # 6eaa4b094cd75eacc0f2fa4516d33ed86ea6f3d2 recovery Kip MP |
| 196 | # dc65a88c92511494999d2c03a72ec2584d21917d recovery Leon MP |
| 197 | # 7e74cd6d66f361da068c0419d2e0946b4d091e1c recovery Link MP |
| 198 | # 7e74cd6d66f361da068c0419d2e0946b4d091e1c recovery Link MP-v4 |
| 199 | # 08b2d19bc87d05d860a1c274f874bc9fa9ab7dfb recovery Link Pre-MP |
| 200 | # 0d800afb53cdd05dd849addee0143ca1d96e893c recovery Lumpy MP |
| 201 | # 0d800afb53cdd05dd849addee0143ca1d96e893c recovery Lumpy MP-v3 |
| 202 | # ebcac421fbf411bee99ee90672a3add17f5a967b recovery Lumpy PVT |
| 203 | # 5d0d163b824cab5ae4f23fb2cc012e2a4124f4fe recovery Mario MP |
| 204 | # 5d0d163b824cab5ae4f23fb2cc012e2a4124f4fe recovery Mario MP-v3 |
| 205 | # 51dd0b446540182fd91c6196b9a8dfcd7bcf6256 recovery McCloud MP |
| 206 | # 67f01715f3acf6526ce48a3d2cf81b003a01f334 recovery Monroe MP |
| 207 | # 40832bb15fa40a18b8e5d80fd17d0405b624884e recovery Nyan PreMP |
| 208 | # 2b356618cd0f739877b7a3f155917341f8778523 recovery Nyan-Big MP |
| 209 | # 26900310befce802836cca982f819aa72445e190 recovery Nyan-Blaze MP |
| 210 | # e74e63e14b285700324ffd3acc4b776dc3104b8f recovery Panther MP |
| 211 | # 7f03c648d2bb4ab3979cb87633da51ed90267f03 recovery Parrot MP |
| 212 | # 7f03c648d2bb4ab3979cb87633da51ed90267f03 recovery Parrot MP-v3 |
| 213 | # 7f03c648d2bb4ab3979cb87633da51ed90267f03 recovery Parrot-ivb MP-v3 |
| 214 | # d254b3b3ddaac32f7b843753de9257ec4f6c67ed recovery Peach-Pi MP |
| 215 | # 6d9a2ca8b3080a97e1e5a4efbc5386ead77c3c7f recovery Peach-Pit MP-v2 |
| 216 | # bf39d0d3e30cbf6a121416d04df4603ad5310779 recovery Peppy MP-v2 |
| 217 | # 60aa1bbbea1d2f724c6e5daa0653ca472ac3085e recovery Quawks MP |
| 218 | # fb4847ecb6bfcc300e5f570c5e8f3ab881204968 recovery Rambi PreMP |
| 219 | # 462edb5ebfd817e29e813db7a424582c3ce35768 recovery Samus PreMP |
| 220 | # 13b0ddf343bb0c325b178e5be138d4969a9e02be recovery Snow MP |
| 221 | # cdc2858ca78351dc4b54d5d5d02bc695830f7802 recovery Squawks MP |
| 222 | # 5cb31faf8c524672a15fd4628c585af79eca0247 recovery Stout MP |
| 223 | # 5cb31faf8c524672a15fd4628c585af79eca0247 recovery Stout MP-v3 |
| 224 | # 37e7bad73449f782f280b1668fed48d1132137fa recovery Stumpy MP |
| 225 | # 8540f56f87d91c5403704c960c1f385705201e20 recovery Stumpy PVT |
| 226 | # e0b610bc85908c35fb7bd11bfd34afb84d547190 recovery Swanky MP |
| 227 | # 50759cb8bc2f86ef378571fa7b30a161e7dcdc03 recovery Tricky MP |
| 228 | # a0c56006541cd38d6c884d27210a135f5c309a3f recovery Winky PreMP |
| 229 | # a4ee431f7a07c59e920fe570ead0b938cdd4019d recovery Wolf MP |
| 230 | # 9bd99a594c45b6739899a17ec29ac2289ee75463 recovery ZGB MP |
| 231 | # 9bd99a594c45b6739899a17ec29ac2289ee75463 recovery ZGB MP-v3 |
| 232 | # 9bd99a594c45b6739899a17ec29ac2289ee75463 recovery ZGB-HE MP-v3 |
| 233 | # ba07696c1c82891fdacab28a434148d239e7c834 recovery Zako MP-v2 |
| 234 | # |
| 235 | # Firmware root keys |
| 236 | # |
| 237 | # b11d74edd286c144e1135b49e7f0bc20cf041f10 root developer keys |
| 238 | # |
| 239 | # 00f77be2a0c013343db84fc6259da09e558b8318 root Alex MP |
| 240 | # 00f77be2a0c013343db84fc6259da09e558b8318 root Alex MP-v4 |
| 241 | # 00f77be2a0c013343db84fc6259da09e558b8318 root Alex-HE MP-v4 |
| 242 | # c788cee8c798669fe4822b7544dd3e399ce22604 root Butterfly MP-v3 |
| 243 | # 12a2c88b58cbd9eef6b777a3af440f611ea4f561 root Butterfly Pre-MP |
| 244 | # 952dd6852c11fd8b36b4fb88f3335ecae722e0e6 root Clapper MP |
| 245 | # a026a7a4a0bf0fa32d6b7aa90a80d5ef01a3b799 root Daisy MP-v3 |
| 246 | # c788cee8c798669fe4822b7544dd3e399ce22604 root Daisy-Skate MP |
| 247 | # ab3521d3b1938af52009b2c3dfad964594f6b367 root Daisy-Spring MP-v2 |
| 248 | # 48dc3c5917b9095d6b4188560c9726ba31a192ee root Enguarde MP-v10 |
| 249 | # 82f706e156e5927bbdf8f14f4a9f45bc59986311 root Expresso MP-v10 |
| 250 | # c788cee8c798669fe4822b7544dd3e399ce22604 root Falco MP-v2 |
| 251 | # c788cee8c798669fe4822b7544dd3e399ce22604 root Falco-li MP-v2 |
| 252 | # 952dd6852c11fd8b36b4fb88f3335ecae722e0e6 root Glimmer MP |
| 253 | # fc68bcb88bf9af1907289a9f377d658b3b9fe5b0 root Gnawty MP |
| 254 | # 4c5067795ddbbf100d19f9ba08928af1c1ef37c6 root Kiev MP |
| 255 | # 9c138273527db0a0797233e2345ee39e46c0df95 root Kiev PreMP |
| 256 | # c788cee8c798669fe4822b7544dd3e399ce22604 root Kip MP |
| 257 | # 154512de86cc1cc36a67d4225eb2fcc37dac1b7c root Leon MP |
| 258 | # 7b5c520ceabce86f13e02b7ca363cfb509fc5b98 root Link MP |
| 259 | # 7b5c520ceabce86f13e02b7ca363cfb509fc5b98 root Link MP-v4 |
| 260 | # e63058bf4b86b6fb1f148bc7acea9c71fe51675f root Link Pre-MP |
| 261 | # 4e92f07efd4a920c4e4f1ed97cf47b7b04ee1428 root Lumpy MP |
| 262 | # 4e92f07efd4a920c4e4f1ed97cf47b7b04ee1428 root Lumpy MP-v3 |
| 263 | # c9fc61f331b34e00a148e657bde5fb6b0b576c0a root Lumpy PVT |
| 264 | # 541f467a7d8747f55ae9087ee4e34155f5ee3cd7 root Mario MP |
| 265 | # 541f467a7d8747f55ae9087ee4e34155f5ee3cd7 root Mario MP-v3 |
| 266 | # fc68bcb88bf9af1907289a9f377d658b3b9fe5b0 root McCloud MP |
| 267 | # eec186f8a0cd6be2e9d86dc9ce284790739be202 root Monroe MP |
| 268 | # 3f54dd6a6e16128aec5c6c3052763388ae99d350 root Nyan PreMP |
| 269 | # fc68bcb88bf9af1907289a9f377d658b3b9fe5b0 root Nyan-Big MP |
| 270 | # c788cee8c798669fe4822b7544dd3e399ce22604 root Nyan-Blaze MP |
| 271 | # 758a59f4f911b63a1335223d761d2485313674c8 root Panther MP |
| 272 | # 9f59876c7f7dc881f02d934786c6b7c2c17dcaac root Parrot MP |
| 273 | # 9f59876c7f7dc881f02d934786c6b7c2c17dcaac root Parrot MP-v3 |
| 274 | # 9f59876c7f7dc881f02d934786c6b7c2c17dcaac root Parrot-ivb MP-v3 |
| 275 | # a026a7a4a0bf0fa32d6b7aa90a80d5ef01a3b799 root Peach-Pi MP |
| 276 | # a026a7a4a0bf0fa32d6b7aa90a80d5ef01a3b799 root Peach-Pit MP-v2 |
| 277 | # fc68bcb88bf9af1907289a9f377d658b3b9fe5b0 root Peppy MP-v2 |
| 278 | # 758a59f4f911b63a1335223d761d2485313674c8 root Quawks MP |
| 279 | # b3119b02f2b5371da5596b13d612facbca99b94f root Rambi PreMP |
| 280 | # cb8086a9c1cd26318fef9a9fb3f846ca12320737 root Samus PreMP |
| 281 | # a026a7a4a0bf0fa32d6b7aa90a80d5ef01a3b799 root Snow MP |
| 282 | # 758a59f4f911b63a1335223d761d2485313674c8 root Squawks MP |
| 283 | # 952dd6852c11fd8b36b4fb88f3335ecae722e0e6 root Stout MP |
| 284 | # 952dd6852c11fd8b36b4fb88f3335ecae722e0e6 root Stout MP-v3 |
| 285 | # 4ec4ba0a746b37b1c6286ab807c2a5b1e7ab4ab0 root Stumpy MP |
| 286 | # 06939c65797eadfe6be1b3343a2e339800a34108 root Stumpy PVT |
| 287 | # 154512de86cc1cc36a67d4225eb2fcc37dac1b7c root Swanky MP |
| 288 | # ed3dab48746de569513aa288439f86fe24cc3386 root Tricky MP |
| 289 | # 5915703fb47bf569d7a6b8726cb9a1bd159487b0 root Winky PreMP |
| 290 | # ed3dab48746de569513aa288439f86fe24cc3386 root Wolf MP |
| 291 | # 9f59876c7f7dc881f02d934786c6b7c2c17dcaac root ZGB MP |
| 292 | # 9f59876c7f7dc881f02d934786c6b7c2c17dcaac root ZGB MP-v3 |
| 293 | # 9f59876c7f7dc881f02d934786c6b7c2c17dcaac root ZGB-HE MP-v3 |
| 294 | # c788cee8c798669fe4822b7544dd3e399ce22604 root Zako MP-v2 |
| 295 | # |
| 296 | # Normal kernel keys |
| 297 | # |
| 298 | # d6170aa480136f1f29cf339a5ab1b960585fa444 normal developer keys |
| 299 | # |
| 300 | # af24e46b6c3805869616e71c002c9a2a847ad266 normal Alex MP |
| 301 | # af24e46b6c3805869616e71c002c9a2a847ad266 normal Alex MP-v4 |
| 302 | # af24e46b6c3805869616e71c002c9a2a847ad266 normal Alex-HE MP-v4 |
| 303 | # 6026d95d1f11e1b88c19a139effbb02660523904 normal Butterfly MP-v3 |
| 304 | # 24fcff70ef3d834451384452bd9bc64c4d01c559 normal Butterfly Pre-MP |
| 305 | # d03ba05319cd77d0830b268804804f21fcb7672c normal Clapper MP |
| 306 | # 0d96e14c31a405b28dd7c7d2e416bbf960bc9779 normal Daisy MP-v3 |
| 307 | # da0bb5a3e2e80ebab0ac268ba2204ec360e9bb45 normal Daisy-Skate MP |
| 308 | # 94b5cfc5933e2f6294095820fa9eaf8162ca8021 normal Daisy-Spring MP-v2 |
| 309 | # dd15b9458ffc5ecb8048dbc4ae5e7f480c9e1852 normal Duck PreMP |
| 310 | # d9ffc2514c179472b6c5553b8ed20237cdfef73e normal Enguarde MP-v10 |
| 311 | # bd99dc86506b9ebe3025e5af69a26decf607173d normal Expresso MP-v10 |
| 312 | # c5d935b69950c29b2d2bba7cecacd2859fb9afbd normal Falco MP-v2 |
| 313 | # c5d935b69950c29b2d2bba7cecacd2859fb9afbd normal Falco-li MP-v2 |
| 314 | # c6bc5788eb62701cdd69b309766fe2a49ead14d1 normal Glimmer MP |
| 315 | # 32778b8483e14e4570b582c34df065c5ee833a59 normal Gnawty MP |
| 316 | # f82f08a5953b688b078f465731f1077fdf0d97cf normal Kiev MP |
| 317 | # b3ad5503fda8b06c74a000fed289006c97bf5600 normal Kip MP |
| 318 | # 933610d5c9926ec5540e180cda18c0395a853012 normal Leon MP |
| 319 | # d5927774fc14bb18a38c27fef47a36517a089d04 normal Link MP |
| 320 | # ad9e35dcd4287a3e27264ce49df6df40aaf2dcbb normal Link MP-v4 |
| 321 | # 7cb50f352af15f807f4bf3eaaede62d2f9c70d27 normal Link Pre-MP |
| 322 | # ad9e35dcd4287a3e27264ce49df6df40aaf2dcbb normal Link-freon MP-v4 |
| 323 | # cc887372ac2d1c415eac93fc11e753629c387358 normal Lumpy MP v2 |
| 324 | # cc887372ac2d1c415eac93fc11e753629c387358 normal Lumpy MP-v3 |
| 325 | # fa55cba16857a49270fb1561f87343c00959eb19 normal Lumpy PVT |
| 326 | # a1454fcecb98a6f33b38638564bdfc20161a7b04 normal Mario MP v2 |
| 327 | # a1454fcecb98a6f33b38638564bdfc20161a7b04 normal Mario MP-v3 |
| 328 | # 8848be24f4c34f064ae23c0450d27b62e558d2ed normal McCloud MP |
| 329 | # ac65608a05976a904f4c6123953968cd1aa444ab normal Monroe MP |
| 330 | # 78d388d49c494510d48cfa1650eacd45aa871da5 normal Nyan PreMP |
| 331 | # 71dd606970080aab093da2bbe91ca4348988175c normal Nyan-Big MP |
| 332 | # c4c00693dd7b99fffc1b272641f769d0a2f19ef5 normal Nyan-Blaze MP |
| 333 | # 39f6088397ebfcc8fffbd933b4bcd8a0e74ba409 normal Panther MP |
| 334 | # 8975d168123d5cfc7cebf674627958445f0d2a52 normal Parrot MP v2 |
| 335 | # e18e8ac7835390a71d2d70d02880694c6da9ac92 normal Parrot MP-v3 |
| 336 | # e18e8ac7835390a71d2d70d02880694c6da9ac92 normal Parrot-ivb MP-v3 |
| 337 | # ef469c6417138a8a371b51483d941a01453d27a3 normal Peach-Pi MP |
| 338 | # 2cf0eddab3a021044fc66fdca492c7899de5b7eb normal Peach-Pit MP-v2 |
| 339 | # 320e083d80e1a49d9c11cc0d8d055b050a92805a normal Peppy MP-v2 |
| 340 | # c65c3e3648eca66449ac9cdaf60edc2ba1b136e8 normal Quawks MP |
| 341 | # 037f4ed441ac39ca0a7fdd6c0829d4add9bf5f34 normal Rambi PreMP |
| 342 | # 989186f9aec3bced013d7f085c0f8caa07518e34 normal Samus PreMP |
| 343 | # c5120666c642f031e76edab8a2b45dd32232f80d normal Snow MP v2 |
| 344 | # 1cab1dedc34076b8887c9ebd4e6769eda6c41ed2 normal Squawks MP |
| 345 | # 09cb9b45c2cd4ca674861fe484aa758ba5568be0 normal Stout MP |
| 346 | # 47a82928807763a30956f40e4de0e68af2a17975 normal Stout MP-v3 |
| 347 | # de0b76af3caa55a8e7aa34c805e4248ad03b18e7 normal Stumpy MP |
| 348 | # f7e48006982a0ad4a41c0ca6610f062adb0eec44 normal Stumpy MP v2 |
| 349 | # 04dd63e835c979b57f87fd74e99af68e0cd39ad7 normal Stumpy PVT |
| 350 | # c321ed66f9b999598d39be7be3246bb25362740b normal Swanky MP |
| 351 | # 5c626cd8a684e470e74d3ceaf518aae745fe15dc normal Tegra2-Kaen PVT |
| 352 | # 09790fcb8c2b6732ec54bc406d34ec16c55992ba normal Tricky MP |
| 353 | # 202bb448a3f269771cffe53c38d6f05b2d1329ae normal Winky PreMP |
| 354 | # 7d4f5255af3552d8c8b40f60873d683268050015 normal Wolf MP |
| 355 | # 7b7ae8652775ad7305f565161b3acc00fcc8ea22 normal ZGB MP v2 |
| 356 | # 7b7ae8652775ad7305f565161b3acc00fcc8ea22 normal ZGB MP-v3 |
| 357 | # 7b7ae8652775ad7305f565161b3acc00fcc8ea22 normal ZGB-HE MP-v3 |
| 358 | # f70f0373b60ea8e2c5df7a9afeb75726fe0c8eb3 normal Zako MP-v2 |
| 359 | # |
| 360 | # Recovery kernel keys |
| 361 | # |
| 362 | # e78ce746a037837155388a1096212ded04fb86eb recovery developer keys |
| 363 | # |
| 364 | # 03172b08f0b99172c73d947f51e8ca23d418bcbf recovery Alex MP |
| 365 | # 03172b08f0b99172c73d947f51e8ca23d418bcbf recovery Alex MP-v4 |
| 366 | # 03172b08f0b99172c73d947f51e8ca23d418bcbf recovery Alex-HE MP-v4 |
| 367 | # c65d20649d35019a40642a4e2540b19587ee6458 recovery Butterfly MP-v3 |
| 368 | # 934e38b44b11eb892d1edc32cb3ba87c558232d9 recovery Butterfly Pre-MP |
| 369 | # 889367bc86d0af857412a409f98e2ab9d798f887 recovery Clapper MP |
| 370 | # f32b5f6b6cfb6d77136ac0d8ed0cdf67e6df7b91 recovery Daisy MP-v3 |
| 371 | # 66496dd27c44ae81cf0c41671b5af59a316969da recovery Daisy-Skate MP |
| 372 | # a1f00935770234a434c4b14414c48866b1661e40 recovery Daisy-Spring MP-v2 |
| 373 | # 9a04d0ea29b095c6c227b50d4bb75f431355dbb0 recovery Duck PreMP |
| 374 | # e30dc74a05de0d0e7522817f8d97f04f08ff6a8b recovery Enguarde MP-v10 |
| 375 | # 4e22acdedf89a3dbb6b9861b513e2121bd457a96 recovery Expresso MP-v10 |
| 376 | # af1e6c23c3148d3261b5fc7c30860d89faeee7a6 recovery Falco MP-v2 |
| 377 | # af1e6c23c3148d3261b5fc7c30860d89faeee7a6 recovery Falco-li MP-v2 |
| 378 | # 45145bcfc866b5cc7d711d6451fd1272f55ba087 recovery Glimmer MP |
| 379 | # 377f89af74389c1d06876981bda3a7a591332f67 recovery Gnawty MP |
| 380 | # 10d73c2b24b35c0ea387babd72e9b242f2d79c9f recovery Kiev MP |
| 381 | # 5dea047c25331a6b3ed0f40efa7e2b8b90676abf recovery Kip MP |
| 382 | # 51a7f92ef6d727da9b0f0ebd8882a836db296e97 recovery Leon MP |
| 383 | # e8c4e66b00df5468e4d7ec9757347842cfd6c1da recovery Link MP |
| 384 | # e8c4e66b00df5468e4d7ec9757347842cfd6c1da recovery Link MP-v4 |
| 385 | # 93e0ecffb36199071a3d995f6726770e799dcd0e recovery Link Pre-MP |
| 386 | # e8c4e66b00df5468e4d7ec9757347842cfd6c1da recovery Link-freon MP-v4 |
| 387 | # 49d40533b0812d3f31232c5eedd47e7e11acc293 recovery Lumpy MP |
| 388 | # 49d40533b0812d3f31232c5eedd47e7e11acc293 recovery Lumpy MP-v3 |
| 389 | # cb45bc04a932e4bcac41b44d31afd9516ca0fe24 recovery Lumpy PVT |
| 390 | # f6fadd7e31eebf4bcc4eb8d2dd512e3a2313627f recovery Mario MP |
| 391 | # f6fadd7e31eebf4bcc4eb8d2dd512e3a2313627f recovery Mario MP-v3 |
| 392 | # 95b4a4abb2a55e7163824e36583c109c90a2e78d recovery McCloud MP |
| 393 | # 5e2ca8bc287af2d94615e940ee17e9620d3191dd recovery Monroe MP |
| 394 | # b914dc4800f6929d0c1ecea536dbff9ef618af26 recovery Nyan PreMP |
| 395 | # 9cdfb53d6ef4f4746de2dace828d1142c216a130 recovery Nyan-Big MP |
| 396 | # 934ce4a3a23316457727a500b7dce4e04b2f7147 recovery Nyan-Blaze MP |
| 397 | # ef1c9cdbf547acc397288cf58fd3ee274383abbb recovery Panther MP |
| 398 | # cfa1a4a784a90cc7c1df6859fa226b89e6afbeb5 recovery Parrot MP |
| 399 | # cfa1a4a784a90cc7c1df6859fa226b89e6afbeb5 recovery Parrot MP-v3 |
| 400 | # cfa1a4a784a90cc7c1df6859fa226b89e6afbeb5 recovery Parrot-ivb MP-v3 |
| 401 | # 7cabfc4c72cb300399c8c490b39c1ce0c45b11c0 recovery Peach-Pi MP |
| 402 | # b39e9b9b12f3ab4fd1017e6c92d4ccff2723347d recovery Peach-Pit MP-v2 |
| 403 | # 74ec605d3525e24b7f7a4b633afd2ec048dc6d12 recovery Peppy MP-v2 |
| 404 | # 315417a5d8a95b954f5f101acaef5b107136a418 recovery Quawks MP |
| 405 | # d0b7feba2bb53ecd8eda6602ccf6a0c25e5b001f recovery Rambi PreMP |
| 406 | # 61cad57963dd64202cead8dcfc62aea76c9911c2 recovery Samus PreMP |
| 407 | # f32b5f6b6cfb6d77136ac0d8ed0cdf67e6df7b91 recovery Snow MP |
| 408 | # d45eb14119d14b5b1d4b259f177e32c522d27f99 recovery Squawks MP |
| 409 | # fa4497f70968a1820ceb0ac4364d8e9ec0abc0b2 recovery Stout MP |
| 410 | # fa4497f70968a1820ceb0ac4364d8e9ec0abc0b2 recovery Stout MP-v3 |
| 411 | # 6f6d6df4e328633904990cf8c60baa18b8cf6fc7 recovery Stumpy MP |
| 412 | # 057a03c1526a1be7f42d29095c5a583231a75b35 recovery Stumpy PVT |
| 413 | # d56ac05587d7d45d681cb52d113fb5d95e787d1d recovery Swanky MP |
| 414 | # de11a604715a920d7371ceefda75a5b1b062443f recovery Tegra2-Kaen PVT |
| 415 | # 4fe89a587d09c9fb58e79b556014b833f64559fb recovery Tricky MP |
| 416 | # 72bb00bb0c89d06569df2d9d2e8087e040bbbb8b recovery Winky PreMP |
| 417 | # a01a2a2502fe8f6e3dc8100080b0e486bc0a3468 recovery Wolf MP |
| 418 | # 20f3e8b77da6577706c91feefb203f98ee20d479 recovery ZGB MP |
| 419 | # 20f3e8b77da6577706c91feefb203f98ee20d479 recovery ZGB MP-v3 |
| 420 | # 20f3e8b77da6577706c91feefb203f98ee20d479 recovery ZGB-HE MP-v3 |
| 421 | # 070611f0aa70b6887dd3c96b4086c13894ffa25f recovery Zako MP-v2 |