About | ACP | Buy | Forum | Industry Watch | Learning Curve | Search | Twitter | Xnews
Home » Learning Curve

A Tale of Woe II

There's a rumour about - again.


This is a tale of woe. And of panic. And of helpful people flailing about in the darkness with NFC. It's a tale of despair but also a tale of hope.

When historians refer back to this incident they'll likely call it 'The 2 May Incident'. 2 May is when Kyle aka drumnkyle got into trouble with Apple's trash directory. With only one hour thirty nine minutes left to the day disaster struck. And oddly enough it was Adobe products striking.

Here's a look at the menus of the program harinezumi recommended.


Not a lot to work with. Here's what's inside the application package.

22 items, 111574 bytes, 296 blocks, 0 bytes in resource forks.

~/Documents/Downloads/Force Delete 1.2/.DS_Store
~/Documents/Downloads/Force Delete 1.2/Force Delete.app
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/.DS_Store
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/.DS_Store
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Info.plist
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/MacOS
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/MacOS/Force Delete
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/PkgInfo
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/.DS_Store
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/English.lproj
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/English.lproj/InfoPlist.strings
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/English.lproj/MainMenu.nib
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/English.lproj/MainMenu.nib/data.dependency
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/English.lproj/MainMenu.nib/objects.nib
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/forcedelete.icns
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/Scripts
~/Documents/Downloads/Force Delete 1.2/Force Delete.app/Contents/Resources/Scripts/Force Delete.scpt
~/Documents/Downloads/Force Delete 1.2/Please Readme.rtf

That's 148 KB on disk. Just to force empty the trash. Or as SC68Cal put it:

sudo rm -rf $HOME/.Trash

But as jedik pointed out:

It would be a really useful little application, fast and efficient, but there's a bug: it seems that it *removes* the .Trash folder in the user's home folder (~/.Trash). Doing this, every time after using the utility, a Finder dialog windows appears saying that the file will be deleted immediately. :\ A logout/login proceeding restores the usual Trash functionality.

So maybe that program isn't so good after all. And Kyle never got back to the others so there's no way of knowing how things turned out.

What else can be learned about this application 'Force Delete 1.2'?

  • The great majority of users like it.
  • It was last updated nearly five years ago on 8 September 2002.
  • It's had a total of 23,734 downloads and because of Kyle's woes got two or three more.
  • Some negative comments have been removed - possibly at the behest of the software author.

We can also learn the following.

  • To run properly it's going to have to get the administrator password.
  • But this is an AppleScript based application so there's no way to securely submit this password.
  • It'll submit the password on the 'command line' so interlopers can pick it up and 0WN the machine.
  • 148 KB for a ruddy command line of 24 characters plus Enter is sort of pushing it anyway. Just a bit.

Here's what the AppleScript looks like. Scroll down to offset 00000000000008c9. Then try 0000000000001992. Also note the numerous references to 'need[Aa]uth'.

