First, I'll link all of the software packages here at the top so they're easy to find.
Software:
VirtualBox
home page and
Windows 5.2.12 installer
Android x86
home page and
v7.1-r2 32-bit install ISO
NOOK Android app
here
Windows File Checksum Integrity Verifier
description (KB841290) and
direct link
Android "platform-tools"
description and
Windows installer
Sqlite3
home page and
Windows command line tools.
Theory of operation:
If you already have an Android device with the NOOK app and have adb installed, the downloaded book files are stored in the following locations:
Prior to version 4, book files were stored in /sdcard/Nook/Content.
adb pull /sdcard/Nook/Content will retrieve all currently downloaded books. This location doesn't require root access and the books can be retrieved from a device that hasn't been rooted.
Version 4 and later (current version is 4.9.1.15) stores them in "/data/data/bn.ereader/files/B&N Downloads/Books". This directory does require root access.
Using adb:
Download Google's "platform-tools" for Android. The package is just a zip file containing command-line executables. Extract the directory somewhere. I created the "C:\Command" directory that I use as a dumping spot for command-line tools. It's convenient to
add the directory to your path, in my case "C:\Command\platform-tools".
If you're using a separate Android device, it needs to be configured to allow adb access. This is turned off by default. For recent versions of Android, go into "Settings" and tap "About phone" or "About tablet". Go to the bottom and find the line labeled "Build". Tap that line something like seven or eight times. Eventually, you'll get a message that congratulates you on being a developer and a new "Developer options" menu item will appear in Settings. In the Developer options, find the toggle named "USB debugging" and enable it.
All adb commands are invoked by typing "adb
<command>" at the Windows command prompt. To make sure it works, connect your device using USB and type "adb shell". You should get a Unix command prompt. Type "exit" at the prompt to return to Windows. If it doesn't work, you may need to download drivers for your device.
The two commands that you'll need to retrieve your books are "adb root" and "adb pull". Typing "adb root" at the Windows prompt will restart the adb server on your Android device with root privileges. "adb pull" will retrieve either a single file or an entire directory recursively. In the Windows command prompt, change to a directory for your book files and type the following:
Code:
adb root
adb pull "/data/data/bn.ereader/files/B&N Downloads/Books"
This will pull all the book files that have been downloaded into the current Windows directory. They will be named with the ISBN number and a version ("9780062192165_epub.v2.epub").
Import these into Calibre. The decryption key for Android may be different than the one for NOOK for PC. My Android key is actually my original NOOK for PC key, even though the NOOK for PC key has since changed. It's possible that you already have the correct key in Calibre. In case it's not, I put instructions for retrieving the Android key in a comment at Alf's blog
here.
Getting a clean NOOK app
The best way to get the NOOK app is to download it from Google Play. If you don't have a Google account or if you want an older version, there are various places to download them. Since it's a copyright violation for other sites to host the APK, I won't link to any, but I won't judge you, either. The big problem is that it's too easy for a malicious site to modify the APK, sign it with a new key and upload it. You can check that the file is original by verifying a checksum. Download the "File Checksum Integrity Verifier" installer from Microsoft and run it. It will extract "fciv.exe" to the directory of your choice. I suggest "C:\Command"

