Files

191 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

2025-09-17 10:52:06 -05:00
# How to read/edit `store.dat` on Windows
## What this does
- Decrypts `%AppData%\rIDE\<userId>\store.dat` using Windows **DPAPI
(CurrentUser)**.
- Lets you **view** keys and **update** a value (e.g., `GithubToken`,
`SupabaseToken`, etc.).
- Must be run **as the same Windows user account** that created the
file.
------------------------------------------------------------------------
## 0) One-time setup
1. **Save the script** (name it exactly): `decrypt-dat-file.ps1`\
(Use the version Jimmy shared --- it already loads the
`System.Security` assembly and includes `Set-StoreValue`.)
2. Put it somewhere easy, e.g.:
C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1
------------------------------------------------------------------------
## 1) Open PowerShell & allow running the script (this session only)
``` powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
```
------------------------------------------------------------------------
## 2) Find your `userId` folder and back up the file
`store.dat` lives at:
%AppData%\rIDE\<userId>\store.dat
In PowerShell, reference `%AppData%` as `$env:APPDATA`. Example:
``` powershell
# Replace <userId> with the actual folder name (GUID)
cd "$env:APPDATA\rIDE\<userId>"
Copy .\store.dat .\store.bak
```
> Tip: to list the available userId folders:
``` powershell
Get-ChildItem "$env:APPDATA\rIDE"
```
------------------------------------------------------------------------
## 3) List keys / read values (no edits yet)
### Option A --- run the script with parameters (no functions loaded)
Use the **call operator** `&` when passing parameters:
``` powershell
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -ListKeys
# Example output: GithubToken, SupabaseToken, AzureAccessToken, ...
```
Read a specific key:
``` powershell
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -Key GithubToken -Raw
```
> `-Raw` prints the exact string. Without `-Raw`, JSON values (like
> `SupabaseToken`) are pretty-printed.
------------------------------------------------------------------------
## 4) Edit a value
You have **two ways** to edit:
### Option A (recommended): *dot-source* once, then call `Set-StoreValue`
Dot-sourcing loads the helper functions into your shell:
``` powershell
. "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1"
```
Now update a key:
- **Plain string key** (e.g., `GithubToken`):
``` powershell
Set-StoreValue -UserId "<userId>" -Key "GithubToken" -Value "ghp_or_ghu_yourNewTokenHere"
```
- **JSON key** (e.g., `SupabaseToken` expects JSON):
``` powershell
$newPat = '{"AccessToken":"myNewSupabasePAT","RefreshToken":null,"ExpiresAt":"2025-12-31T23:59:59Z"}'
Set-StoreValue -UserId "<userId>" -Key "SupabaseToken" -Value $newPat
```
Verify:
``` powershell
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -Key GithubToken -Raw
# or
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -Key SupabaseToken
```
### Option B: stay "no functions" and only run the script
Use this only to **view** or **list**; editing requires Option A.
------------------------------------------------------------------------
## 5) Common pitfalls & fixes
- **`The term 'Set-StoreValue' is not recognized`**\
You *ran* the script but didn't dot-source it. Dot-source first:
``` powershell
. "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1"
```
- **`Unable to find type [System.Security.Cryptography.ProtectedData]`**\
Use the script Jimmy provided (it includes
`Add-Type -AssemblyName System.Security`).\
If you still see it:
``` powershell
Add-Type -AssemblyName System.Security
```
- **`DPAPI Unprotect failed...`**\
You're not running as the same Windows user that created the file.
Switch to that user profile.
- **`%AppData%` doesn't work in PowerShell**\
Use `$env:APPDATA` (PowerShell style):
``` powershell
cd "$env:APPDATA\rIDE\<userId>"
```
- **Edited value shape**
- Keys like `GithubToken` are **plain strings**.\
- Keys like `SupabaseToken` and `projectSecret_*` are **JSON**.
Make sure you pass valid JSON.
------------------------------------------------------------------------
## 6) Quick examples (ready to paste)
### List keys
``` powershell
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -ListKeys
```
### Read GitHub token (raw)
``` powershell
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -Key GithubToken -Raw
```
### Update GitHub token
``` powershell
. "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1"
Set-StoreValue -UserId "<userId>" -Key "GithubToken" -Value "ghp_or_ghu_yourNewTokenHere"
```
### Update Supabase token (JSON)
``` powershell
. "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1"
$newPat = '{"AccessToken":"myNewSupabasePAT","RefreshToken":null,"ExpiresAt":"2025-12-31T23:59:59Z"}'
Set-StoreValue -UserId "<userId>" -Key "SupabaseToken" -Value $newPat
```
### Verify
``` powershell
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -Key GithubToken -Raw
& "C:\Users\<you>\OneDrive\Desktop\Codebuddy\decrypt-dat-file.ps1" -UserId "<userId>" -Key SupabaseToken
```