0000000000000000 FasdUAS 1.101.10
0000000000000056  Force Delete.applescript
0000000000000098  Force Delete
00000000000000f0 /  Created by Zack Schilling on Sun Sep 01 2002.
0000000000000148 :  Copyright (c) 2002 Dangerous Wares. All rights reserved.
00000000000001da .appSshOUnull
00000000000001ef obj
0000000000000256 needauth
0000000000000260 needAuth
000000000000029b true
00000000000002b9 needauth
00000000000002c3 needAuth
00000000000002f9 false
0000000000000318 selection_error
0000000000000357 none
0000000000000375 current_view
00000000000003b1 improper selection
00000000000003dd source_file
0000000000000454 .miscactvnull
0000000000000469 null
00000000000004fe pnam
0000000000000518 brow
000000000000058c cfol
00000000000005b6 brow
00000000000005ee .ascrerr ****
0000000000000603 ****
000000000000064f .sysodlogaskr
0000000000000664 TEXT
000000000000067c /Are you sure you want to force empty the trash?
00000000000006c1 btns
0000000000000732 dflt
0000000000000764 temp
00000000000007bb bhit
00000000000007d5 temp
0000000000000825 .coreclosnull
000000000000083a obj
0000000000000854 cwin
000000000000086d Trash
000000000000089b .sysoexecTEXT
00000000000008b0 TEXT
00000000000008c9 sudo rm -rf $HOME/.Trash
00000000000008f6 badm
000000000000090e boovtrue
0000000000000958 true
0000000000000976 selection_error
00000000000009a8 .ascrerr ****
00000000000009bd ****
0000000000000a36 selection_error
0000000000000a5c false
0000000000000aab sele
0000000000000ac3 alis
0000000000000add source_file
0000000000000b01 .ascrerr ****
0000000000000b16 ****
0000000000000b95 pvew
0000000000000baf cwin
0000000000000bda ecvwclvw
0000000000000c07 true
0000000000000c25 iscolumn
0000000000000c2f isColumn
0000000000000c61 false
0000000000000c80 iscolumn
0000000000000c8a isColumn
0000000000000ca9 .ascrerr ****
0000000000000cbe ****
0000000000000cf1 false
0000000000000d10 iscolumn
0000000000000d1a isColumn
0000000000000d88 iscolumn
0000000000000d92 isColumn
0000000000000daf true
0000000000000e1d cfol
0000000000000e47 cwin
0000000000000e7c alis
0000000000000e96 source_file
0000000000000eba .ascrerr ****
0000000000000ecf ****
0000000000000f0b .sysodlogaskr
0000000000000f20 TEXT
0000000000000f49 File Selection Error:
0000000000000f79 source_file
0000000000000f97 btns
0000000000000fdc dflt
0000000000001026 true
0000000000001044 selection_error
000000000000108d .sysodlogaskr
00000000000010a2 TEXT
00000000000010cb File Selection Error:
00000000000010fb source_file
0000000000001119 btns
000000000000115e dflt
00000000000011a8 true
00000000000011c6 selection_error
0000000000001204 null
0000000000001217 Finder.app
0000000000001256 MACS
000000000000125e alis
000000000000126d Mac OS X
0000000000001295 Finder.app
00000000000012fc CoreServices
0000000000001333 /Mac OS X:System:Library:CoreServices:Finder.app
0000000000001397 &System/Library/CoreServices/Finder.app
000000000000142e selection_error
0000000000001454 false
0000000000001487 forcedeletefile
0000000000001498 forceDeleteFile
00000000000014c6 source_file
0000000000001571 forcedeletefile
0000000000001582 forceDeleteFile
00000000000015b0 source_file
00000000000015fd needauth
0000000000001607 needAuth
0000000000001674 psxp
000000000000168e source_file
00000000000016b1 posix_file
0000000000001720 .sysodlogaskr
0000000000001735 TEXT
000000000000175d :Are you sure you want to force delete the file or folder:
00000000000017b2 posix_file
00000000000017cf btns
0000000000001840 dflt
0000000000001872 temp
00000000000018fa bhit
0000000000001914 temp
0000000000001992 sudo rm -rf "
00000000000019b9 posix_file
00000000000019f5 command
0000000000001a41 needauth
0000000000001a4b needAuth
0000000000001a68 false
0000000000001a88 .sysoexecTEXT
0000000000001a9d TEXT
0000000000001ab7 command
0000000000001af8 .sysoexecTEXT
0000000000001b0d TEXT
0000000000001b27 command
0000000000001b41 badm
0000000000001b59 boovtrue
0000000000001b94 false
0000000000001bb3 needauth
0000000000001bbd needAuth
0000000000001c54 .aevtodocnull
0000000000001c69 alis
0000000000001c83 theobject
0000000000001c8e theObject
0000000000001cd2 needauth
0000000000001cdc needAuth
0000000000001d17 true
0000000000001d35 needauth
0000000000001d3f needAuth
0000000000001dc7 false
0000000000001de6 selection_error
0000000000001e36 thefile
0000000000001e3f theFile
0000000000001e5a alis
0000000000001e74 source_file
0000000000001e9d .ascrerr ****
0000000000001eb2 ****
0000000000001efe .sysodlogaskr
0000000000001f13 TEXT
0000000000001f3c File Selection Error:
0000000000001f6c source_file
0000000000001f8a btns
0000000000001fcf dflt
0000000000002019 true
0000000000002037 selection_error
00000000000020c1 selection_error
00000000000020e7 false
000000000000210a forcedeletefile
000000000000211b forceDeleteFile
0000000000002149 source_file
000000000000219a thefile
00000000000021a3 theFile
00000000000021c0 theobject
00000000000021cb theObject
0000000000002240 asdscriptuniqueidentifier
000000000000225b ASDScriptUniqueIdentifier
0000000000002289 Force Delete.applescript
00000000000022d8 .appSshOUnull
00000000000022ed obj
00000000000022f9 forcedeletefile
000000000000230a forceDeleteFile
000000000000231e .aevtodocnull
0000000000002333 alis
000000000000233f asdscriptuniqueidentifier
000000000000235a ASDScriptUniqueIdentifier
000000000000238c .appSshOUnull
00000000000023a1 obj
00000000000023c6 selection_error
00000000000023df current_view
00000000000023f5 source_file
000000000000240a temp
0000000000002418 iscolumn
0000000000002422 isColumn
0000000000002491 needauth
000000000000249b needAuth
00000000000024a8 .miscactvnull
00000000000024bd null
00000000000024c7 brow
00000000000024d1 pnam
00000000000024db cfol
00000000000024ef btns
00000000000024f9 dflt
0000000000002507 .sysodlogaskr
000000000000251c TEXT
0000000000002526 bhit
0000000000002530 cwin
0000000000002539 .coreclosnull
000000000000254e obj
0000000000002558 badm
0000000000002561 .sysoexecTEXT
0000000000002576 TEXT
0000000000002580 sele
000000000000258a alis
0000000000002594 pvew
000000000000259e ecvwclvw
00000000000025ae forcedeletefile
00000000000025bf forceDeleteFile
000000000000272f forcedeletefile
0000000000002740 forceDeleteFile
000000000000276e source_file
0000000000002795 source_file
00000000000027aa posix_file
00000000000027be temp
00000000000027cc command
0000000000002804 psxp
000000000000280e btns
0000000000002818 dflt
0000000000002826 .sysodlogaskr
000000000000283b TEXT
0000000000002845 bhit
0000000000002851 needauth
000000000000285b needAuth
0000000000002868 .sysoexecTEXT
000000000000287d TEXT
0000000000002887 badm
00000000000028f9 .aevtodocnull
000000000000290e alis
000000000000291a theobject
0000000000002925 theObject
0000000000002948 theobject
0000000000002953 theObject
0000000000002964 thefile
000000000000296d theFile
000000000000297c selection_error
0000000000002995 source_file
00000000000029d5 needauth
00000000000029df needAuth
00000000000029ed kocl
00000000000029f7 cobj
0000000000002a00 .corecnte****
0000000000002a15 ****
0000000000002a1f alis
0000000000002a33 btns
0000000000002a3d dflt
0000000000002a4b .sysodlogaskr
0000000000002a60 TEXT
0000000000002a6c forcedeletefile
0000000000002a7d forceDeleteFile
0000000000002ae1 hOP[OY
0000000000002aec ascr

The above AppleScript is referenced in the application's NIB (NeXTSTEP Interface Builder file) where the menu is also found.

The executable doesn't do much - they never do when they're wrapping AppleScript that's wrapping Unix - and once it's stripped (for it wasn't) all it has is the following.

0000000000000023 8__PAGEZERO
000000000000005b H__TEXT
000000000000008c __text
000000000000009c __TEXT
00000000000000d0 __picsymbol_stub__TEXT
0000000000000113 $__symbol_stub
0000000000000124 __TEXT
0000000000000158 __cstring
0000000000000168 __TEXT
00000000000001a4 __DATA
00000000000001d4 __data
00000000000001e4 __DATA
0000000000000218 __la_symbol_ptr
0000000000000228 __DATA
000000000000025c __nl_symbol_ptr
000000000000026c __DATA
00000000000002a0 __dyld
00000000000002b0 __DATA
00000000000002e4 __common
00000000000002f4 __DATA
000000000000032f 8__LINKEDIT
000000000000036c /usr/lib/dyld
0000000000000394 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
00000000000003e8 /System/Library/Frameworks/AppleScriptKit.framework/Versions/A/AppleScriptKit
0000000000000450 /usr/lib/libSystem.B.dylib
0000000000000d4c }i[x,
0000000000000e2d k 4,
0000000000000e81 k 8}i
0000000000000f68 __dyld_mod_term_funcs
0000000000000f80 __dyld_make_delayed_module_initializer_calls
0000000000000fb0 The kernel support for the dynamic linker is not present to run this program.
0000000000002238 _NXArgc
0000000000002240 _NXArgv
0000000000002248 ___darwin_gcc3_preregister_frame_info
000000000000226e ___progname
000000000000227a __cplus_init
0000000000002287 __mh_execute_header
000000000000229b _catch_exception_raise
00000000000022b2 _catch_exception_raise_state
00000000000022cf _catch_exception_raise_state_identity
00000000000022f5 _clock_alarm_reply
0000000000002308 _do_mach_notify_dead_name
0000000000002322 _do_mach_notify_no_senders
000000000000233d _do_mach_notify_port_deleted
000000000000235a _do_mach_notify_send_once
0000000000002374 _do_seqnos_mach_notify_dead_name
0000000000002395 _do_seqnos_mach_notify_no_senders
00000000000023b7 _do_seqnos_mach_notify_port_deleted
00000000000023db _do_seqnos_mach_notify_send_once
00000000000023fc _environ
0000000000002405 _main
000000000000240b _receive_samples
000000000000241c start
0000000000002422 _NSApplicationMain
0000000000002435 ___keymgr_dwarf2_register_sections
0000000000002458 __cthread_init_routine
000000000000246f __objcInit
000000000000247a _atexit
0000000000002482 _errno
0000000000002489 _exit
000000000000248f _mach_init_routine
00000000000024a2 _pointer_to_objcInit
00000000000024b7 _pointer_to__darwin_gcc3_preregister_frame_info
00000000000024e7 __call_mod_init_funcs
00000000000024fd dyld_lazy_symbol_binding_entry_point
0000000000002522 error_message
0000000000002530 dyld_func_lookup_pointer
0000000000002549 __dyld_func_lookup
000000000000255c __dyld_init_check
000000000000256e __start
0000000000002576 dyld_stub_binding_helper

And thanks to jedik we already know that this app's not going to do it anyway - so what's to be done for poor Kyle?

You're dying to find out, aren't you? Of course you are. So click here.

About | ACP | Buy | Forum | Industry Watch | Learning Curve | Search | Twitter | Xnews
Copyright © Rixstep. All rights reserved.