#!/usr/local/cpython-3.4/bin/python '''Seek to read ranges from an uncompressed disk image - fast, but takes a lot more disk space''' import os import sys left = 32768 right = 32768 width = left + right + 1 offsets = [ 15199397058, 15199397788, 15199401197, 15199401289, 15199401918, 15199402669, 15199403860, 15199417538, 15199418268, 15199421677, 15199421769, 15199422398, 15199423149, 15199424340, 103174333023, 103174333666, 103174336451, 103174336531, 103174337055, 103174337650, 103174338595, 111923278431, 111923279074, 111923281859, 111923281939, 111923282463, 111923283058, 111923284003, 115547013727, 115547014370, 115547017155, 115547017235, 115547017759, 115547018354, 115547019299, 120517034591, 120517035234, 120517038019, 120517034591, 120517035234, 120517038019, 120517038099, 120517038623, 120517039218, 120517040163, 152317538911, 152317539554, 152317542339, 152317542419, 152317542943, 152317543538, 152317544483, 169099809375, 169099810018, 169099812803, 169099812883, 169099813407, 169099814002, 169099814947, 195790210390, 195790211120, 195790214583, 195790214675, 195790215304, 195790216055, 195790217246, 195790222678, 195790223408, 195790226871, 195790226963, 195790227592, 195790228343, 195790229534, 195790244098, 195790252092, 195790252212, 195790271997, 195790272822, 195790276284, 195790276376, 195790276999, 195790277750, 195790278935, 195790288506, 195790289331, 195790292793, 195790292885, 195790293508, 195790294259, 195790295444, 195790300883, 195790301708, 195790305170, 195790305262, 195790305885, 195791054342, 195791055106, 195791062692, 195791062812, 195791455955, 195791456780, 195791460211, 195791460303, 195791484627, 195791485452, 195791488883, 195791488975, 197705761986, 197705762716, 197705766125, 197705766217, 197705766846, 197705767597, 197705768788, 197705786562, 197705787292, 197705790701, 197705790793, 197705791422, 197705792173, 197705793364, 197734500471, 197734501140, 197734506121, 197734507606, 197734508353, 197734508812, 197734508932, 197734511810, 197734512540, 197734515949, 197734516041, 197734516670, 197734517421, 197734518612, 197734529238, 197734529907, 197734532295, 197734533025, 197734536434, 197734536526, 197734537155, 197734537906, 197734539097, 197734544584, 197734545314, 197734548723, 197734548815, 197734549444, 197734550195, 197734551386, 197734560972, 197734561702, 197734565111, 197734565203, 197734565832, 197734566583, 197734567774, 197734573401, 197734574131, 197734577540, 197734577632, 197734578261, 197734579012, 197734580203, 197734585689, 197734586419, 197734589862, 197734589954, 197734590583, 197734591334, 197734592525, 197734597977, 197734598707, 197734602152, 197734602244, 197734602873, 197734603624, 197734604815, 197734610265, 197734610995, 197734614440, 197734614532, 197734615161, 197734615912, 197734617103, 197734626649, 197734627379, 197734630842, 197734630934, 197734631563, 197734632314, 197734633505, 197734638937, 197734639667, 197734643130, 197734643222, 197734643851, 197734644602, 197734645793, 197734655321, 197734656051, 197734659514, 197734659606, 197734660235, 197734660986, 197734662177, 197734667609, 197734668339, 197734671802, 197734671894, 197734672523, 197734673274, 197734674465, 197734688089, 197734688819, 197734692282, 197734692374, 197734693003, 197734693754, 197734694945, 197734700377, 197734701107, 197734704570, 197734704662, 197734705291, 197734706042, 197734707233, 197734716761, 197734717491, 197734720954, 197734721046, 197734721675, 197734722426, 197734723617, 197734729049, 197734729779, 197734733242, 197734733334, 197734733963, 197734734714, 197734735905, 197734741334, 197734742064, 197734745527, 197734745619, 197734746248, 197734746999, 197734748190, 197734753622, 197734754352, 197734757815, 197734757907, 197734758536, 197734759287, 197734760478, 197734774102, 197734774832, 197734778295, 197734778387, 197734779016, 197734779767, 197734780958, 197734786390, 197734787120, 197734790583, 197734790675, 197734791304, 197734792055, 197734793246, 197734798678, 197734799408, 197734802871, 197734802963, 197734803592, 197734804343, 197734805534, 197734815062, 197734815792, 197734819255, 197734819347, 197734819976, 197734820727, 197734821918, 197734827350, 197734828080, 197734831543, 197734831635, 197734832264, 197734833015, 197734834206, 197734843734, 197734844464, 197734847927, 197734848019, 197734848648, 197734849399, 197734850590, 197734856022, 197734856752, 197734860215, 197734860307, 197734860936, 197734861687, 197734862878, 197734868310, 197734869040, 197734872503, 197734872595, 197734873224, 197734873975, 197734875166, 197734880598, 197734881328, 197734884791, 197734884883, 197734885512, 197734886263, 197734887454, 197734896982, 197734897712, 197734901175, 197734901267, 197734901896, 197734902647, 197734903838, 197734909270, 197734910000, 197734913463, 197734913555, 197734914184, 197734914935, 197734916126, 197734921558, 197734922288, 197734925751, 197734925843, 197734926472, 197734927223, 197734928414, 197734937942, 197734938672, 197734942135, 197734942227, 197734942856, 197734943607, 197734944798, 197734954326, 197734955056, 197734958519, 197734958611, 197734959240, 197734959991, 197734958519, 197734958611, 197734959240, 197734959991, 197734961182, 197734966614, 197734967344, 197734970807, 197734970899, 197734971528, 197734972279, 197734973470, 197734978902, 197734979632, 197734983095, 197734983187, 197734983816, 197734984567, 197734985758, 197734991190, 197734991920, 197734995383, 197734995475, 197734996104, 197734996855, 197734998046, 197735007574, 197735008304, 197735011767, 197735011859, 197735012488, 197735013239, 197735014430, 197735036246, 197735036976, 197735040439, 197735040531, 197735041160, 197735041911, 197735043102, 197735052630, 197735053360, 197735056823, 197735056915, 197735057544, 197735058295, 197735059486, 197735064918, 197735065648, 197735069111, 197735069203, 197735069832, 197735070583, 197735071774, 197735081302, 197735082032, 197735085495, 197735085587, 197735086216, 197735086967, 197735088158, 197735093590, 197735094320, 197735097783, 197735097875, 197735098504, 197735099255, 197735100446, 197735105878, 197735106608, 197735110071, 197735110163, 197735110792, 197735111543, 197735112734, 197735118166, 197735118896, 197735122359, 197735122451, 197735123080, 197735123831, 197735125022, 197735130454, 197735131184, 197735134647, 197735134739, 197735135368, 197735136119, 197735137310, 197735142742, 197735143472, 197735146935, 197735147027, 197735147656, 197735148407, 197735149598, 197735159126, 197735159856, 197735163319, 197735163411, 197735164040, 197735164791, 197735165982, 197735171414, 197735172144, 197735175607, 197735175699, 197735176328, 197735177079, 197735178270, 197735187798, 197735188528, 197735191991, 197735192083, 197735192712, 197735193463, 197735194654, 197735200086, 197735200816, 197735204279, 197735204371, 197735205000, 197735205751, 197735206942, 197735212374, 197735213104, 197735216567, 197735216659, 197735217288, 197735218039, 197735219230, 197735224662, 197735225392, 197735228855, 197735228947, 197735229576, 197735230327, 197735231518, 197735241046, 197735241776, 197735245239, 197735245331, 197735245960, 197735246711, 197735247896, 197735257430, 197735258160, 197735261623, 197735261715, 197735262338, 197735263089, 197735264274, 197735272385, 197735273814, 197735274565, 197735278028, 197735278120, 197735278743, 197735279494, 197735280679, 197735286102, 197735286863, 197735290326, 197735290418, 197735291041, 197735291792, 197735292977, 197735298390, 197735299069, 197735302532, 197735302624, 197735303247, 197735303998, 197735305183, 197735310678, 197735311357, 197735314819, 197735314911, 197735315534, 197735316285, 197735317470, 197735322966, 197735323645, 197735327107, 197735327199, 197735327822, 197735328573, 197735329758, 197735339350, 197735340175, 197735343637, 197735343729, 197735344352, 197735345103, 197735346288, 197735355901, 197735356726, 197735360188, 197735360280, 197735360903, 197735361654, 197735362839, 197735372322, 197735373147, 197735376609, 197735376701, 197735377324, 197735378075, 197735379260, 197735384610, 197735385435, 197735388897, 197735388989, 197735389612, 197735390363, 197735391548, 197735396888, 197735397713, 197735401175, 197735401267, 197735401890, 197735402641, 197735403826, 197735409176, 197735410001, 197735413463, 197735413555, 197735414178, 197735414929, 197735416114, 197735421464, 197735422289, 197735425751, 197735425843, 197735426466, 197735427217, 197735428402, 197735433752, 197735434577, 197735438039, 197735438131, 197735438754, 197735439505, 197735440690, 197735450136, 197735450961, 197735454423, 197735454515, 197735455138, 197735455889, 197735457074, 197735466520, 197735467345, 197735470807, 197735470899, 197735471522, 197735472273, 197735473458, 197735478827, 197735479652, 197735483114, 197735483206, 197735483829, 197735484580, 197735483114, 197735483206, 197735483829, 197735484580, 197735485765, 197735491115, 197735491940, 197735495402, 197735495494, 197735496117, 197735496868, 197735498053, 197735507541, 197735508366, 197735511828, 197735511920, 197735512543, 197735513294, 197735514479, 197735519894, 197735520719, 197735524181, 197735524273, 197735524896, 197735525647, 197735526832, 197735532182, 197735533007, 197735536469, 197735536561, 197735537184, 197735537935, 197735539120, 197735548624, 197735549449, 197735552911, 197735553003, 197735553626, 197735554377, 197735555562, 197735564922, 197735565747, 197735569209, 197735569301, 197735569924, 197735570675, 197735571860, 197735577210, 197735578035, 197735581497, 197735581589, 197735582212, 197735582963, 197735584148, 197735589498, 197735590323, 197735593785, 197735593877, 197735594500, 197735595251, 197735596436, 197735601786, 197735602611, 197735606073, 197735606165, 197735606788, 197735607539, 197735608724, 197735614074, 197735614899, 197735618361, 197735618453, 197735619076, 197735619827, 197735621012, 197735630547, 197735631372, 197735634834, 197735634926, 197735635549, 197735636300, 197735637485, 197735646931, 197735647756, 197735651218, 197735651310, 197735651933, 197735652684, 197735653869, 197735659219, 197735660044, 197735663506, 197735663598, 197735664221, 197735664972, 197735666157, 197735675603, 197735676428, 197735679890, 197735679982, 197735680605, 197735681356, 197735696083, 197735696908, 197735700370, 197735700462, 197735712467, 197735713292, 197735716754, 197735716846, 197735728851, 197735729676, 197735733142, 197735733234, 197735741139, 197735741964, 197735745383, 197735745475, 197735745383, 197735745475, 197735753427, 197735754252, 197735757671, 197735757763, 197735769811, 197735770636, 197735774069, 197735774161, 197735782099, 197735782924, 197735786343, 197735786435, 197735794387, 197735795212, 197735798631, 197735798723, 197735810771, 197735811596, 197735815016, 197735815108, 197735823059, 197735823884, 197735827304, 197735827396, 197738919635, 197738920460, 197738923880, 197738923972, 197744961030, 197744961794, 197744969369, 197744969489, 197744973523, 197744974348, 197744977779, 197744977871, 197744985811, 197744986636, 197744990067, 197744990159, 197745051347, 197745052172, 197745055603, 197745055695, 197745063635, 197745064460, 197745067891, 197745067983, 197748770515, 197748771340, 197748774760, 197748774852, 197748782803, 197748783628, 197748787048, 197748787140, 197750355462, 197750356226, 197750363812, 197750363932, 197750367955, 197750368780, 197750372200, 197750372292, 197750380243, 197750381068, 197750384488, 197750384580, 197751035398, 197751036162, 197751043731, 197751043851, 197751047891, 197751048716, 197751052148, 197751052240, 197751060179, 197751061004, 197751064436, 197751064528, 197751143883, 197751144003, 197751146195, 197751147020, 197751150451, 197751150543, 197751158483, 197751159308, 197751162739, 197751162831, 197751494150, 197751494914, 197751502489, 197751502609, 197751506643, 197751507468, 197751510899, 197751510991, 197751764486, 197751765250, 206808343135, 206808343778, 206808346563, 206808346643, 206808347167, 206808347762, 206808348707, 207741997663, 207741998306, 207742234563, 207742234643, 207742235167, 207742235762, 207742236707, ] num_offsets = len(offsets) file_handle = os.open('/movie/sda6.dd', os.O_RDONLY) for offsetno, offset in enumerate(offsets): sys.stdout.write('%f%% offset %d\n' % (offsetno * 100 / num_offsets, offset)) os.lseek(file_handle, offset - left, os.SEEK_SET) portion = os.read(file_handle, width) range_file_handle = os.open('range-%d' % offset, os.O_WRONLY | os.O_CREAT) os.write(range_file_handle, portion) os.close(range_file_handle) os.close(file_handle)