Skip to content

Commit

Permalink
Merge pull request #4 from miceoroni/master
Browse files Browse the repository at this point in the history
Modernize the whole thing
  • Loading branch information
rainestorme authored Oct 30, 2024
2 parents 9eb5032 + d65e8cb commit b72b4a4
Show file tree
Hide file tree
Showing 6 changed files with 196 additions and 90 deletions.
80 changes: 80 additions & 0 deletions _pages/en_US/badrecovery.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: "BadRecovery/OlyBmmer"
---

{% include toc title="Table of Contents" %}

## Prerequisites
- A USB drive, preferably 8gb or larger, for the modded recovery image.

## Section I - Downloading a Recovery image

First things first, you need to grab a recovery image lower than v125 for your board.

- https://chrome100.dev

## Section II - Mod the Recovery image

Vist the [BadRecovery Web Bulider](https://binbashbanana.github.io/badrecovery) and upload the RAW recovery image. choose auto and wait a couple of minute and it should download automatically.

## Section III - Flashing the image

Did it download automatically? Amazing! Please follow the next instructions for
flashing.

### Across all platforms (ChromeOS, Mac, Windows, Linux, etc.)

If you are using a Chromium browser, Download the Chromebook Recovery Utility and click on "Use Local Image" on the dropdown menu.

Select your modded recovery image you made earlier and click Continue.

WARNING: All data on this USB will be lost. Consider making a backup of the USB
if this is the only one laying around you.
{: .notice--danger}

Once done, you should plug the USB into your chromebook and hit ESC+REFRESH+POWER.
Recovery should now start. Sit back and relax until the BadRecovery screen pops up.

### Linux

Run
```dd if=/path/to/yourmoddedrecoimage.bin of=/dev/sdWHATEVERYOURUSBIS```

MAKE SURE YOU ARE NOT FLASHING TO YOUR INTERNAL DISK! DOING SO WILL
RESULT IN LOSS OF DATA!
{: .notice--danger}

If all goes well, the command will finish with no errors.
A 0 exit code is not a error, please ignore that.

### Windows
Download [Rufus](https://rufus.ie), run the exe and select the raw image. Choose DD mode if prompted. Click START to Continue.

### MacOS
Download [Etcher](https://www.balena.io/etcher) and run the executable/appimage. Click allow for everything. Select the modded reco image and your USB drive.

## Section IV - Booting BadRecovery

Unlike SH1MMER, DO NOT enter devmode unless you have a ancient board (pre-CR50).

Instead simply press ESC+REFRESH+POWER and plug in your USB.

The recovery process should start.

After a while you should get kicked to a BadRecovery screen. Let it remove
FWMP and enable dev mode. If it shows a error of tpmc failing to remove FWMP, your chromebook is incompatible to the exploit. (This issue is not really common anymore since the latest version patched this.)

Now press Refresh and Power.

Please note that your admin can see that your device is offline. If you are not allowed to do this, set your kernver to 0 and reenroll using KVS.
{: .notice--danger}

## Section VI- Postmodem

If you want to reenroll but want to unenroll at anytime, continue to [kvs](kvs)
{: .notice--success}

If you want to run things like linux on your chromebook, consult the chrultrabook wiki.

...or you can just use it like a normal chromebook and run things like Crostini. The choices are endless.
{: .nnotice--primary}
4 changes: 2 additions & 2 deletions _pages/en_US/faq.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ Yes, your administrator can see that you've unenrolled. More specifically - your
{% capture compat %}
<summary><u>Are there any risks of permanently damaging my Chromebook?</u></summary>

Short answer: No. Slightly longer answer: Not unless you fuck up really, *really* badly. Basically, just follow the instructions and you'll be fine.
Short answer: No. Slightly longer answer: Not unless you fuck up really, *really* badly. (if you do, consider yourself to be a honorary skid) Basically, just follow the instructions and you'll be fine.
{% endcapture %}
<details>{{ compat | markdownify }}</details>

{% capture compat %}
<summary><u>Help! I got a "ChromeOS is Missing or Damaged" screen and don't know what to do!</u></summary>

Use a recovery drive. If ChromeOS refuses to load it, check that you got the right board on [Chrome100](https://chrome100.dev/). If that doesn't work, make sure that this screen isn't intentional, as it is in fakemurk. If none of that works, then cope and seethe, skid.
Use a recovery drive. If ChromeOS refuses to load it, check that you got the right board on [Chrome100](https://chrome100.dev/). If that doesn't work, make sure that this screen isn't intentional, as it is in fakemurk. If none of that works, consult (here)[https://www.youtube.com/watch?v=GU4Hw-xbBNo] for instructions on how to fix it.
{% endcapture %}
<details>{{ compat | markdownify }}</details>
12 changes: 8 additions & 4 deletions _pages/en_US/sh1mmer.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,15 @@ title: "SH1MMER Unenrollment"

- A USB drive, 8gb or larger, for the modified shim

Please note that SH1MMER has been patched for later devices with leaked shims.
If the shim does not boot, you need to perform BadRecovery.
{: .notice--danger}

## Section I - Download a Raw Shim

You need to download a raw RMA (Return Merchandise Authorization) shim for your board, which you found earlier. There are only a few of these that have been publicly leaked, and this tool automatically filters out boards that are not supported. You can get a shim at the following sites:

- https://dl.osu.bio/
- https://dl.darkn.bio/

## Section II - Add the SH1MMER payload (BeautifulWorld)

Expand Down Expand Up @@ -45,11 +49,11 @@ Download [Etcher](https://www.balena.io/etcher) and run the excutable. Select th

## Section IV - Boot SH1MMER

Boot your Chromebook and press and hold `Esc+Refresh+Power` for one second. Then, press `Ctrl+D`. At the next screen, press `Refresh+Power`. Now, plug in your USB drive and press `Esc+Refresh+Power` again. After a short loading screen, the SH1MMER menu should load.
Boot your Chromebook and press and hold `Esc+Refresh+Power` for one second. Then, press `Ctrl+D`. At the next screen, press `Refresh+Power`. Now, plug in your USB drive and press `Esc+Refresh+Power` again. After a short loading screen, the SH1MMER menu should load.

## Section V - Unenroll

Select the first option on the menu and you will be presented with a menu with a variety of payloads and utilities. What we're after is "Un-Enroll Device". Select it and reboot your device (`Esc+Refresh`).
Select the first option on the menu and you will be presented with a menu with a variety of payloads and utilities. What we're after is "Un-Enroll Device". Select it and reboot your device (`Esc+Refresh`).

If you're continuing to use E-Halcyon, ignore any errors that appear running the utility.

Expand Down Expand Up @@ -80,4 +84,4 @@ If you want to re-enroll but keep your Chromebook unrestricted, continue to [fak
{: .notice--success}

...or you could just keep your device like this, and use it as a personal device. The choice is yours.
{: .notice--primary}
{: .notice--primary}
23 changes: 15 additions & 8 deletions _pages/en_US/troubleshooting.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,25 @@ Either get a friend to help you or else you're out of luck. Sorry, skid.

### I don't have a USB drive, can you send one to me?

No.
Go out and buy one. While you're at it, touch some grass.

### My USB drive is less than 8gb. Will it still work?

No.
Yes. Use SH1MMER legacy instead.

### Recovery outputs something about the drive being outdated

This means that, at some point, you've updated to v112 or higher. A workaround will come out in a few weeks (as of May 11th, 2023).
This means that, at some point, you've updated to v112 or higher. Use BadRecovery if under 125.

## Root Escalation (Any Version)
## Root Escalation (>v101)

### No red prompt appears after running the root exploit

You are SOL. Recover again. Try again. Do better next time.
Womp Womp. Recover again. Try again. Do better next time.

### `set_cellular_ppp` outputs "No Cellular Service Exists"

Either you're on a version where the `set_cellular_ppp` bug is patched or something else got messed up. Try downgrading again.
Either you're on a version where the `set_cellular_ppp` bug is patched (v101 or higher) or something else got messed up. Try downgrading again.

## Root Escalation (v81 - Kiosk)

Expand All @@ -48,11 +48,18 @@ Reboot. Try again.

Either you've upgraded past v112 (at which point sh1mmer is patched) or you downloaded the shim for the wrong board.


### When I do SH1MMER, it says im using a unoffical image.

HOW. HOW DO YOU CONFUSE A RECOVERY IMAGE WITH A SHIM???? WHY..

..speaking of which, you should've read the instructions for SH1MMER.

## LtBEEF

### The script isn't running on any page.

Either the site that LtBEEF is being loaded from is blocked, in which case you're SOL, or you're on the wrong page. Keep in mind that LtBEEF needs to be run on:
Either the site that LtBEEF is being loaded from is blocked, in which case you're on a version where LtBEEF is patched, or you're on the wrong page. Keep in mind that LtBEEF needs to be run on:

`https://chrome.google.com/webstorex`.

Expand All @@ -68,4 +75,4 @@ Troubleshooting for Depthboot coming soon.

## cedr

Also coming soon.
Also coming soon.
11 changes: 11 additions & 0 deletions _pages/en_US/what-now.txt
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,14 @@ If you installed AuroraStore, you can search up "LibreTorrent". LibreTorrent is
## Visit Restricted Sites

Using Crouton, you can swap over to a full Linux desktop running XFCE. Within it, you can install firefox (`sudo apt install firefox-esr`) and then set the proxy settings to point towards wssocks (`127.0.0.1` on port `1080`).

## Install Windows/MacOS/Linux with FULL UEFI firmware
Disable WP using any of the methods for your board, then flash FULL ROM firmware using the MrChromebox script.

Now, simply flash the iso of your OS on to your usb and plug it in. Simple right?
Only issue is Windows needs drivers. LOTTTS of them. Go [here](https://coolstar.org/chromebook/windows-install.html) for more info. If you have money to spare,
simply buy them from CoolStar.

..or you can sail the high seas. good luck trying to find them lmao.

Please note that MacOS booting is only possible on 10th gen and below Intel Processors, which are not Celerons, Pentiums or Atoms. Consult the [OpenCore guide](https://dortania.github.io/OpenCore-Install-Guide/) for more.
156 changes: 80 additions & 76 deletions assets/js/selecting.js
Original file line number Diff line number Diff line change
@@ -1,86 +1,90 @@
const otherArchBoards = ["asurada", "bob", "cherry", "daisy", "daisy-skate", "daisy-spring", "elm", "hana", "jacuzzi", "kevin", "kukui", "nyan-big", "nyan-blaze", "nyan-kitty", "peach-pi", "peach-pit", "scarlet", "strongbad", "trogdor", "veyron-fievel", "veyron-jaq", "veyron-jerry", "veyron-mickey", "veyron-mighty", "veyron-minnie", "veyron-speedy", "veyron-tiger", "x86-alex-he", "x86-mario", "x86-zgb-he"];
const shimBoards = ["brask", "brya", "clapper", "coral", "dedede", "enguarde", "glimmer", "grunt", "hana", "hatch", "jacuzzi", "kukui", "nami", "octopus", "orco", "pyro", "reks", "sentry", "stout", "strongbad", "tidus", "ultima", "volteer", "zork", "kindred"];
const shimBoards = ["ambassador", "banon", "brask", "brya", "clapper", "coral", "consola", "cyan", "dedede", "enguarde", "edgar", "elm", "endguarde", "fizz", "glimmer", "grunt", "hana", "hatch", "jacuzzi", "kalista", "kukui", "kefka", "lulu", "nami", "nissa", "octopus", "orco", "puff", "pyro", "reef", "reks", "relm", "sand", "sentry", "snappy", "stout", "strongbad", "tidus", "trogdor", "ultima", "volteer", "zork"];
const rangeComp = (a, b, c) => {
return b <= a && a <= c;
return b <= a && a <= c;
}
const prettyNames = {"80": "v80 (v75-83)"};
const prettyNames = { "80": "v80 (v75-83)" };

let canRootBoard = (supplied_board) => {
let BOARD = chrome100.find(board => board.target == supplied_board);
if (!BOARD) {
alert("Invalid board!");
return;
}
let hasLegacyCrosh = document.getElementById("hasLegacyCrosh").checked,
hasCrosh = document.getElementById("hasCrosh").checked,
hasCroshBlock99 = document.getElementById("hasCroshBlock99").checked,
hasDriveFS = document.getElementById("hasDriveFS").checked,
hasARC = document.getElementById("hasARC").checked,
hasKiosk = document.getElementById("hasKiosk").checked && BOARD.images.find(image => parseInt(image.params.chrome.split(".")[0]) <= 81);
let downgradable = {
"80": !!BOARD.images.find(image => rangeComp(parseInt(image.params.chrome.split(".")[0]), 75, 83)),
"87": !!BOARD.images.find(image => image.params.chrome.split(".")[0] == "87"),
"91": !!BOARD.images.find(image => (image.params.chrome.split(".")[0] == "91" && parseInt(image.params.platform.split(".")[1]) <= 64)),
"101": !!BOARD.images.find(image => image.params.chrome.split(".")[0] == "101")
}
let pwnable = Object.assign({"SH1MMER": shimBoards.includes(supplied_board)}, downgradable);
let BOARD = chrome100.find(board => board.target == supplied_board);
if (!BOARD) {
alert("Invalid board!");
return;
}
let hasLegacyCrosh = document.getElementById("hasLegacyCrosh").checked,
hasCrosh = document.getElementById("hasCrosh").checked,
hasCroshBlock99 = document.getElementById("hasCroshBlock99").checked,
hasDriveFS = document.getElementById("hasDriveFS").checked,
hasARC = document.getElementById("hasARC").checked,
hasKiosk = document.getElementById("hasKiosk").checked && BOARD.images.find(image => parseInt(image.params.chrome.split(".")[0]) <= 81);
let downgradable = {
"80": !!BOARD.images.find(image => rangeComp(parseInt(image.params.chrome.split(".")[0]), 75, 83)),
"87": !!BOARD.images.find(image => image.params.chrome.split(".")[0] == "87"),
"91": !!BOARD.images.find(image => (image.params.chrome.split(".")[0] == "91" && parseInt(image.params.platform.split(".")[1]) <= 64)),
"101": !!BOARD.images.find(image => image.params.chrome.split(".")[0] == "101")
}
let pwnable = Object.assign({ "SH1MMER": shimBoards.includes(supplied_board) }, downgradable);

if (otherArchBoards.includes(supplied_board)) {
// maybe these will work in the future?
pwnable["87"] = false;
pwnable["91"] = false;
pwnable["101"] = false;
}
if (!hasDriveFS) {
// same for these
pwnable["91"] = false;
pwnable["101"] = false;
}
if (!hasARC) {
pwnable["87"] = false;
}
if (!hasLegacyCrosh && !hasKiosk) {
pwnable["80"] = false;
if (otherArchBoards.includes(supplied_board)) {
// maybe these will work in the future?
pwnable["87"] = false;
pwnable["91"] = false;
pwnable["101"] = false;
}
if (!hasDriveFS) {
// same for these
pwnable["91"] = false;
pwnable["101"] = false;
}
if (!hasARC) {
pwnable["87"] = false;
}
if (!hasLegacyCrosh && !hasKiosk) {
pwnable["80"] = false;
}
if (!hasCrosh && !hasCroshBlock99) {
pwnable["87"] = false;
pwnable["91"] = false;
}
if (!hasCrosh || hasCroshBlock99) {
pwnable["101"] = false;
}
let canRoot = false;
var waysToRoot = [];
Object.keys(pwnable).forEach(pwn => {
if (pwnable[pwn]) {
canRoot = true;
waysToRoot.push(pwn);
}
if (!hasCrosh && !hasCroshBlock99) {
pwnable["87"] = false;
pwnable["91"] = false;
}
if (!hasCrosh || hasCroshBlock99) {
pwnable["101"] = false;
}
let canRoot = false;
var waysToRoot = [];
Object.keys(pwnable).forEach(pwn => {
if (pwnable[pwn]) {
canRoot = true;
waysToRoot.push(pwn);
}
})
return waysToRoot;
})
return waysToRoot;
}

function redirect() {
var waysToRoot = canRootBoard(document.getElementById("board").value);
console.log(waysToRoot);
if (waysToRoot.includes("SH1MMER") && document.getElementById("curVersion").value >= 111) {
window.location.href="https://chromebook-guide.github.io/choose-halcyon";
} else if (document.getElementById("curVersion").value >= 112){
alert("No exploits are available for your platform, since you're updated past v112 and are incompatible with SH1MMER.");
return;
}
if (waysToRoot.includes("80")){
window.location.href="https://chromebook-guide.github.io/v81";
} else if (waysToRoot.includes("SH1MMER")){
// v81 provides more options then sh1mmer, sh1mmer is more of a second-best option here
window.location.href="https://chromebook-guide.github.io/sh1mmer"
} else if (waysToRoot.includes("87")) {
window.location.href="https://chromebook-guide.github.io/v87";
} else if (waysToRoot.includes("91")) {
window.location.href="https://chromebook-guide.github.io/v91";
} else if (waysToRoot.includes("101")) {
window.location.href="https://chromebook-guide.github.io/v101";
} else {
alert("No exploits are available for your platform :(");
}
}
var waysToRoot = canRootBoard(document.getElementById("board").value);
console.log(waysToRoot);
if (waysToRoot.includes("SH1MMER") && document.getElementById("curVersion").value >= 111) {
window.location.href = "https://chromebook-guide.github.io/cryptosmite";
} else if (document.getElementById("curVersion").value >= 112) {
window.location.href = "https://chromebook-guide.github.io/badrecovery"
}
if (document.getElementById(curVersion).value >= 125) {
alert("Wait for ICARUS.")
} else if (waysToRoot.includes("SH1MMER") && document.getElementById(curVersion).value >= 125) {
window.location.href = "https://chromebook-guide.github.io/pencilmethod" //last resort for repair shops or skids looking to unenroll chromebooks.
}
if (waysToRoot.includes("80")) {
window.location.href = "https://chromebook-guide.github.io/v81";
} else if (waysToRoot.includes("SH1MMER")) {
// v81 provides more options then sh1mmer, sh1mmer is more of a second-best option here
window.location.href = "https://chromebook-guide.github.io/sh1mmer"
} else if (waysToRoot.includes("87")) {
window.location.href = "https://chromebook-guide.github.io/v87";
} else if (waysToRoot.includes("91")) {
window.location.href = "https://chromebook-guide.github.io/v91";
} else if (waysToRoot.includes("101")) {
window.location.href = "https://chromebook-guide.github.io/v101";
} else {
alert("No exploits are available for your platform :(");
}
}

0 comments on commit b72b4a4

Please sign in to comment.