Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import hashlib
- #put your installation directory between the quotation marks. (WITH the double backslash on the end!)
- #download pyton https://www.python.org/downloads/
- #save project as gtatest.py and run
- gta_dir = os.path.abspath("D:\Grand Theft Auto V\\")
- #directory: \Grand Theft Auto V\
- file_hashes = [('x64a.rpf', '683610e269ba60c5fcc7a9f6d1a8bfd5'),
- #next line is for steam users only (move the "#"-sign one line down):
- #('x64b.rpf', 'bef3689e53a6beb8430b27ab25097d31'),
- ('x64b.rpf', '70af24cd4fe2c8ee58edb902f018a558'),
- ('x64c.rpf', '2a0f6f1c35ad567fe8e56b9c9cc4e4c6'),
- ('x64d.rpf', 'c8757b052ab5079c7749bcce02538b2e'),
- ('x64e.rpf', 'e5416c0b0000dad4014e0c5e9b878ff9'),
- ('x64f.rpf', '5c6fc965d56ae6d422cd6cbe5a65a3a5'),
- ('x64g.rpf', '1d8a64b337c3e07dffec0f53530cdb8e'),
- ('x64h.rpf', 'fe657d9282df303b080c3a2f6771c9ea'),
- ('x64i.rpf', 'bb271d313467465d62c75e208236487b'),
- ('x64j.rpf', '143deee4c7699b9f07ef21d43ae0915b'),
- ('x64k.rpf', 'da2c88b4ca69c99a86868a9433084a9d'),
- ('x64l.rpf', 'f4307b005a3e90192f235959621781d1'),
- ('x64m.rpf', 'a1304d84875747aa7405465d37d3c6fb'),
- ('x64n.rpf', 'c48a14fe1c301360a16e8b0c5472fd1d'),
- ('x64o.rpf', '6715a4eabbbc8868f15630bf917db49a'),
- ('x64p.rpf', '6ad56befada1db7cccd9cea7834c825b'),
- ('x64q.rpf', 'ff6d09527d7fdc005d3fa78435e09c8a'),
- ('x64r.rpf', '1465c9da5cc17b68f14915b6c1d815bc'),
- ('x64s.rpf', '2c6e61201eb4f60d5c3c1e9ae6d67a32'),
- ('x64t.rpf', '4c15a54a4c9573d7a0bcfa4689d9d1ed'),
- ('x64u.rpf', '2c9cff0cc5f99ad2218e4c4de39881b7'),
- ('x64v.rpf', 'db647120263d0282b6f6c555f6112a1c'),
- ('x64w.rpf', '46a4abe50bfc78c30c0173d888cf2c4a')]
- #directory: \Grand Theft Auto V\update\x64\dlcpacks\
- dlc_dirs = [('mpchristmas2', 'a4d0910b796c06949ddecaf59e9e7abd'),
- ('mpheist', '268ebd26d4e608e22c97a4406a441304'),
- ('mpluxe', '64656efa4b68075de5d36630eb3df1ce'),
- ('mpluxe2', '0b707b7b0c5fa846b0c7e3795bbb752d'),
- ('mppatchesng', 'cbd02bff9d631941cb1be25323f577b9'),
- ('mpreplay', '2efea9ac2629bb3bdbe6bdc0e0d14894'),
- ('patchday1ng', 'e0300b04dfae8d26335f8555ff817e71'),
- ('patchday2bng', '944683e32536c908611a2f9bc2e0111c'),
- ('patchday2ng', 'f48d5113ed030b737d84b323bfc7dc18'),
- ('patchday3ng', '8a53726d7a79d0dcb9019d1e479c2b8e'),
- ('patchday4ng', '67cf27f27c020f5196f1b96628e062dd'),
- ('patchday5ng', 'ff98184310852ef5bc64ba9ae057086f'),
- ('patchday6ng', '46018995d24532336bec65173c37f1ef')]
- #directory: \Grand Theft Auto V\x64\audio\sfx\
- sfx_files = [('ANIMALS', 'dee58a003406da3553f78e534622ac50'),
- ('ANIMALS_FAR', '2a7a5ee23da6459b2ebd2c04dbe1b846'),
- ('ANIMALS_NEAR', '647cea419643808e7ffc82b1d311fa13'),
- ('CUTSCENE_MASTERED_ONLY', '995f71489084297f31943373c619f68e'),
- ('DLC_GTAO', 'c2696f76149ac57fa1a61636762aa4c7'),
- ('INTERACTIVE_MUSIC', 'c07eb284089b4b9db7fcebe7029cbd54'),
- ('ONESHOT_AMBIENCE', '4ed22957a50553182cedf5510d1e8e36'),
- ('PAIN', '08e42851ff2ee25ef844101bb4eb125e'),
- ('POLICE_SCANNER', '30e1ddea02d92e334523301b37bbc2cf'),
- ('PROLOGUE', '6ed5fd973aee29d1043280a95fd1374a'),
- ('RADIO_01_CLASS_ROCK', '88f6352fd3f00f61534749268c1ec772'),
- ('RADIO_02_POP', '9c4ffb44058b17364282e49719c6615f'),
- ('RADIO_03_HIPHOP_NEW', 'a64dddc3087fdf48d0614dd36212e1a2'),
- ('RADIO_04_PUNK', '7817e46dc9a0fa29803e233451041ecb'),
- ('RADIO_05_TALK_01', '30684ca056f66e89377d68c9f2a18dad'),
- ('RADIO_06_COUNTRY', 'f7fdd6057f57a608a4ffac3388296ed7'),
- ('RADIO_07_DANCE_01', '3d88e531a07149775eb77108c9bd64e6'),
- ('RADIO_08_MEXICAN', '6fde3f68a4069a96f6a4bcae32efbc36'),
- ('RADIO_09_HIPHOP_OLD', 'b3ce929628e98d781b99e65d55aa796f'),
- ('RADIO_11_TALK_02', '6d2491f98bf0721a49aa20fcec24a979'),
- ('RADIO_12_REGGAE', '55fa363694db588f0d7fc2d1c04a4bd4'),
- ('RADIO_13_JAZZ', '2f864478a763fae03a195df99accb625'),
- ('RADIO_14_DANCE_02', '9ce6c2c68e98c7040ab6c1c7ceca7b43'),
- ('RADIO_15_MOTOWN', '8ebeb03478b905ff57dfaeb5bafd022c'),
- ('RADIO_16_SILVERLAKE', 'ea96f48138bd53d5b92cd0999b4b9592'),
- ('RADIO_17_FUNK', 'b29cb8ead7e02ac7f2df77472ee8e0be'),
- ('RADIO_18_90S_ROCK', '31477aa6eacea5bc981e492c2bef29f1'),
- ('RADIO_ADVERTS', 'e12223a4fd61efc90e75b5d4d8bc6f76'),
- ('RADIO_NEWS', '058c51b09fd4be0bfb0d7adfb4d7f965'),
- ('RESIDENT', 'df2407e6dec6b5fd18034ef0f47ad6bb'),
- ('S_FULL_AMB_F', '8b4398938db36a617877ba3c1db47247'),
- ('S_FULL_AMB_M', '8e2028e2e0f1d407cb27e354b6c3e12d'),
- ('S_FULL_GAN', '193804dce2772060149c8e897d2f89d8'),
- ('S_FULL_SER', '69e05ebbe2c4839534d8a8e850610dc6'),
- ('S_MINI_AMB', '0365ec49c281fc58d6719604bb0719b2'),
- ('S_MINI_GAN', 'e87de77e82fd106c29a2fd42d915961f'),
- ('S_MINI_SER', '6917a980d346317cbfcc8f2d474d7111'),
- ('S_MISC', '54503436d735aad5d4e9327e6bf89e99'),
- ('SCRIPT', 'b3577479e9bf194c58df5e404c0ee00f'),
- ('SS_AC', '829ba72532ee84a204f44c552dcc9da9'),
- ('SS_DE', '161caaa12df6b6729aa0b03de5da00f0'),
- ('SS_FF', '4330b09d4d707484987afb1279d1bda1'),
- ('SS_GM', '1f3a143f4d4d7101aaeab776b6fc7edd'),
- ('SS_NP', 'f32c9414327fbebfbf41d6663241d3c6'),
- ('SS_QR', '71d13bfa850457d7bdc9aeee9f65e1cf'),
- ('SS_ST', '5f17f2ae91ea8ba3e35a937e515d1e19'),
- ('SS_UZ', 'a325ab1785d255c24592aed6a9c5b52e'),
- ('STREAMED_AMBIENCE', '8af66d9ad9de11227e95192ec65448b6'),
- ('STREAMED_VEHICLES', '84b960d31585d589af1701bdc48c3921'),
- ('STREAMED_VEHICLES_GRANULAR', 'a34dbb719d6098d8cfdf5f51b0bb9b82'),
- ('STREAMED_VEHICLES_GRANULAR_NPC', '511f2ab0c22a55caf096ada395bebe55'),
- ('STREAMED_VEHICLES_LOW_LATENCY', '15076fe0ba7f57112882a179c4db0a65'),
- ('STREAMS', '9b1fc10f15e2115f0945ee848120aa46'),
- ('WEAPONS_PLAYER', 'b4a3c9bfd7a818dc47e34ec05fc946da')]
- #directory: \Grand Theft Auto V\x64\audio
- audio_files = [('audio_rel', '3f674ab6f7ce814cd4fcf21ad5536165'),
- ('occlusion', '5be62ba4ad701711c5754256dd38c184')]
- for dlc in dlc_dirs:
- dlc_path = ('update\\x64\\dlcpacks\\' + dlc[0] + '\\dlc.rpf', dlc[1])
- file_hashes.append(dlc_path)
- for sfx in sfx_files:
- sfx_path = ('x64\\audio\\sfx\\' + sfx[0] + '.rpf', sfx[1])
- file_hashes.append(sfx_path)
- for audio in audio_files:
- audio_path = ('x64\\audio\\' + audio[0] + '.rpf', audio[1])
- file_hashes.append(audio_path)
- def md5_for_file(f, block_size=2**20):
- md5 = hashlib.md5()
- while True:
- data = f.read(block_size)
- if not data:
- break
- md5.update(data)
- return md5.hexdigest()
- for file_info in file_hashes:
- file_path = os.path.join(gta_dir, file_info[0])
- output_msg = 'Checking %s' % file_path
- print(output_msg)
- file_hash = md5_for_file(open(file_path, 'rb'))
- output_msg = 'File %s:' % file_path
- if file_hash == file_info[1]:
- output_msg = 'OK'
- else:
- output_msg = 'FAIL. Expected hash: %s Actual hash: %s' % (file_info[1], file_hash)
- print(output_msg)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement