Deserialize objective-c binary NSMutableArray in python -
i'm putting google app engine webapp in python , i'm seeding database iphone app (sqlite).
i'm having bit of difficult on 3 fields defined blob fields , have binary serialized objects in them. (typically start out "bplist" i'm assuming it's binary serialized property list - ones interested in contain serialized nsmutablearray's within them.)
i'm suspecting 2 choices a) see how amenable binary format regex style scraping out of values (they text) b) write quick ios app, open database, export data better format
any other ideas, suggestions on best route, or (fingers cross) pointers sort of great python egg solves problems.
below have encluded sample , tried format reasonably medium - out of bottom need extract (anonymized actual data)
street = "1111 address ln #2004" street2 = "" city = "dallas" state = "tx" zip = "75243" country = "" type = ""
here's data looks typical entry: http://dl.dropbox.com/u/6649380/serializedobject.txt
"000000acb 62 70 6c 69 73 74 30 30-d4 01 02 03 04 05 06 09 |bplist00Ô.|" "000000adb 0a 58 24 76 65 72 73 69-6f 6e 54 24 74 6f 70 59 |.x$versiont$topy|" "000000aeb 24 61 72 63 68 69 76 65-72 58 24 6f 62 6a 65 63 |$archiverx$objec|" "000000afb 74 73 12 00 01 86 a0 d1-07 08 54 72 6f 6f 74 80 |ts † Ñtroot€|" "000000b0b 01 5f 10 0f 4e 53 4b 65-79 65 64 41 72 63 68 69 |_nskeyedarchi|" "000000b1b 76 65 72 af 10 12 0b 0c-12 25 26 27 27 28 29 2a |ver¯%&''()*|" "000000b2b 2b 2c 2d 2e 2f 30 34 3b-3e 55 24 6e 75 6c 6c d2 |+,-./04;>u$nullÒ|" "000000b3b 0d 0e 0f 10 56 24 63 6c-61 73 73 5a 4e 53 2e 6f |.v$classzns.o|" "000000b4b 62 6a 65 63 74 73 80 11-a1 11 80 02 d3 0d 13 0e |bjects€¡€Ó.|" "000000b5b 14 15 1d 57 4e 53 2e 6b-65 79 73 80 10 a7 16 17 |wns.keys€§|" "000000b6b 18 19 1a 1b 1c 80 03 80-04 80 05 80 06 80 07 80 |€€€€€€|" "000000b7b 08 80 09 a7 1e 1f 20 21-21 21 24 80 0a 80 0b 80 |€.§ !!!$€.€€|" "000000b8b 0c 80 0d 80 0d 80 0d 80-0e 54 63 69 74 79 55 73 |€.€.€.€tcityus|" "000000b9b 74 61 74 65 53 7a 69 70-57 73 74 72 65 65 74 32 |tateszipwstreet2|" "000000bab 54 74 79 70 65 57 63 6f-75 6e 74 72 79 57 73 74 |ttypewcountrywst|" "000000bbb 72 65 65 74 31 56 44 61-6c 6c 61 73 52 54 78 55 |reet1vdallasrtxu|" "000000bcb 37 35 32 34 33 50 d2 0d-31 32 33 59 4e 53 2e 73 |75243pÒ.123yns.s|" "000000bdb 74 72 69 6e 67 80 0f 5f-10 14 31 31 31 31 20 41 |tring€_1111 a|" "000000beb 64 64 72 65 73 73 20 4c-6e 20 23 32 30 30 34 d2 |ddress ln #2004Ò|" "000000bfb 35 36 37 38 58 24 63 6c-61 73 73 65 73 5a 24 63 |5678x$classesz$c|" "000000c0b 6c 61 73 73 6e 61 6d 65-a3 38 39 3a 5f 10 0f 4e |lassname£89:_n|" "000000c1b 53 4d 75 74 61 62 6c 65-53 74 72 69 6e 67 58 4e |smutablestringxn|" "000000c2b 53 53 74 72 69 6e 67 58-4e 53 4f 62 6a 65 63 74 |sstringxnsobject|" "000000c3b d2 35 36 3c 3d a2 3d 3a-5c 4e 53 44 69 63 74 69 |Ò56<=¢=:\nsdicti|" "000000c4b 6f 6e 61 72 79 d2 35 36-3f 40 a3 40 41 3a 5e 4e |onaryÒ56?@£@a:^n|" "000000c5b 53 4d 75 74 61 62 6c 65-41 72 72 61 79 57 4e 53 |smutablearraywns|" "000000c6b 41 72 72 61 79 00 08 00-11 00 1a 00 1f 00 29 00 |array ) |" "000000c7b 32 00 37 00 3a 00 3f 00-41 00 53 00 68 00 6e 00 |2 7 : ? s h n |" "000000c8b 73 00 7a 00 85 00 87 00-89 00 8b 00 92 00 9a 00 |s z … ‡ ‰ ‹ ’ š |" "000000c9b 9c 00 a4 00 a6 00 a8 00-aa 00 ac 00 ae 00 b0 00 |œ ¤ ¦ ¨ ª ¬ ® ° |" "000000cab b2 00 ba 00 bc 00 00-c0 00 c2 00 c4 00 c6 00 |² º ¼ ¾ À Â Ä Æ |" "000000cbb c8 00 cd 00 d3 00 d7 00-df 00 e4 00 ec 00 f4 00 |È Í Ó × ß ä ì ô |" "000000ccb fb 00 fe 01 04 01 05 01-0a 01 14 01 16 01 2d 01 |û þ.-|" "000000cdb 32 01 3b 01 46 01 4a 01-5c 01 65 01 6e 01 73 01 |2;fj\ens|" "000000ceb 76 01 83 01 88 01 8c 01-9b 00 00 00 00 00 00 02 |vƒˆŒ› |" "000000cfb 01 00 00 00 00 00 00 00-42 00 00 00 00 00 00 00 | b |" "000000d0b 00 00 00 00 00 00 00 01-a3 | £ |"
if planning on running script on mac, can use plutil
command convert more parseable xml format:
plutil -convert xml1 -o outfile infile
to have output go stdout, use -
output file. if leave -o
option out, output overwrite input file. if prefer, use json
format instead of xml1
json formatted output.
Comments
Post a Comment