how to decrypt in twrp? - OnePlus 3T Questions & Answers

I have my 3t unlocked and twrp flashed, but every time I boot into it, it indicates not able to decrypt data partition. Even after flashing with sideload, the pin which I set in preinstalled OS couldn't unlock it. Tried to disable boot up pin didn't help me out. Any hints?
Thankc

zphou said:
I have my 3t unlocked and twrp flashed, but every time I boot into it, it indicates not able to decrypt data partition. Even after flashing with sideload, the pin which I set in preinstalled OS couldn't unlock it. Tried to disable boot up pin didn't help me out. Any hints?
Thankc
Click to expand...
Click to collapse
Did you flashed dm-verity zip disabler or SuperSU zip before boot to system...?

cultofluna said:
Did you flashed dm-verity zip disabler or SuperSU zip before boot to system...?
Click to expand...
Click to collapse
It sounds like he just wants TWRP to be able to access his encrypted data, not to actually wipe and decrypt.
jcadduono said:
If your device isn't decrypting in TWRP, chances are you still have the old crypto key format from the 3.5.1 release firmware.
You can solve this by updating to 3.5.3 and changing your boot up password in your device OS's settings.
By changing your password after updating to 3.5.3 or newer, your OS will rewrite your crypto key to be compatible with TWRP.
You are free to disable your password after this if you don't want one, and TWRP will decrypt with the default password.
Click to expand...
Click to collapse
@zphou Did you do that stuff, like the TWRP thread tells you to?

Sounds like you need to factory reset. Thats how you remove encryption. Ive done it before on my other phone. Perhaps make a quick manual backup of the folders on your phone or use the splendid Huawei Backup app on the play store and throw that on your PC before resetting. You can restore apps to the exact state as before your reset. Encryption should be removed afterwards.

josephcsible said:
It sounds like he just wants TWRP to be able to access his encrypted data, not to actually wipe and decrypt.
@zphou Did you do that stuff, like the TWRP thread tells you to?
Click to expand...
Click to collapse
Yes. I followed the instructions and now with latest public beta, which is 7.0. I still can not access to data partition in recovery. Luckly, I could flash 3rd party rom with sideload, the only issue is not able to boot into system. So I have to flash the public 7.0 beta.

Related

E: Unable to mount storage