. Run "fciv.exe -both NOOK-4.9.1.15.apk" (or whatever your APK file is named). You should see this output:
Code:
//
// File Checksum Integrity Verifier version 2.05.
//
MD5 SHA-1
-------------------------------------------------------------------------
eeda00bca6d52776c1f515cc08fe0417 ffb3b878cad78b7110823334bc0d6c620a9c99f2 nook_4.9.1.15.apk
The numbers you get should match mine exactly. If they don't, you have a modified APK or a different version. If you have a different version, let me know and I can download it from Google Play and post updated checksums.
If you're downloading a previous version, I recommend installing the new version first, either from Google Play or after verifying the checksum. Once an app has been installed, any upgrade (or downgrade) must be signed with the same encryption key or the installation will fail. If the installation of the previous version fails, you know it's been modified and signed by some hacker.
You can install an APK using adb with the command "adb install NOOK-4.9.1.15.apk" (or whatever your file is named). To install an older version, use "-r" to allow a replacement and "-d" to allow a downgrade. So if you already have a verified version 4.9.1.15 installed and you got version 3.5.3.5 from somewhere, "adb install -r -d NOOK-3.5.3.5.apk" will install it.
Keep in mind that it's possible that that the old versions may stop working after the 29th when B&N rolls out the TLS/SSL update.
Installing Android 7.1 in VirtualBox:
I keep an Android-x86 virtual machine to retrieve my books. I find it more convenient than using an actual device, but VirtualBox wasn't really geared to run Android, so it's quirky and a bit of a pain. I'll leave it up to you to decide which is easier. Android-x86 is rooted out of the box, so that part's taken care of.
Download the VirtualBox installer and install it. There are a number of add-ons that can be installed that, for example, allow using USB devices in the virtual machine. These aren't necessary for the NOOK, so you can just use the defaults.
Download the Android-x86 7.1-r2 ISO image. VirtualBox can use CD images in its virtual CD drives, so you don't need to burn the image to a CD.
Run VirtualBox and create a new virtual machine. For the machine type, select "Linux 2.6 / 3.x / 4.x (32-bit)". Now change the memory from the default 512 MB to something like 2048 MB or more if you have it. Later versions of Android are serious resource-hogs. It's actually sluggish on my laptop. Unfortunately, the latest version of NOOK no longer works with version 5.1 of Android-x86, which was a bit more friendly with resources. Select "Create" and make the virtual hard drive. The default 8 GB is fine, but you can make it larger if you want.
After the virtual machine is created, click on the "Settings" tab. Go to "System" and "Processor". If you have multiple CPUs available, make it at least 2. Four is best.
Click on the "Storage" tab and then click the CD-ROM icon labeled "Empty". Another CD-ROM icon will appear to the right. Click on that, select "Choose virtual optical disk" and navigate to the Android-x86 ISO image that you downloaded.
The network is the wonkiest part of the whole thing. The easiest network setup is to use "bridged adapter". That means that the virtual machine gets a virtual network card that connects directly to your router. That also requires that you have a router. The benefit to this approach is that you can connect to the internet and adb from your host computer at the same time.
If you don't have a router, then select NAT. We'll have to do some funny business to use adb, but we'll get to that later. Next go to the "Preferences" menu option for VirtualBox and click "Network". Click the "NAT Networks" tab and if there isn't one listed, create it. The defaults are fine. Do the same for "Host-only Networks".
Now make sure your virtual machine is selected and click "Show" to boot the machine. After a few seconds, it should boot to the Android-x86 CD menu.
- Select "Installation - Install Android-x86 to harddisk"
- Give it a minute to think (for some reason, it stalls here for a half-minute or so)
- Select "Create a new partition"
- "Do you want to use GPT?" No
- New->Primary->[default]
- Bootable ("Flags" says "Boot")
- Write (type "yes" at "Are you sure?")
- Select sda1 to install Android to
- Format ext4 (Are you sure? Yes)
- Install GRUB? Yes
- /system read-write? Yes
When it's done, you'll get a menu asking you to reboot or run Android-x86. Instead, go to the "Machine" menu of VirtualBox, select "Close" and "Power off". Click "Settings" for your virtual machine, click "Storage" and remove the virtual CD from the virtual drive.
Now start the virtual machine again. You'll eventually be presented with a "Welcome" screen.
VirtualBox has a kind of "mouse integration" that allows you to move the mouse seemlessly in and out of the virtual machine. It doesn't work right with Android. Go to "Input" and click "Mouse Integration" to turn it off. Now, click in the virtual machine window to use the mouse and tap the right CTRL key to leave it.
Give it a minute or two to finish setting up the drive, then set up the Android device how you want. If you don't want to add a Google account, then you'll need to get the NOOK app from somewhere else (I retrieved it from my phone) and install it.
I recommend giving the new Android installation a few minutes to itself and its network connection. It will silently install newer versions of several Google apps and can cause problems while they're installing.
Note: I'm actually having trouble downloading my books at the moment using the virtual machine after upgrading to 4.9 from 4.6 (it works fine from my phone and tablet), so I'm going to try to resolve that before I go on, in case something has radically changed. Anyway, I hope you have enough to go on for the moment.