Wiping SATA drive

I've been wondering if I could hook up a SATA hard drive to an Arduino board to wipe the hard drive rather than tie up a computer for several hours (sometimes an entire day) to overwrite the data on a drive.

According to Digital Forensics and Incident Response (DFIR) Training, Courses, Certifications and Tools | SANS Institute you should be able to issue a "secure erase" command to some hard drives and it will automatically erase, even if its interrupted it will resume next chance it gets.

My question is how difficult would it be to program an Arduino to issue the "secure erase" command to a SATA hard drive or is it even possible? I'm guessing it shouldn't be too horribly difficult as I don't need to spin the platters or read data off the disk or anything like that. However, I'm really new to this sort of thing so I don't know where to go to get the documentation needed or anything like that, so if someone could point me in a direction as well it would be much appreciated.

The hardware interface seems like a major problem. How do you propose to connect the Aduino to a SATA drive?

I wasn't sure, I was hoping I could just hack up a SATA cable and connect the right wires to the right pins on the Arduino board per some specification somewhere. But again, I'm very new to this area and I could very likely be way off.

On second thought, I have a SATA to USB adapter, I might be able to do a USB shield for the Arduino and interface that way. What do you think?

I might be able to do a USB shield for the Arduino and interface that way. What do you think?

I think that if you have to ask, the answer is no. Writing a SATA driver for the Arduino will not be a trivial task. (Assuming that it is even possible).

I was hoping I wouldn't need to write an entire driver for it, just enough to send the right commands to the drive.

After more thinking though, I'll probably use a Rasberry Pi board running Linux once they come out.

Thanks for the responses.

A surplus PC could be used, too. If you really need to wipe SATA drives, it implies that they are being removed from computers. You don't say why, but it would seem that the only reason to remove and wipe was because the PC was no longer needed. Just keep one of them to use to wipe all drives.

The SATA to USB adapter will present the USB mass storage interface. Even if you could write a driver it is unlikely that you could send the drive specific commands required to a secure erase.

Hard drive-based devices

Many modern hard drives support additional advanced commands, such as Native Command Queuing, which may increase performance, Secure Erase, which allows all the data on the drive to be securely erased, and S.M.A.R.T., which allows a computer to measure various indicators of drive reliability. These exist as extensions to the basic low-level command sets used by hard drives, such as SCSI, Serial ATA, or Parallel ATA.

These features do not work when hard drives are encapsulated in a disk enclosure supporting the USB mass storage interface. Some USB mass storage interfaces provides a generic interface which only provides basic read/write commands, as outlined above. This works perfectly well for basic data transfer using hard drive-based devices, however it means that there is no simple way to send advanced, device-specific commands to USB mass storage devices (although devices may create their own communication protocols over the USB-standard "control interface").

I really would like to wipe hard drive (sata or ide) with a microcontroller. As previous post It's not about how to do it or trying to find a workaround solution. Sending command to secure delete an hardrive or in case the hard drive doesnt support that, to just fill it with dummy data would be so great. That kind of solution for sure exist, just check this http://www.wiebetech.com/products/Drive_eRazer_Ultra.php it's a small box containing a microcontrolleur that connect to a drive and format it/wipe it. On website of western digital we can find commands index to launch the secure destroy command. They are many devices like the one on the link to do that but those devices cost 250usd at least ! I think this is way too expensive. Buying one and doing reverse engineering would be nice however I cant afford such device :frowning: So please if someone has any ideas how this can be done you are welcome to help us/me.
I found this AVR IDE interface seems to have some stuffs to look at.
A board with linux embedded seems to me way too complicated for just sending low level commands, there is for sure a simple way to do it on serial ata. shouldnt be much more complicated than sending commands to sd cards I guess... thank you
*add: it seems for around 30 usd iMX233-OLinuXino-MAXI - Open Source Hardware Board we are going to be able to buy a linux embedded device with 64mo ram and 545mhz cpu ! that should do the trick with some chip to interface it to drive.

Do you really need to wipe so many hard drives that it matters? If so: why not just setup some cheap computer for the wiping? Anything with a sata interface will do, so why invest the effort for a microcontroller based solution?


log in and have fun.

Hook up your arduino to a servo with a strong electramagnet. Press button to activate electromagnet. instant wipe action!

I have three wiping methods:
eSATA external dock that the drive slides into. Works great, takes a few hours / days to wipe most drives 3x. No big deal, any computer can do it.
Hand the drive to a friend in an industry where these sorts of drives are needed. For example, someone building a big RAID array for medical research. Sooner than later, the data will have been overwritten 100x.
8lb Maul, i.e. the kinetic approach. A little messy but very effective. Wear safety goggles and gloves to pick up the remainders.

Hand the drive to a friend in an industry where these sorts of drives are needed. For example, someone building a big RAID array for medical research. Sooner than later, the data will have been overwritten 100x.

Nobody in industry with a sane mind will put a used drive of basically unknown origin into a RAID array.

[quote author=Udo Klein link=topic=81616.msg780635#msg780635 date=1335977416]
Nobody in industry with a sane mind will put a used drive of basically unknown origin into a RAID array.[/quote]
If you say so, it must be true. But I was able to repurpose ten 1TB perfectly-good drives that way, which was better than trashing them. I did wipe them before I handed them over but only once. AFAIK, they're still happily spinning away in a research lab.

"Research lab" != "Industry". I still can not believe that someone in an industrial environment would actually use used drives to setup a raid array. Not for production purposes of course. I can believe that in some "industrial" environment there are places where you are free to experiment and there you can do bascially whatever you want. But for a production setup this is just ridiculous.

Not everyone has infinite funding. The hardware to house the drives these days is usually much less expensive than the drives themselves... It's relatively trivial to build a massive array based on FreeZFS and a old CPU and two or three SATA controllers, for example. Given how many institutions are run (labor is largely free, utilities are free, but it's hard to get funding for new hardware) there are good reasons to run such RAID setups. You can designate lots of hot spares, if you like.

With enough redundancy and the right application, even consumer-grade hard drives are frequently adequate for the task, no matter how much the hard drive companies try to cripple them, downgrade their specifications, etc. vs. the "enterprise-grade" versions of the same drives. After the 5 year warranty is up, most drives are either dead or obsolete anyway, at least in my experience. The only older drives I keep holding onto are in old CPUs that I have yet to throw out for sentimental reasons.

BTW, I never specified "industry"... I wrote "in an industry where..." - these sentence contents are not equivalent, especially in the light of the later qualifier, i.e. medical research that has a need for large arrays due to the data sets being generated. Cheers.

Point taken. Seems we just have a different idea of "industry". If I hear "industry" I do not think of "labor is largely free". I think of hardware is significantly cheaper than labor.