From f7e1275087fe0b79439aef8fd18730afa29f2e9b Mon Sep 17 00:00:00 2001 From: jasonbuechler <34217071+jasonbuechler@users.noreply.github.com> Date: Mon, 13 May 2019 11:42:10 -0700 Subject: [PATCH] 2.6 done i think --- README.md | 2 +- badger.ps1 | 180 +++++++++++++++++++++--------------------- the-badger-v2.6.0.zip | Bin 0 -> 21634 bytes 3 files changed, 91 insertions(+), 91 deletions(-) create mode 100644 the-badger-v2.6.0.zip diff --git a/README.md b/README.md index 1d629bb..5a6ac28 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# The Badger v2.5.0 by Jason Buechler +# The Badger v2.6.0 by Jason Buechler Video demo: https://www.youtube.com/watch?v=J7SYNOZQ504 > badger v220 in action diff --git a/badger.ps1 b/badger.ps1 index 426ff34..e555565 100644 --- a/badger.ps1 +++ b/badger.ps1 @@ -10,12 +10,12 @@ ## ##################################################################### ## -## The Badger v2.5.0 by Jason Buechler +## The Badger v2.6.0 by Jason Buechler ## write-host '' write-host '***************************** ' -write-host '** The Badger is on the move v2.5.0' +write-host '** The Badger is on the move v2.6.0' write-host '***************************** ' write-host '' @@ -27,24 +27,24 @@ write-host '' # $reopen = $false; if ($host.name -match 'ISE') { - $reopen = $true; + $reopen = $true; } $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) if($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) -ne 'True'){ $reopen = $true; } if($reopen){ - write-host '** This script needs to run with admin privileges, and outside of the ISE.' - write-host '** The Badger will relaunch this script after you hit Enter, below.' - write-host '** When you do so, you will be prompted by Windows User-Account-Control' - write-host '** to grant admin rights & then this script will relaunch in another window.' - write-host '' - write-host ' ^^^ READ THIS ^^^' - write-host '' - pause - # Relaunch as an elevated process: - Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs - exit + write-host '** This script needs to run with admin privileges, and outside of the ISE.' + write-host '** The Badger will relaunch this script after you hit Enter, below.' + write-host '** When you do so, you will be prompted by Windows User-Account-Control' + write-host '** to grant admin rights & then this script will relaunch in another window.' + write-host '' + write-host ' ^^^ READ THIS ^^^' + write-host '' + pause + # Relaunch as an elevated process: + Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs + exit } @@ -61,21 +61,21 @@ $winver = [Environment]::OSVersion.VersionString # full windows version $relid = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId # feature update $tftpstate = (Get-WindowsOptionalFeature -FeatureName "TFTP" -online).State # is TFTP enabled? if($tftpstate -ne 'Enabled'){ # if TFTP isn't enabled, try enabling and check again - write-host "** The TFTP 'windows feature' isn't enabled: Attempting to enable TFTP now..." -foregroundcolor yellow - Enable-WindowsOptionalFeature -Online -FeatureName "TFTP" -all # surprisingly easy/simple command to enable - $tftpstate = (Get-WindowsOptionalFeature -FeatureName "TFTP" -online).State # check again to verify tftp is enabled - if($tftpstate -ne 'Enabled'){ + write-host "** The TFTP 'windows feature' isn't enabled: Attempting to enable TFTP now..." -foregroundcolor yellow + Enable-WindowsOptionalFeature -Online -FeatureName "TFTP" -all # surprisingly easy/simple command to enable + $tftpstate = (Get-WindowsOptionalFeature -FeatureName "TFTP" -online).State # check again to verify tftp is enabled + if($tftpstate -ne 'Enabled'){ write-host '' - write-host '** Couldnt enable TFTP feature!!! <' -backgroundcolor red - write-host '** TFTP is necessary to escape tmo firmware. <' -backgroundcolor red + write-host '** Couldnt enable TFTP feature!!! <' -backgroundcolor red + write-host '** TFTP is necessary to escape tmo firmware. <' -backgroundcolor red write-host '' write-host '** Try manually enabling it: www.thewindowsclub.com/enable-tftp-windows-10' -foregroundcolor yellow write-host '' - pause - Exit - }else{ - write-host "** The TFTP 'windows feature' was successfully enabled." -foregroundcolor green - } + pause + Exit + }else{ + write-host "** The TFTP 'windows feature' was successfully enabled." -foregroundcolor green + } } write-host -foregroundcolor yellow "** Host machine: $winver ($relid)" write-host -foregroundcolor yellow "** TFTP state: $tftpstate" @@ -94,96 +94,96 @@ write-host '' $history = '' while(1){ - write-host -foregroundColor yellow $menu - write-host " [History: $history ]" - write-host "" - $bit = Read-Host -Prompt "Enter the letter for an operation" - if($bit){ $bit = $bit.substring(0,1) } - write-host '' + write-host -foregroundColor yellow $menu + write-host " [History: $history ]" + write-host "" + $bit = Read-Host -Prompt "Enter the letter for an operation" + if($bit){ $bit = $bit.substring(0,1) } + write-host '' Switch -regex ($bit){ - a{ # verify/select your ethernet adapter + a{ # verify/select your ethernet adapter - . '.\bits\select ethernet adapter.ps1' + . '.\bits\select ethernet adapter.ps1' . '.\bits\show current network config.ps1' # show current network config (also menu X) - write-host -foregroundcolor green $a1 - pause - - } - b{ # set manual IP in subnet 29 - write-host '** (We use subnet 29 because when youre using T-Mo firmware, in recovery mode is hard-coded for that.)' - write-host '' - . '.\bits\set manual IP in subnet 29.ps1' - write-host -foregroundcolor green $b1 - pause - } - c{ # chain D and E - write-host -foregroundcolor green $c1 #chain instructions - pause + write-host -foregroundcolor green $a1 + pause + + } + b{ # set manual IP in subnet 29 + write-host '** (We use subnet 29 because when youre using T-Mo firmware, in recovery mode is hard-coded for that.)' + write-host '' + . '.\bits\set manual IP in subnet 29.ps1' + write-host -foregroundcolor green $b1 + pause + } + c{ # chain D and E + write-host -foregroundcolor green $c1 #chain instructions + pause #this part is a copy of switch 'd' write-host '** Waiting for router to enter recovery mode...' - write-host '** (If it takes > 40 sec, something went wrong)' - . '.\bits\wait for router to return on current subnet.ps1' + write-host '** (If it takes > 40 sec, something went wrong)' + . '.\bits\wait for router to return on current subnet.ps1' #this part is a copy of switch 'e' - write-host $e1 # start tftp + 2 agonizing mins - . '.\bits\TFTP flash old Tmo FW via current subnet.ps1' + write-host $e1 # start tftp + 2 agonizing mins + . '.\bits\TFTP flash old Tmo FW via current subnet.ps1' write-host -foregroundcolor green $e3 # enable ssh instructions - pause - } - d{ # wait for router to return on current subnet - #looks like i'll have to add some more logic for the short window - write-host '** Waiting for router to enter recovery mode...' - write-host '** (If it takes > 40 sec, something went wrong)' - . '.\bits\wait for router to return on current subnet.ps1' - } - e{ # TFTP flash old Tmo FW via *current* subnet - write-host $e1 # start tftp + 2 agonizing mins - . '.\bits\TFTP flash old Tmo FW via current subnet.ps1' + pause + } + d{ # wait for router to return on current subnet + #looks like i'll have to add some more logic for the short window + write-host '** Waiting for router to enter recovery mode...' + write-host '** (If it takes > 40 sec, something went wrong)' + . '.\bits\wait for router to return on current subnet.ps1' + } + e{ # TFTP flash old Tmo FW via *current* subnet + write-host $e1 # start tftp + 2 agonizing mins + . '.\bits\TFTP flash old Tmo FW via current subnet.ps1' write-host -foregroundcolor green $e3 # enable ssh instructions - pause - } - f{ # download Tmo CFE to local + pause + } + f{ # download Tmo CFE to local - . '.\bits\download Tmo CFE to local.ps1' - write-host -foregroundcolor green $f1 + . '.\bits\download Tmo CFE to local.ps1' + write-host -foregroundcolor green $f1 pause - } - g{ # upload mod-CFE etc then write CFE and FW + } + g{ # upload mod-CFE etc then write CFE and FW - . '.\bits\upload mod-CFE etc then write CFE and FW.ps1' - write-host -foregroundcolor green $g1 - pause + . '.\bits\upload mod-CFE etc then write CFE and FW.ps1' + write-host -foregroundcolor green $g1 + pause - } + } h{ # set manual IP in subnet 1 - . '.\bits\set manual IP in subnet 1.ps1' - } + . '.\bits\set manual IP in subnet 1.ps1' + } - i{ - . '.\bits\wait for router to return on current subnet.ps1' - } + i{ + . '.\bits\wait for router to return on current subnet.ps1' + } - j{ - write-host -foregroundcolor green $j1 - pause - . '.\bits\secret sauce to clean MTD.ps1' - } + j{ + write-host -foregroundcolor green $j1 + pause + . '.\bits\secret sauce to clean MTD.ps1' + } - k{ # set auto IP by dhcp - . '.\bits\set auto IP by DHCP.ps1' - } + k{ # set auto IP by dhcp + . '.\bits\set auto IP by DHCP.ps1' + } - x{ # show current network config - . '.\bits\show current network config.ps1' - } + x{ # show current network config + . '.\bits\show current network config.ps1' + } y{ # personalize a new CFE.bin write-host -foregroundcolor green $y1 @@ -191,7 +191,7 @@ Switch -regex ($bit){ . '.\bits\cfe personalizer.ps1' } - '[a-jx-zA-JX-Z]'{ $history += "$bit," } + '[a-jx-zA-JX-Z]'{ $history += "$bit," } }} diff --git a/the-badger-v2.6.0.zip b/the-badger-v2.6.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..d26d83ed86025f1db5dee1199596bf8614307262 GIT binary patch literal 21634 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