I see this annoying error whenever i am in TWRP. I thought I had it resolved when I flashed the stock ROM then flashed my current run CM-12.1-20150902-NIGHTLY-shamu obtained from Cyanogens website.
Then today I let it run the latest OTA and forgot I would lose root. So I attempted to root again only get get stuck at the boot screen. I eventually did a dirty flash of the same CM 12.1 and now I am back to normal and I was able to root again. But I still get the error E: Unable to mount storage.
Also, I am now also unable to see my Nexus in Windows to explore Internal Storage but was able to before I tried rooting.
Thanks in advance.
Sounds like a good time to do full wipe and clean install. Including TWRP and root.
prdog1 said:
Sounds like a good time to do full wipe and clean install. Including TWRP and root.
Click to expand...
Click to collapse
That's the thing, I thought I did all that properly and then flashed the latest CM 12.1 but noticed last night after a failed root that it is now giving the error again.
Would using my backup after I flashed the stock ROM cause the error to come back? I am just looking for the easiest way to avoid reconfiguring my phone and apps again.
tjlmbklr said:
That's the thing, I thought I did all that properly and then flashed the latest CM 12.1 but noticed last night after a failed root that it is now giving the error again.
Would using my backup after I flashed the stock ROM cause the error to come back? I am just looking for the easiest way to avoid reconfiguring my phone and apps again.
Click to expand...
Click to collapse
Good chance it is that CM12 borking it. Flash anything you want. It either fixes it or it don't. Can always flash back to stock to troubleshoot.
Are you encrypted, with a password to decrypt on boot?
If you have like a swipe password , when rebooting into TWRP you will never the normal android to allow you to enter your password, instead you *should* get one in TWRP, however it will just prompt you for an alphanumeric password.
If you cancel out of that, or enter the wrong password (or don't have an alphanumeric password to enter), I believe it gives you this message... and obviously will fail to mount the encrypted partition.
If this is the case, boot back into system, turn off all passwords/security and it should work fine (no need to decrypt)
scryan said:
Are you encrypted, with a password to decrypt on boot?
If you have like a swipe password , when rebooting into TWRP you will never the normal android to allow you to enter your password, instead you *should* get one in TWRP, however it will just prompt you for an alphanumeric password.
If you cancel out of that, or enter the wrong password (or don't have an alphanumeric password to enter), I believe it gives you this message... and obviously will fail to mount the encrypted partition.
If this is the case, boot back into system, turn off all passwords/security and it should work fine (no need to decrypt)
Click to expand...
Click to collapse
I am not really sure what this is so my guess is now. I do have my phone set with a 'pattern unlock to boot and unlock the phone. How do I tell if I am encrypted?
Your encrypted if you did not install a kernel that supports no forced encryption, the reformat your user data partition via fastboot,
The phone is encrypted by default.
the fact that your device requires pattern unlock at boot, and not just to unlock is a pretty good indicator, but try going into security and select encrypt phone. If it does not give you warnings, remind you to charge and offer to let you encrypt, it is because you already are. Turn off the pattern needed to boot at least, if not any unlock security in general before rebooting to recovery to avoid this error.
scryan said:
Your encrypted if you did not install a kernel that supports no forced encryption, the reformat your user data partition via fastboot,
The phone is encrypted by default.
the fact that your device requires pattern unlock at boot, and not just to unlock is a pretty good indicator, but try going into security and select encrypt phone. If it does not give you warnings, remind you to charge and offer to let you encrypt, it is because you already are. Turn off the pattern needed to boot at least, if not any unlock security in general before rebooting to recovery to avoid this error.
Click to expand...
Click to collapse
Well I haven't changed my kernel and it says Encrypted in my settings. So I could potentially stay on my current setup and resolve my error if I install another kernel?
So here's what I hope will be an easy answer, what is the best method to flash a kernel? I have only tried it once and failed since my phone failed to boot afterwards.
Any recommendations on which kernel to use with CM?
Thanks for the help.
tjlmbklr said:
Well I haven't changed my kernel and it says Encrypted in my settings. So I could potentially stay on my current setup and resolve my error if I install another kernel?
So here's what I hope will be an easy answer, what is the best method to flash a kernel? I have only tried it once and failed since my phone failed to boot afterwards.
Any recommendations on which kernel to use with CM?
Thanks for the help.
Click to expand...
Click to collapse
No.
And CM comes with its own kernel, that does not force encryption.
The kernel is not "encrypted" or "decrypted", the stock kernel forces encryption, others don't. But if your encrypted, you are encrypted until you reformat userdata (obviously this wipes phone) so that it is not encrypted.
scryan said:
Your encrypted if you did not install a kernel that supports no forced encryption, the reformat your user data partition via fastboot
Click to expand...
Click to collapse
scryan said:
...and obviously will fail to mount the encrypted partition.
If this is the case, boot back into system, turn off all passwords/security and it should work fine (no need to decrypt)
Click to expand...
Click to collapse
scryan said:
. Turn off the pattern needed to boot at least, if not any unlock security in general before rebooting to recovery to avoid this error.
Click to expand...
Click to collapse
On encryption:
https://wiki.archlinux.org/index.php/Disk_encryption
(not related to nexus, other then it explains encryption, and nexus is encrypted)
You don't need to disable encryption, but obviously since you have your phone set up to require a pattern supply the decryption key to the system, and your booting into twrp BEFORE you can supply the key for decryption... twrp is not going to have any way to read the encrypted partition. Just turn the security off before rebooting to recovery.
Alternatively you can look up threads here on decrypting your phone, and follow those instructions. You will get a very minor performance boost too... but it does mean that if your phone is lost or stolen your data is a little more accessible.
scryan said:
No.
And CM comes with its own kernel, that does not force encryption.
The kernel is not "encrypted" or "decrypted", the stock kernel forces encryption, others don't. But if your encrypted, you are encrypted until you reformat userdata (obviously this wipes phone) so that it is not encrypted.
On encryption:
https://wiki.archlinux.org/index.php/Disk_encryption
(not related to nexus, other then it explains encryption, and nexus is encrypted)
You don't need to disable encryption, but obviously since you have your phone set up to require a pattern supply the decryption key to the system, and your booting into twrp BEFORE you can supply the key for decryption... twrp is not going to have any way to read the encrypted partition. Just turn the security off before rebooting to recovery.
Alternatively you can look up threads here on decrypting your phone, and follow those instructions. You will get a very minor performance boost too... but it does mean that if your phone is lost or stolen your data is a little more accessible.
Click to expand...
Click to collapse
Thanks. I hope to figure this all out tonight.
tjlmbklr said:
Thanks. I hope to figure this all out tonight.
Click to expand...
Click to collapse
The thread on it is a little confusing IMO, maybe just me.
Just remember encryption is about how the data is stored on the partition NOT a setting in the kernel. The kernel only comes into play because the kernel used stock on the nexus 6 has code to check if you are using encryption, and if you are not it forces you to encrypt your data before it boots.
So step one is make sure you have a kernel that does not force encryption. I have not seen a 3rd party nexus kernel with encryption set to enforced, that would be weird.
Step two is to actually go ahead and make your user data partition not encrypted. This has to be done by reformating in fastboot, see tutorial thread for commands. When you reformat, by default the partition will not be encrypted.
Just make sure that when you an update you don't flash the stock kernel and boot, because this will wipe your device when it forces you to encrypt (You could probably power down or cancel some how? Have never tried...)
This would most likely happen if you ran stock, and you fastboot flashed a new system and boot (boot contains kernel)
Alternatively, don't mess with any of this. You don't need to be unencrypted to mount your data in recovery, you just need to set up security in android to not require any kind of pin to boot (I used to just turn unlock to swipe instead of pattern before I wanted to use recovery). There is some performance lost with encryption, but they vastly improved encrypted performance with 5.1.1, and not being encrypted only gives you a tiny bump in performance. just A LITTLE more snappy imo.
scryan said:
The thread on it is a little confusing IMO, maybe just me.
Just remember encryption is about how the data is stored on the partition NOT a setting in the kernel. The kernel only comes into play because the kernel used stock on the nexus 6 has code to check if you are using encryption, and if you are not it forces you to encrypt your data before it boots.
So step one is make sure you have a kernel that does not force encryption. I have not seen a 3rd party nexus kernel with encryption set to enforced, that would be weird.
Step two is to actually go ahead and make your user data partition not encrypted. This has to be done by reformating in fastboot, see tutorial thread for commands. When you reformat, by default the partition will not be encrypted.
Just make sure that when you an update you don't flash the stock kernel and boot, because this will wipe your device when it forces you to encrypt (You could probably power down or cancel some how? Have never tried...)
This would most likely happen if you ran stock, and you fastboot flashed a new system and boot (boot contains kernel)
Alternatively, don't mess with any of this. You don't need to be unencrypted to mount your data in recovery, you just need to set up security in android to not require any kind of pin to boot (I used to just turn unlock to swipe instead of pattern before I wanted to use recovery). There is some performance lost with encryption, but they vastly improved encrypted performance with 5.1.1, and not being encrypted only gives you a tiny bump in performance.
Click to expand...
Click to collapse
LeanKernel decrypt is an option as it should be in all Kernels and is one of the better ones. The top kernel developers make it an option. Many noobs post unencrypted kernels where they only change the ramdisk and there is no other option. Can have performance and encryption as you say especially with the Google code updates.
prdog1 said:
LeanKernel decrypt is an option as it should be in all Kernels and is one of the better ones. The top kernel developers make it an option. Many noobs post unencrypted kernels where they only change the ramdisk and there is no other option. Can have performance and encryption as you say especially with the Google code updates.
Click to expand...
Click to collapse
Super random and unrelated plug for leankernel, but OK thanks. :good:
There are plenty of popular kernels, I have found Zen good, many like Elite and Hells Core as well.

TWRP requires password out of nowhere

Just wanted to update my EX kernel with the kernel manager app, it reboots to TWRP and than requires password.
I've never set a password to TWRP and my PIN doesn't work. It also happened to my brother's 3T, that's so weird.
I would like to know if there is any solution that doesn't include factory reset or re-flashing TWRP.
Thanks from advanced, Lidor.
Update:
I tried to disable the PIN when you boot up the device. Now TWRP doesn't even work. It just shows the logo...
Guess I will have to re-flash TWRP... Just tell me if I am right.
HeroPlane said:
Just wanted to update my EX kernel with the kernel manager app, it reboots to TWRP and than requires password.
I've never set a password to TWRP and my PIN doesn't work. It also happened to my brother's 3T, that's so weird.
I would like to know if there is any solution that doesn't include factory reset or re-flashing TWRP.
Thanks from advanced, Lidor.
Update:
I tried to disable the PIN when you boot up the device. Now TWRP doesn't even work. It just shows the logo...
Guess I will have to re-flash TWRP... Just tell me if I am right.
Click to expand...
Click to collapse
Hmm random encryption?
sakumaxp said:
Hmm random encryption?
Click to expand...
Click to collapse
I guess so.
My TWRP is just useless now.
HeroPlane said:
I guess so.
My TWRP is just useless now.
Click to expand...
Click to collapse
I guess factory reset and then start from scratch? IDK what else you can do
Try reflash twrp to yr phone.
If you are on oxygen os twrp will take time to load (without pin enabled) as OOS uses f2fs format which is relatively newer format and allegedly considered better than more traditional ext4 format
So if twrp logo shows after booting in recovery then wait for sometime (can take upto 10 min)

[Solved / Fixed ]Cannot decrypt the phone after flashing the flyme build

Hi ,
I am not a noob, but yesterday out of curiosity flashed the flyme build in the unified section. However, after the TWRP reboot to system, it did not boot. So tried to reboot the recovery and success. But the villian was there, encryption password. I tried giving my phone PIN, it said wrong password.
After half an hour, i installed the stock image(3.5.1) using the msm tool. Well it booted fine and phone is usable. Unlocked the bootloader and flashed the latest TWRP,.
The villian is back, asking for password. Now it is taking any password, always say wrong password. Ok in case i skip the decrypt screen, i cannot access the sdcard to flash new rom.
Is this the end of story of my op3t?
Have you tried "default_password"?
Didgeridoohan said:
Have you tried "default_password"?
Click to expand...
Click to collapse
Tried everything. The phone boots into OOS 3.5.1 after msm tool flash without password. Even it behaves very well. Only after the TWRP installation. It is stuck for password. I think its end of story.
Prashanthme said:
Tried everything. The phone boots into OOS 3.5.1 after msm tool flash without password. Even it behaves very well. Only after the TWRP installation. It is stuck for password. I think its end of story.
Click to expand...
Click to collapse
Then I don't know... Usually if TWRP suddenly starts asking for a password without having set one, using "default_password" will work.
You could try flashing a kernel that disables forced encryption and then format data to unencrypt.
You have to make sure to restore system to the version using the same encryption libraries as used the last time you could decrypt the data partition. If all fails you will have to format your data partition and loose it all.
pitrus- said:
You have to make sure to restore system to the version using the same encryption libraries as used the last time you could decrypt the data partition. If all fails you will have to format your data partition and loose it all.
Click to expand...
Click to collapse
I have already lost the data. TWRP not allowing me to enter the sdcard storage to flash anything. Can u brief me how to format the data partition.
Just bootup phone into fastboot mode from the unlocked bootloader menu, then connect to PC and run "fastboot format userdata" from a path with either fastboot in or anywhere of you've added the folder with fastboot in you PATH variable.
pitrus- said:
Just bootup phone into fastboot mode from the unlocked bootloader menu, then connect to PC and run "fastboot format userdata" from a path with either fastboot in or anywhere of you've added the folder with fastboot in you PATH variable.
Click to expand...
Click to collapse
Did this. But after should i flash the stock image again? Because system is not booting and stuck in oneplus logo.
How about fastboot erase options?
I disabled encryption one year ago to avoid this problem, and therefore have never experienced it. But why don't you do a compete MSM restore? That should restore even the data partition.
pitrus- said:
I disabled encryption one year ago to avoid this problem, and therefore have never experienced it. But why don't you do a compete MSM restore? That should restore even the data partition.
Click to expand...
Click to collapse
Let me try once i go home and update u. Thanks for the response..
Will format the data from fastboot. and flash the stock image. Hope this works.
Finally happened to work.
Installed a different version twrp made the trick. But this time i erased the recovery and flashed again. After that wiped all the data and then sideloaded the rom from adb and it did the trick..
pitrus- said:
I disabled encryption one year ago to avoid this problem, and therefore have never experienced it. But why don't you do a compete MSM restore? That should restore even the data partition.
Click to expand...
Click to collapse
Can you please tell me how you disabled encryption?
Vidicgapi said:
Can you please tell me how you disabled encryption?
Click to expand...
Click to collapse
You do this by flashing the latest no-verity-opt-encrypt zip file after formatting the data partition and also after each update of the OS.
https://build.nethunter.com/android-tools/no-verity-opt-encrypt/no-verity-opt-encrypt-5.1.zip

Decryption problem!! Help!

Hello guys ,
i am a newbie, i wanted to go for custom rom lineage os for op3t since i was fascinated by my friend's customisation.
i am in a stock rom with december patch 2017 updated.
i went to install twrp and headache started where i ended up decryption problem.
i havent set any password for twrp but it prompts for password. tried and tired of other bluesparks custom twrp also
before i go ahead with format/erase data (everything) i have a question can i able to decrypt mounted storage ??
none of the posts i found have clearly mentioned .. i tries updated twrp from webiste also but of nos usee
anybody's kind enough to explain procedures to be followed
Thx in advance
If TWRP requires you to insert a PW when you haven't one, try "default_password".
try the commands
fastboot format userdata
fastboot format cache
fastboot format system
fastboot erase boot
fastboot reboot
then reboot phone to recovery by pressing the volume keys and select recovery.
If you're able to boot into system, go to Settings > Security and set a password. You will be prompted then whether you want to use this password during boot, select Yes. This way TWRP should accept the password.
ersandeepkr said:
try the commands
fastboot format userdata
fastboot format cache
fastboot format system
fastboot erase boot
fastboot reboot
Click to expand...
Click to collapse
Your tip be like: destroy most partitions on the phone and reboot.
Why even erase boot? Never do this.
Anusha Rao said:
Hello guys ,
i am a newbie, i wanted to go for custom rom lineage os for op3t since i was fascinated by my friend's customisation.
i am in a stock rom with december patch 2017 updated.
i went to install twrp and headache started where i ended up decryption problem.
i havent set any password for twrp but it prompts for password. tried and tired of other bluesparks custom twrp also
before i go ahead with format/erase data (everything) i have a question can i able to decrypt mounted storage ??
none of the posts i found have clearly mentioned .. i tries updated twrp from webiste also but of nos usee
anybody's kind enough to explain procedures to be followed
Thx in advance
Click to expand...
Click to collapse
Password it ask for is the one you have set for lockscreen in last OS you used, just enter the same pin or password you used in last OS and it will decrypt
If default password doesn't work you need to wipe internal storage using above commands given by @ersandeepkr
Anusha Rao said:
Hello guys ,
i am a newbie, i wanted to go for custom rom lineage os for op3t since i was fascinated by my friend's customisation.
i am in a stock rom with december patch 2017 updated.
i went to install twrp and headache started where i ended up decryption problem.
i havent set any password for twrp but it prompts for password. tried and tired of other bluesparks custom twrp also
before i go ahead with format/erase data (everything) i have a question can i able to decrypt mounted storage ??
none of the posts i found have clearly mentioned .. i tries updated twrp from webiste also but of nos usee
anybody's kind enough to explain procedures to be followed
Thx in advance
Click to expand...
Click to collapse
I would definitely not wipe anything. I would first:
Set my password again (you can use the same one you are currently using) in Settings>Security>Screen lock and select the Require password to start option.
Then boot into TWRP and see if your password decrypts the data.
I would also only use either the latest official TWRP from https://dl.twrp.me/oneplus3/
Or the Blu Spark v8.61 TWRP from https://forum.xda-developers.com/on...vice-development/kernel-t3404970/post67463496
Sent from my OnePlus3T using XDA Labs
przemcio510 said:
If you're able to boot into system, go to Settings > Security and set a password. You will be prompted then whether you want to use this password during boot, select Yes. This way TWRP should accept the password.
Your tip be like: destroy most partitions on the phone and reboot.
Why even erase boot? Never do this.
Click to expand...
Click to collapse
I have used above commands without any problem.
The most dangerous command that will destroy your phone is
"fastboot erase bootloader"
and not the boot.
ersandeepkr said:
The most dangerous command that will destroy your phone is
"fastboot erase bootloader"
and not the boot.
Click to expand...
Click to collapse
Still you shouldn't provide such tips to other, espiecially those less skilled.
przemcio510 said:
Still you shouldn't provide such tips to other, espiecially those less skilled.
Click to expand...
Click to collapse
ok

data decryption error

Hello, I installed AOSIP, everything works great but into twrp I can't decrypt data...
I've tried twrp R2.3.2.1 and R2.3.2.5, it says wrong password... I use the pin code of the ROM...
What can I do?
lcarolo said:
Hello, I installed AOSIP, everything works great but into twrp I can't decrypt data...
I've tried twrp R2.3.2.1 and R2.3.2.5, it says wrong password... I use the pin code of the ROM...
What can I do?
Click to expand...
Click to collapse
Hey, the same is happening to me since today, i'm looking why but i can't find the reason its drivin' me crazy i can't setup encryption...
edit : couldn't achieve to unlock TWRP with a custom ROM encryption, stock ROM encryption with MIUI is working fine tho... If someone has any infos
lcarolo said:
Hello, I installed AOSIP, everything works great but into twrp I can't decrypt data...
I've tried twrp R2.3.2.1 and R2.3.2.5, it says wrong password... I use the pin code of the ROM...
What can I do?
Click to expand...
Click to collapse
@Displayer
Your data from the last install appears to be encrypted. If you have a backup the easiest way to resolve the issue is to format your storage. You could also use the All in One tool and use its encryption removal option. Please keep in mind that it will wipe out all of your memes, so hopefully those are backed up.
tsongming said:
@Displayer
Your data from the last install appears to be encrypted. If you have a backup the easiest way to resolve the issue is to format your storage. You could also use the All in One tool and use its encryption removal option. Please keep in mind that it will wipe out all of your memes, so hopefully those are backed up.
Click to expand...
Click to collapse
I mean, i formatted to have a custom ROM booting, encrypting my data. I can use the phone, my pin code works in android but it's impossible to decrypt with TWRP...
Édit : found that message from argraur on telegram, so basically we have to wait for an updated twrp ? "Android release 9.0.0_r36 (r37) with May security patch has updated FBE encryption that breaks decryption in TWRP."
Displayer said:
I mean, i formatted to have a custom ROM booting, encrypting my data. I can use the phone, my pin code works in android but it's impossible to decrypt with TWRP...
Édit : found that message from argraur on telegram, so basically we have to wait for an updated twrp ? "Android release 9.0.0_r36 (r37) with May security patch has updated FBE encryption that breaks decryption in TWRP."
Click to expand...
Click to collapse
That doesn't even make sense. Twrp will not decrypt your phone.
Install Miui again, backup your data, to your desktop, by manually dragging your files over.
Go here and download DM-VERITY, FORCED ENCRYPTION, AND DISC QUOTA DISABLER you will use it to flash between updates or for dirty flashing Miui updates.
Next go back to TWRP the choose format and type yes reboot to TWRP ( you will se a message that says you have no OS are you sure?) Yes, reboot to TWRP
TWRP is not your issue, go read
and read the first comment here
Format storage, or wait for the TWRP and you still need to the format storage, Again a TWRP update will not resolve the issue. We have all had this exact issue.
I'm using another workaround:
With the all in one tool, we can flash .zip from a PC.
So I could install a custom kernel file from my pc directly into phone without loosing data.
Annoying thing is that I need the PC... Can't flash files that are in phone memory... Not such a big issue...
Another question, can I make a backup from the PC? Used to do it via twrp, but it is not safe with that issue...
lcarolo said:
I'm using another workaround:
With the all in one tool, we can flash .zip from a PC.
So I could install a custom kernel file from my pc directly into phone without loosing data.
Annoying thing is that I need the PC... Can't flash files that are in phone memory... Not such a big issue...
Another question, can I make a backup from the PC? Used to do it via twrp, but it is not safe with that issue...
Click to expand...
Click to collapse
Today i found a TWRP with decryption for may patch working for me here : https://forum.xda-developers.com/mi-8/development/recovery-unofficial-twrp-recovery-t3893823
I think u can pull img if i remember well but now its working for me
Displayer said:
Today i found a TWRP with decryption for may patch working for me here : https://forum.xda-developers.com/mi-8/development/recovery-unofficial-twrp-recovery-t3893823
I think u can pull img if i remember well but now its working for me
Click to expand...
Click to collapse
This twrp is working! Thanks a lot!

Categories

Resources