Skip to content

Instantly share code, notes, and snippets.

@CocoaBeans
Last active October 4, 2015 15:37
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CocoaBeans/2661804 to your computer and use it in GitHub Desktop.
Save CocoaBeans/2661804 to your computer and use it in GitHub Desktop.
Corrupt journal and bitmap of a given disk identifier
#!/bin/bash
#########################################################################################
###
### DirectoryDestoryer.command
### Corrupt journal and bitmap of a given disk identifier
###
### Copyright (c) 2013 Kevin Ross. All rights reserved.
###
### Redistribution and use in source and binary forms, with or without modification,
### are permitted provided that the following conditions are met:
###
### Redistributions of source code must retain the above copyright notice, this list
### of conditions and the following disclaimer.
### Redistributions in binary form must reproduce the above copyright notice,
### this list of conditions and the following disclaimer in the documentation
### and/or other materials provided with the distribution.
###
### THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
### AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
### DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
### ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
### (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
### LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
### ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
### USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
###
#########################################################################################
DISKID=$1
DISK_PATH="/dev/r${DISKID}"
if [ ! -c "${DISK_PATH}" ]; then
# print usage and exit
echo "Error: Please provide a disk ID for a block character device."
echo "Usage: DirectoryDestoryer.command diskID"
echo "Usage: where diskID is a block character device in /dev"
exit 0
fi
diskutil unmount "${DISKID}"
echo "Corrupting directory structure..."
dd if=/dev/random of="${DISK_PATH}" oseek=756 count=5120
## Try to remount the volume to see if it worked. It is expected to fail.
echo "Attempting to remount ${DISKID}..."
diskutil mount "${DISKID}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment