Extract Binary File from Palm *.pdb format


Recommended Posts

I've been scouring the net for almost three days trying to figure out how to extract a binary file from a Palm PDB file.

Here's the back story. I'm trying to recover/flash a Treo 755p manually, and I need to extract some binary files out of their *.pdb containers. I tried WavePDB, but it said the files were not in it's own format, but it was able to read the PDB headers and tell me what the database type was, who the creator was, and how many records it has.

Anyone here know how to extract a binary file (not text, not an ebook) from a Palm PDB file?

I eventually found T3.jar on Shadowmite's forum, and after some retooling, I made it a little more dynamic. For those that come after me looking for this solution, simply compile this java code and run it in a directory with the PDB files.

/***
 * T3_allfiles
 * based upon T3_APR.java from Shadowmite's forum
 *
 * This file will extract a binary file from it's
 * Palm PDB prison.  Just drop this in the directory
 * that contains the *.pdb files, and run it.  It'll
 * get them all.  Well, mostly.  See next.
 *
 * This file is NOT made to extract the rom image.
 * Use Grack's RomTool for that.
 */

import java.io.*;

public class T3_allfiles
{
	/* Toggle this to show step-by-step console debug */
	static boolean debug = true;



	public static void main( String[] args ) throws Exception 
	{
		File directory = new File( "./" );
		String[] files = directory.list( new PDBfilter() );

		for( String individualFile: files )
		{
			/* trim .pdb from filename so we can export the original file */
			zipOut = new BufferedOutputStream( new FileOutputStream( individualFile.substring(0,individualFile.length()-4) ) );
			pdb2(individualFile);
			zipOut.close();
		}
	}



	/* Starting here, this is taken verbatim from T3_APR.java */
	static OutputStream zipOut;

	static void pdb2(String file) throws Exception 
	{
		RandomAccessFile in = new RandomAccessFile(file, "r");
		in.skipBytes(76);
		int numRec = in.readShort();
		int[] toc = new int[numRec];
		for (int i=0; i<numRec; ++i) 
		{
			toc[i] = in.readInt();
			in.readInt();
		}
		for (int i=0; i<numRec; ++i) 
		{
			in.seek(toc[i]+4);
			int blksize = in.readInt();
			byte[] buf = new byte[blksize];
			in.read(buf);
			zipOut.write(buf);
		}
	}
	/* This is the end of T3_APR.java */
}



class PDBfilter implements FilenameFilter
{
	public boolean accept( File dir, String name )
	{
		if ( new File( dir, name ).isDirectory() )
		{
			return false;
		}

		name = name.toLowerCase();
		return name.endsWith( ".pdb" );
	}
}

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • hey guys its not counterfeit. i did test its ok needs formatting but how do i do that i need to go in dos and disk Disk Management anyone know step by step please 
    • The first link on the github page gives me a very, very red page warning me about phishing........
    • Hey Nick! 👋 No worries at all — you're not alone in this, and it's great you're asking for help. Let me walk you through a simple, step-by-step fix using the tool mentioned on that AOMEI Partition Assistant guide — it really does the trick for many people with this exact issue! ✅ Here’s how to restore your USB back to full 256GB on Windows 11: Download & Install AOMEI Partition Assistant Go to the link you shared: AOMEI Partition Assistant and click the Download Freeware button. Insert your USB stick (Sandisk Ultra 256GB) Make sure it's properly connected. Wait for the system to detect it. Launch AOMEI Partition Assistant Once open, you'll see all your connected drives listed. Locate your USB Drive Look for the one that says something like Disk X – Removable and shows only 3.1GB or so. Right-click on your USB Drive’s Partition Then select Delete Partition → confirm the deletion. Now, right-click on the unallocated space (it should now show full unallocated capacity) Choose Create Partition → format it as FAT32 or exFAT (recommended for larger drives) → click OK. Click “Apply” in the top left corner Then hit Proceed to execute the pending operations. Wait a bit... and boom! 🎉 Your USB should now be restored to its full 256GB capacity!
    • When Facebook bought Beat Saber, they promised exactly this would never happen. Facebook can’t not lie.
  • Recent Achievements

    • First Post
      Fuzz_c earned a badge
      First Post
    • First Post
      TIGOSS earned a badge
      First Post
    • Week One Done
      slackerzz earned a badge
      Week One Done
    • Week One Done
      vivetool earned a badge
      Week One Done
    • Reacting Well
      pnajbar earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      713
    2. 2
      ATLien_0
      279
    3. 3
      Michael Scrip
      209
    4. 4
      +FloatingFatMan
      201
    5. 5
      Steven P.
      131
  • Tell a friend

    Love Neowin? Tell a friend!