Analyse Système de décryptage mapData Dofus 1.29x

Inscrit
8 Octobre 2016
Messages
5
Reactions
0
#1
Salut !


Alors voilà un petit problème qui se pose en ce moment pour moi.

J'aimerais comprendre comment marche le decryptage des mapData des maps "crypté" de Dofus 1.29.x, zano à réussi en VB.NET
https://raw.githubusercontent.com/Z...er/AstriaMapEditor/Maps/MapData/Decryptage.vb

Cependant, je sèche complètement sur le côté théorique de ce décryptage.
Pourriez-vous me donner des pistes ?

Clef : 2c73354461624d717c67627d374e55266761566a42316c613a2d61622c6b28436f403d7d417036607858212d685b374a403873503857302649627277727d7e27253242247d374829337634747320287f673e64665b456d47336f32253242266c615934566c3d662f3f796640317d2c4945624236507a7b5d575f39382862553e55693d6e5d6f4e21343b36687f29747e7529572f6627247e405e4b497a712d594338296b3a7a5e3223375b532a39792a5c772c40543c4c586e487e464c75526a652231692e71754237247e262a217a

MapData:
24095b4c04034d0a492227285c1c2411570119396945093a522b21591231703f51472c031316131c364f4a451856294852177c1c12414d1e065f0507132d0c26560e534a470d29315537095c074e5e182e28501c49282403235718121a3c323e585949031d563408580f3c0e2f407c5357091a48151f14481f470746411f213f2a2832194c382659480a5b1b165a42563e324b58184b141f4d21315d2d390f29362e2d14370b044350086619142352451f474b40324412542100032c101d2f0a1c562b3447060037222a500d045b4c00034d2340220e255c1c2011572810394048093a562b21701b31593251472803133f1a1c1f424a451c5629615b1755111241491e06760c073a200c26520e53634e0d003c55370d5c076757180725501c4d28242a2a57311f1a3c363e58704003345b34085c0f3c272640555e57091e4815361d48364a0746451f211623281b144c3822594823521b3f5742563a324b71114b3d124d21355d2d1006291f232d14330b046a59084f14142356451f6e42401b49125425000305191d06071c562f34472f09370b245a5b005b4c290a4d0a4d220e215c1c091857011d39404c093a7f222159163159365147010a1316171c1f464a45355f29485617551512416017065f01073a240c267b07534a430d003855372455074e5a180721501c642124032757311b1a3c1f3758594d03345f340875063c0e2b40555a57093741151f1048364e07466c16213f2e281b104c380b50480a5f1b3f534256133b4b581c4b3d164d211c540b390b291f272d141a02044354084f1014237f4c1f474f401b4d12540c09032c141d06031c56063d470604370b23500d29524c00074d0a49220e08551c2015570119394065003a562f21591231591f584728071316131c1f6f43451c51231e5217553c1b41491a065f05073a020526520a534a44074c115c370d5b0d175d125508591c4d2c240323573132131a363a5859490334763d2e5c0b3c0e2f4055735e091e4c151f144836670e46451b213f2a281b394538225d480a5b1b3f7a4b563a364b58184b3d3f442135592d390f291f0e2414330f044350084f391d2356411f474b401b641b542504032c101d062a15562f334d51033d220a590d005c4659034d0a602b0e21581c201157013030664c0d3a562b21593b387f365547280313163a1539464e451c5629487b1e55151641491e065f2c0e3a240826520e534a6e04003851370d5c074e77110721541c4d2824030a5e311b1e3c363e5859600a125f30085c0f3c0e0649555a53091e4b1f303241364e0346451c2b6703211b104b32755a422472123f53455c6d324b5831423d164921355d2d39262039272914330b04436101662b102356451f4762493d4d16542500032c21142f5218562f344706293e0b23540d005b4c002a440a49260e215c1c20385e01193d404c093a56022859123559365147282a1a3013181f464a451c7f206e52135515124149380f5f0500307d0c2652275a4a470a0a6f55370d7a0e4e5e1f0d765316430e2d032353311b19362417517f4907345f34085c2635282f44555a57091e611c39144c364e0746453628192a2c1b104c382270410a5b1f3f5342563a1b4258184f3d164d21357424390f2d1f272d1433220d43500c4f101423566c16614b441b4d125425310a05411906031c562f1d4e2000330b23500d007d4500034a001e220e21751506115301193a4d4a38335510255912325430784e0e031716131c1f467b4c35072d48521755153b486f1e025f05073a243d2f7b5f574a470d00387c3e0d5c034e5e18072179154d2820032357311b3335363e5c594903345f1d015c0f380e2f40555a7e003848111f1448364e2e4f631f253f2a281b10653104594c0a5b1b3f536b5f1c324f58184b3d166428135d29390f291f27041d150b004350084f103d2a70451b474b401b4d3b5d0300072c101d0603355f0934430600370b237904265b4800034d0a491307086718201157011910494c093e562b215912185036514328031316133516464a411c562948523e5c151245491e065f0536330d5d22520e534a4724091e55330d5c074e5e290e0801184d282403237e383d1a38363e585949323d76650c5c0f3c0e2f695c7c570d1e48151f14793f675642451f213f2a0112364c3c2259480a5b2a367a13523a324b58186234304d25355d2d390f0016272d10330b044350214610142756451f474b69124d12502500032c10340f031c522f344706001e02235009005b4c000364036f220a215c1c20117e083f39444c093a562b085034315d36514728033a1f351c1b464a451c560041741751151241491e2f5623073e240c26520e7a43610d043855370d5c2e4778180321501c4d280d0a0557351b1a3c363e71504903305f34085c0f15072f40515a57091e483c161448324e0746451f08362a281f104c38225961035b1b3b5342563a326251184b39164d21355d1c3026781b272d14330b2d4a76084b10142356452e4e62111f4d125425003225132602031c55251c760f03660f23500d005b6509254d0e49220e215c2d293806051939404c09135f0d215d123159365176212a4212131c1f464a6c1556294c521755151268401e065b05073a240c0f5b0e534e470d0038551e045c074a5e180721503a442824072357321116153f18585d4903345f342155293c0a2f40555a5720176e151b1448364e076f4c1f213b2a281b104c112b59480e5b1b3c59657033324b5c184b3e1c54083c7b2d3d0f291f272d3d3a2d044750084f10140a5f631f434b401b4d12722c000328101d050e1f7f2634470200370b235024095b4c04034d0a492227285c1c24115701193969452f3a522b21591231703f77472c031316131c364f6c45185629485217641c3b104d1e065f0507132d0c26560e534a470d293155370a565e4d542e2e28501c4a227303235718121a3c323e585949031d561208580f3c0e2f4064537e581a48151f14481f470746411f213f2a2832194c382659480a5b1b165a42563e324b58184b141f4d21315d2d390f29392e2d14370b04405a366619322352451f474b40324434542100032c101d2f0a3a562b3447060037222a500d045b4c00034d2340220e255c1c2011572810394048093a562b21701b31593251472803133f1a1c1f424a451c5629615b3155111241491e066e0c2e01200c26520e53634e0d003c55370d5c076757180725501c4d28242a2a57311f1a3c363e587f4003345b34085c0f3c282640555e57091d4226361d6e364a0746451f210e23014a144c3822594823521b3f5742563a324b71114b3d124d21355d2d1006291f232d14330b046a59084f14142356451f6e42401b4912542500031d193457071c562f34472f09110b27500d005b4c290a4d0a4d220e215c1c091857011d39404c093a7f222159163159365147010a3516171c1f45406c3a5f2948551d0c16186f6017205f01073a240c267b07754a430d003855372455074e5a180721501c642124032757311b1a3c1f3758594d03345f340875063c0e2b40555a57093741151f1048364e0746741622042e281b104c380b506e0a5f1b3f534256133b6d581c4b3d164d211c542d390b291f272d141a02044354084f1319247f4c1f474f401b4d12540c09252c141d06031c56063d610604370b23500d31526551074d0a49220e07551c201557011a335365003a562f21591231591f584728071316131c1f6f43451c5229485217553c1b41491a065f05073a0d0526520a534a470d00115c110d58074e5e18071059351c2c240323573132133c363a5859490334763d085c0836572f4055735e091e4c151f144836670e6045182b662a281b39451e225d480a5b1b3f7a4b703a364b58184b3d3f442135592d390f291f0e2414330f044350084f391d2356411f474b401b641b542504032c101d062a15562f30470600370b0a590d005f4c00034d0a602b2821581c201157013030664c0d3a562b21593b3859365547280313163a151f464e451c562948741e55151641491d0c4f2c0e3a240826520e534a6e04263851370d5c074e6f112e70541c4d2824030a5e311b1e3c363d520d600a345f30085c0f3c0e0649555a53091e48151f3d41364e0346451f213f03211b1048382259480a7d123f5346563a324b5831421b164921355d2d393e2036762914330b044379016910102356451f476d491b4d165425030e29361406031b5c76344706293e0b23540d005b4c002a442c49260e215c1c20385e27193d404c093a561a2870293559365147282a1a1613181f464a451c7f204852135515114b66370f5f05033a240c2652275a4a4709003855370d750e4e5e1c0721501c4d012d252353311b1a3c3617517f4907345f34085c2635282f44555a57091e611c39144c364e07464536283f2a2c1b104c38227f410a5b1f3f5342563a1b4258184f3d164d21356c24105e2d1f272d1433220d65500c4f101423566316474b47111a115e37290a2c101a0c5a1b5c1c1d4e0600330b2353072a72450003490a49220e217a1520115301193a4a592033702b255912315936604e01521716131c1f46634c3a562d48521755152348604f025f05073a24252f740e574a470d00387c3e0d5c034e5e18072179154d28200323543b4f3335363e5c594903345f1d017a0f380e2f40555a7e003848111f1448364e214f451f253f2a2b1107653122594f000c1b3f536b5f3a324f58184b3d166428355d29390f291f27041d150b004350084f103d2a70451b474b401b4d3b5d0300072c101d0603355f0934430600370b237904265b4800034d0a490b07075c18201157011910494c093e562b225335185036514328031316133516464a411c56294852265c3c4345491e065f052e33020c22520e534a4724091e5530070b074e5e310e2150184d2824032371381b1a38363e5859492a3d79340c5c0f3c0e2f715c73060d1e48151f146e3f4e0742451f213f2a1912391d3c2259480a5b32367542523a324b58187a343f1c25355d2d390f0016272d10330b04435021461014245c1c1f474b66124d12532f560021122c0f0027522f344706001e02055009005b4c000364036f220a215c1c20117e083f39444c093a562b085012315d36514728033a1f351c1b464a451c560041741751151241491e205605073d2e5b26520e7543470d043855370d5c2e4778180321501c4d280d0a0557351b1a3c363e71504903305f34085c0f15072f40515a57091e483c161448324e0746451f08362a281f104c38225961037d1b3b5342563a327a51311a39164d21355d043029291b272d14330b354a79594b1014235645364e6d401f4d125425003225394c02031c562f34610f00370c29070e0a686a09034d0e49220d2b5035291157051939404c090b5f02705d12315936516e21031312131c1f464a6c1556294c521755151268401e065b05073a240c0f5b0e534e470d0038551e047a074a5e1807215035440e24072357311b1a153f18585d4903345f342155293c0a2f40555a5720176e151b1448364e076f4c39213b2a281b104c1e2b59480d514c3c594d7033324b5c184b3e1c7b073c5d2d3d0f291c2d043d3a0b044750084f10140a5f451f434b401b4d127d2c000328101d06031c7f2634470200370b235024095b4c04034d0a492227287a1c2411570119397145206b522b21591231683f527c2c031316131c2e4f63141856294852177c1c34414d1e065f05070b2d2577560e534a470d293155370a56504d531e2e28501c4a227303235717121a3c31340f5a43291d5634085b05650e2f407c5357091a48151f14481f470746411f213f2a2832194c382659480a5b1b165a42563e324b58184b141f6b21315d2d390f29362e0b14370b044350086619142352451f474b40324412542100032c101d2f0a3a562b3447060037222a760d045b4c00034d2340220e255c1c2011572810394048093a562b21701b31593251472803133f1a1c1f424a451c5629615b1755111241491e06760c073a200c26520e53634e0d003c55370d5c076757180725501c4d28242a2a57311f1a3c363e5868402a655b34085c0f3c272640555e57091e4815361d48364a0746451f211623281b144c382259483b52326e5742563a324b71114b3d124d213657151006291f232d143001206a59084f171e7456451f6e42401b4a18032500030a191d06071c562c39452f09370b27500d005b4c290a4d0a4d220e215c1c091857011d39404c093a7f222159163159365147010a3516171c1f464a45355f29485617551512416017065f01073a240c267b07534a430d003855372455074e5a180721501c642124032757311b1a3c1f3758594e096d5f340875063c0e2b40555a57093741151f1048364e07466c16213f2e281b104c380b50480a5f1b3f5342561c3b4b581c4b3d1547301c542d390b291f272d141a02044354084f101423704c1f474f401b4e18440c09032c141d06031c56063d470604370b23500d29524c00074d0a49220e08551c2015570119394065003a562c2b0f1231591f584728071316131c1f6f43451c5229485217553c1b41491a065f05073a0d05265209591c470d00115c370d58074e5e180708591c4d2c240323573132133c363a5859490334763d085c0b3c0e2f4055735e091e4c151f17453a

Est censé donné ceci :
HhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaafk7aaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaafk7aaaHhaaeaaaaaGhaaeaabk-Hhaafk8bk3HhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaafk6bkHHhaafk8aaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhaaeaabkNGhaaeaabk9Hhaafk6bkOHhaafk6aaaHhaaeaaaaaHhGaeaaaaaPhHZeaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaGhaafk8aaaHhaafk6aaaGhaafk6bkoGhaaeaabksHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaGhaafk6aaaHhGaeaaaaaPhbZeaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaPhHZeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaPhbZeaabkIPhb0eaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaGhaaeaabkmHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaabkFGhaaeaabkxHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaGhaaeaablbHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaafk8bkWHhaafk6aaaHhaaeaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaGhaaeaabk_HhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaPhHZeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaGhaaeaaaaaGhaaeaabkRHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaPhH0eaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaabkHGhaafk8bkOHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaPhbZeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaablfHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaPhH0eaaaaaGhaaeaabkrHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaafk8aaaHhaaeaaaaaHhGafk8aaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaGhaaeaabkqHhaaeaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaabk5HhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaGhaaeaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaGhaaeaabldGhaafk8aaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaPhHZeaaaaaHhaaeaaaaaHhaaeaabkNHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaGhaaeaaaaaHhaaeaaaaaPhH0eaaaaaHhGaeaaaaaGhaafk6bksHhaafk8fkRHhaaeaabkKHhaaeaaaaaGhaaeaabktHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaabk5HhaaeaaaaaHhGaeaaaaaHhGaeaaaaaGhaaeaabkvHhaafk6aaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaabkFHhaaeaaaaaHhaaeaaaaaPhH0eaaaaaHhGaeaaaaaHhGafk6aaaHhaaeaaaaaGhaaeaaaaaHhGaeaaaaaPhH0eaaaaaGhaaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaafk8aaaGhaafk7blcPhbZeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaGhaafk6aaaGhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaGhaafk6bkRGhaaeaabkmHhaaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaHhGaeaaaaaGhaafk6bknGhaaeaabkWGhaaeaabkHHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaPhH0eaaaaaPhbZeaaaaaPhH0eaaaaaHhGaeaaaaaPhH0eaaaaaHhaafk6aaaHhaafk6aaaGhaafk6bkKHhaafk8aaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaPhH0eaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaPhH0eaaaaaHhaaeaabkYHhaaeaabkEHhaafk6aaaHhaafk6aaaGhaaeaablcHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhGaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaafk8aaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaGhaaeaabkpHhaaeaaaaaHhaaeaaaaaGhaaeaabkqHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaafk7aaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaafk7aaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaaaaaHhaaeaablm

Je suis conscient que la clef est la mapData crypté est en héxadecimal. Doit donc y avoir une manip avec tout ça puis les codes ascii des lettres, mais je sèche.
Des idées ?

Merci d'avance !
 

Arth

Contributeur
Inscrit
28 Aout 2016
Messages
80
Reactions
3
#3
Salut,
je ne sais pas trop quoi te dire, si tu demandait l'utilité d'une fonction, ou tu exposer ton problème je pense que cela serait plus simple pour nous de t'aider, c'est toujours dure de répondre à une question technique quand la question posé et très vague.
  • Pourrai-tu nous exposer ce que tu as déjà fait ?
  • Pourrai-tu nous exposer ce que tu comprend de ce code ? (plutôt que ce que tu ne comprend pas, puisque si tu ne le comprend pas tu ne peut évidement pas nous dire précisément ce que c'est ^^)
 
Dernière édition:
Inscrit
8 Octobre 2016
Messages
5
Reactions
0
#5
En fait, j'ai converti tout le code en Java, mais je penses mettre trompé quelque part mais je ne sais où.

Le code :

Java:
public static String Checksum(String Data)
    {
        int num = 0;
        int num3 = Data.length() - 1;
        int i = 0;
        while (i <= num3)
            num += ((int)Data.substring(i, ++i).charAt(0) % 0x10);
        String strArray[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
        return strArray[num % 0x10];
    }
    public static String DecypherData(String Data, String Key, int Checksum)
    {
            String dataToDecrypt = null;
            int num4 = Data.length() - 2;
            int i = 0;
            while (i <= num4)
            {
                int num = (int)(Integer.parseInt(Data.substring(i, i + 2), 0x10));
                int nb = (int)(Math.round((double)((((i / 2) + Checksum) % (double)(Key.length())))));
                int num2 = (int)Key.substring(nb, nb + 1).charAt(0);
                dataToDecrypt += String.valueOf((char)(num ^ num2));
                i += 2;
            }
           return dataToDecrypt;
    }
    public static String PrepareKey(String Data)
    {
        String dataToDecrypt = null;
        int num2 = (Data.length() - 2);
        int i = 0;
       while (i <= num2)
       {
           dataToDecrypt += String.valueOf(String.valueOf(Integer.parseInt(Data.substring(i, i + 2), 0x10)).charAt(0));
           i += 2;
       }
       return dataToDecrypt;
    }
Ce que j'obtient : Je ne peux pas copier coller puisque les caractères obtenus ne sont même pas correct (sorti du tableau ascii).

L'implémentation :
Java:
key = PrepareKey(key);
       int checksum = (int)((Integer.parseInt(Checksum(key), 0x10) * 2));
       String MapData = DecypherData(mapData, key, checksum);
Implémentation en VB.net
Code:
 Key = Decryptage.PrepareKey(Key)
                Dim checksum As Integer = CInt((Convert.ToInt64(Decryptage.Checksum(Key), &H10) * 2))
                MapData = Decryptage.DecypherData(MapData, Key, checksum)
 
Inscrit
5 Novembre 2016
Messages
56
Reactions
2
#6
Java:
public static String PrepareKey(String Data)
    {
        String dataToDecrypt = null;
        int num2 = (Data.length() - 2);
        int i = 0;
       while (i <= num2)
       {
           dataToDecrypt += String.valueOf(String.valueOf(Integer.parseInt(Data.substring(i, i + 2), 0x10)).charAt(0));
           i += 2;
       }
       return dataToDecrypt;
    }

ceci ne peut marcher parce que tu n'as pas instancier ton String dataToDecrypt,
car tu rajoutes du textes alors que la variable est égale à null, donc tu vas avoir comme resultat null${dataToDecrypt},


par contre quand je fais comme ca :
Java:
String key = "key";
        String mapData = "mapData";

        key = PrepareKey(key);
        int checksum = (int)((Integer.parseInt(Checksum(key), 0x10) * 2));
        String MapData = DecypherData(mapData, key, checksum);
        System.out.println(MapData);

ca m'affiche un résultat un peu étrange :
null8b}14u9xj((b5 ]t=ch$E`7"/&+z{}-n{e.M-#p|-5j34";c?f{v>d8m>xo/e/|2o-*+
nhx5)g?n6
;qMjo0/}!&,~'v1wx.(}hy>c/'iq|o)z '{l6,>5wi9R/,e}.pzwu*e37$,<)es51YWF<95nz9:zq7i+"fv|8cI/m`q2%/%.zyq-oVm"d)'y}-1O=6=a;eP8`8m6Tc)6a-tf,/
aHu;m<j>
qaia0(}-,qs2sq& -%u j}g*csgsE x#{j!2)%:=_j=v, gq&_vv#%l722.,>6-es8>kh4h}G!fy;e%>)f0u{1 Nh hds83''#*.p|tnqg/f!#xU 0j0?8L>b{r<1ff6{m,2e-U2a*#
.mhx0i9L> 6vdna8w!.$w1sT'.%x3fp;i*bue&~i-'|$`:
8)#+30{b={!!Fy,rvx/x#`587,+1;-a7
p7<:d<c}62~;z=9;iLyc0,y\7gh'a,i~6%""%*[z|(`(c!c
-p|#7g63;0d?brq?x"k<j<&l!f=o/|7f")iox2
@i: =vfBg1+t$)%|V?pq*-} dp3n.Cs`}i!z
qh
>.: <7rf1x,by)rq.U"a1:$(7,gug4=h:7m~h2~>Q?n) d59aVboHdv2&!vt*bqN*l,"p}(7i?=c6`~_=5g<d2vC"0e-|09k(/
mhU;#l9m9
??dmf8+x*pv6~t*S5*&AmtD'bteU~m{ ql%?5rP5^!et)~U~|"l57%g+cs3
2`;8m{8s;~?m-o5(vy:e6h|@5Zev# $).wst)H]c*m$$ux:k<9L8cl{q;?Vd>N?wk(;Cb.v60j*($bJ4j<iwakf?/P%%{2up(.(}Dw;j)bva"tm ~/uA7'%
:pe9z!%g]'Usp*~!e=2p(2;*c,{98i54Ht4:{4(8M$1 d6(|{d$h$gKz=2ycp+wNz>yc&l$W-3f=6Nknss<4;m5k!6J!|4b#
k`x2n,2o:=ubnK1
y , yx~Z).#P7hu2n#eZk*~n,z !R%h>'1(!28uh9y!Gv.r~q*y
l24?!.52f>r74=M5jq50x3q'29S!%a9/'q}>aa#)c`w2%# %rypr#E$fi#+|~/7n<:ec7k{q8'`4e3j?>7){:F + nlx
NQ?k6
?XmOd8({$*#M
Vcst,7#u
n};nL c
~`)T{k;7 %:5zhs% ns'v}X+|%c56!>2-fv53/4g>1jx85Q7^;i/(F<
pu8`>gjfp;.(*r{t*c3pG#b$|4%rg1;c?CrT:<d5msI!6i%y9<4a*,
@hz7f?j:$?xei`0/y
'%{{1ut*?*!}hP5j*esaWb-}
'te-L-":}@1}%,g|wW$+t*b1*50)`-G;2W>h91hV8t9~?d70(u<*g9lhgNz#$-(q{T$gxc#d$$]s/5o66TQ`co?fx~47 d/=m2}f+6hr>c("$.ik2nd>y`ma&V # {w6^}.-#}$m}?n*
jQAzm!}+a9 H<&5sf9~& ;kT)z}u#|#K96$$=8'N~37>e8o}52y2}m*&`0(
Qsc`'EOs2'/"(wZr gye U$
!~*7k46%?e:`{)xE]a?`gtci-K0n #mmp:)g&>i9
?qQjO`)|$&!)r6~t'(} j{?m('oub~i)x .|l>'=7qcS!cq)vzvuc95(,3os?8f<=j{36xq:m-)c#
q~0
aD#l`r:&/%'vt(oUm c&*p~/1Y=0?c:bRx83
f>mi;t3e*t./
iFx2o1i;qahf?+s(Wr4rt&94{,yjc*fse }B ~
&xl#2.%
=5]l9z'!et&Vwx*#`12+-c0*o8(3e84bt2|<|?o)<-f0q}=Kj'`fv0>
"(.pqUlqm)9',VQ#g70;L0Drr<3dd1{i)4c-
THof-#(iht2h;D??tdcb=x!.$~x1wB'=($}>gX?n#
kve$\i-z%~*g<*%+10re>~" N{*vzs.{!e51%+77*g7U70=f8 cTh?t?|7?c$#f8+`P5gh#m'lv4" *+(^rq$d|c"d.r|#>k0644d2e}<7 k&<`6m,6$h*2c}IZVlh|5
O
9m9fwm@o0&}#+%qS7Yq)Ps/dy2h/C~Gz`-s sh>,;':3we9,bp.qzq"R*c56%+5,nv01=;h;4nx75t<Ua$$b5Pt<g
ldv2"'-+w}v-`C/d!.w|)=z7=j:f{Z=g;k?X Ge$|7;j*( a9S;Z*\dh> 8?pbkb8'y (rw;ws+6")| oy<K# bso
xl{.!e
O%:5pJ4_#!aq*vXx*~"e5?"74.mCr02a51m}4u?k*k(yt0c.H
h`~)#&-.w~t-Npf"f& }_8n479cksr:5m8D:wo(1f+u0d#+
#`Kx6j9oA196c8+W%#}>wp#!zFt>b&bv`-ti./|X)k),9Vg5~!%gP%r}t /&j?!)8k*j-,w01>f4Dv1:q?q8N# e5(}oEh+ `Uz8j!."*.R{ c}c&a$yTw6n64C?f~;5M<e6}k!?L$y7l
xknx;n.5K; ?ufkM4yjx$y|&(6Pj~94* gZfva,z Ul:.7)$25tf=~Dv,~zq*|
n051!(17n<r54:H5my76|?z>14m!$o0/!}z8`g.id{2*.*#rsy*n~cmpp|+7n138f?`yv0)b6??xk?a!x:E
*.
naH=k8
6@oG79/y#*'_z4s+jMS('$hy;bBzasi.N)d;6'!:1zau$%i+)rz^'u&`o1#>3gv37*74e81hx12R2^<k)$M=
uu1n>a&lgs7
)*.~{t%n9tA#h-$yx(o40nc?Arv<0a>oqA/4a(u8>4b"/Id|2f<j7#0qfk`>/p
''|z6ws*;,!"MN5U2H-jugC`-%|
l2.-:|Ho}!"c|v^t.t'c5t60+oP>1?1=;]]=6|;x>a f<wy8>l7Fnai_2'$"-)r{X"`zg/d$+Py+3o<?=9j7byt85
d/0K6{j 3cu80f/"#
,ihx:lm ;ydna!Y-*#yy6W*!z+h{9b}R,!~j!r -J6l
7-<?5~e<v) ;ks.u}q-|'D80!$34*Jr:4<a8j}70x<zN)$f0*
@tZch%Y
aI0"/+)~U%,`yd#M(wt(3g462Bc:jrq5d;acxf+d-{G;f$!+
8kr%`<j0T7sIjo=/y!&%|)1qy.!} my>j* oqg
xiv>xs_k82%<<pa1^("c|*sryu&b65&,3nv?5G51cx34tq?o/'d%t}8gD*o`~2$
+),w|v-oTc&c &wx/0B=3
5g6bRw59 `4d1_f.6a+~f.+
lYsTm
?k>
v`jf</q (q~2wq&"-#t hc
_fqbz@'~#~f{ejE+" 8[h9v&+Cnv.Wzq-~):4:3-,21-`s<:c91by<x;u6o+0)f0s<Ln"h`v2>'!-.|tj}e"c&#xX">n76=M3b~t;9`d>vc-2i$R5n,) *ihz8\n0A7=vlm`8u-)%|{6Y%.!x:d~2i,bug+z`-z!v-e8,%twh/`9z&-G}.vvq.y w=0;")7:)b?s70:f<cy96u9}7=b*$o4!
sR9g>!l)kv0'#").^pq-cyc.c
,tx/5j344=j8o-s;1 j<l0xg.20h-t6
%i`x4=m?qaKj8-$).r
 
Inscrit
5 Novembre 2016
Messages
56
Reactions
2
#7
je ne peux toujours pas décrypter ma map :'(, je programme en java
 
Inscrit
8 Octobre 2016
Messages
5
Reactions
0
#8
Effectivement, mais l'algo est toujours éronné pour autant :x
 
Inscrit
5 Novembre 2016
Messages
56
Reactions
2
#12
je ne le trouve pas, je parle du code qui fonctionne, non pas le code qui ne fonctionne pas.
j'ai rajouté le URLEncoder.encode(dataToDecrypt, "UTF-8"); mais cela n'a pas marché malheureusement :'(
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#13
Tu sais dejà que c'est l'encodage, fais quelque recherches à ce sujet.
 
Inscrit
27 Mai 2016
Messages
14
Reactions
0
#15
Yop, je sais pas si le problème est résolu, mais je poste quand même un code qui devrait fonctionner (en c#):

C#:
private static string DecypherData(string data, string decryptKey)
        {
            try
            {
                var result = string.Empty;

                if (decryptKey == "") return data;

                decryptKey = PrepareKey(decryptKey);
                var checkSum = CheckSum(decryptKey)*2;

                for (int i = 0, k = 0; i < data.Length; i += 2)
                {
                    result +=
                        (char)
                            (int.Parse(data.Substring(i, 2), NumberStyles.HexNumber) ^
                             decryptKey[(k++ + checkSum)%decryptKey.Length]);
                }
                return Uri.UnescapeDataString(result);
            }
            catch
            {
                return "error";
            }
        }

        private static string PrepareKey(string key)
        {
            var keyResult = string.Empty;
            for (var i = 0; i < key.Length; i += 2)
                keyResult += Convert.ToChar(int.Parse(key.Substring(i, 2), NumberStyles.HexNumber));
            return Uri.UnescapeDataString(keyResult);
        }

        private static int CheckSum(string data) => data.Sum(t => t%16)%16;

J'ai testé avec les infos données dans le premier post et ça fonctionne :)

Voila, après à adapter en java :p
 
Inscrit
25 Juin 2016
Messages
27
Reactions
2
#16
J'ai pas compris se que vous voulez faire en faite :

- casser la key d'une map pour déchiffrer une mapdata
- ou déchiffrer la map data avec une key qui existe déjà (qu'ont a en ça possession) ?

car AME utilise le deuxiemme systéme il déchiffre qu'avec une key qu'ont connait déjà
 
Inscrit
1 Juin 2016
Messages
20
Reactions
2
#17
Il voulait juste savoir comment ça fonctionnait réellement pour pouvoir rendre plus propre sa traduction vers le Java.
 
Inscrit
31 Mars 2016
Messages
33
Reactions
0
#18
En fait, j'ai converti tout le code en Java, mais je penses mettre trompé quelque part mais je ne sais où.

Le code :

Java:
public static String Checksum(String Data)
    {
        int num = 0;
        int num3 = Data.length() - 1;
        int i = 0;
        while (i <= num3)
            num += ((int)Data.substring(i, ++i).charAt(0) % 0x10);
        String strArray[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
        return strArray[num % 0x10];
    }
    public static String DecypherData(String Data, String Key, int Checksum)
    {
            String dataToDecrypt = null;
            int num4 = Data.length() - 2;
            int i = 0;
            while (i <= num4)
            {
                int num = (int)(Integer.parseInt(Data.substring(i, i + 2), 0x10));
                int nb = (int)(Math.round((double)((((i / 2) + Checksum) % (double)(Key.length())))));
                int num2 = (int)Key.substring(nb, nb + 1).charAt(0);
                dataToDecrypt += String.valueOf((char)(num ^ num2));
                i += 2;
            }
           return dataToDecrypt;
    }
    public static String PrepareKey(String Data)
    {
        String dataToDecrypt = null;
        int num2 = (Data.length() - 2);
        int i = 0;
       while (i <= num2)
       {
           dataToDecrypt += String.valueOf(String.valueOf(Integer.parseInt(Data.substring(i, i + 2), 0x10)).charAt(0));
           i += 2;
       }
       return dataToDecrypt;
    }
Ce que j'obtient : Je ne peux pas copier coller puisque les caractères obtenus ne sont même pas correct (sorti du tableau ascii).

L'implémentation :
Java:
key = PrepareKey(key);
       int checksum = (int)((Integer.parseInt(Checksum(key), 0x10) * 2));
       String MapData = DecypherData(mapData, key, checksum);
Implémentation en VB.net
Code:
 Key = Decryptage.PrepareKey(Key)
                Dim checksum As Integer = CInt((Convert.ToInt64(Decryptage.Checksum(Key), &H10) * 2))
                MapData = Decryptage.DecypherData(MapData, Key, checksum)
En fait, j'ai converti tout le code en Java, mais je penses mettre trompé quelque part mais je ne sais où.

Le code :

Java:
public static String Checksum(String Data)
    {
        int num = 0;
        int num3 = Data.length() - 1;
        int i = 0;
        while (i <= num3)
            num += ((int)Data.substring(i, ++i).charAt(0) % 0x10);
        String strArray[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
        return strArray[num % 0x10];
    }
    public static String DecypherData(String Data, String Key, int Checksum)
    {
            String dataToDecrypt = null;
            int num4 = Data.length() - 2;
            int i = 0;
            while (i <= num4)
            {
                int num = (int)(Integer.parseInt(Data.substring(i, i + 2), 0x10));
                int nb = (int)(Math.round((double)((((i / 2) + Checksum) % (double)(Key.length())))));
                int num2 = (int)Key.substring(nb, nb + 1).charAt(0);
                dataToDecrypt += String.valueOf((char)(num ^ num2));
                i += 2;
            }
           return dataToDecrypt;
    }
    public static String PrepareKey(String Data)
    {
        String dataToDecrypt = null;
        int num2 = (Data.length() - 2);
        int i = 0;
       while (i <= num2)
       {
           dataToDecrypt += String.valueOf(String.valueOf(Integer.parseInt(Data.substring(i, i + 2), 0x10)).charAt(0));
           i += 2;
       }
       return dataToDecrypt;
    }
Ce que j'obtient : Je ne peux pas copier coller puisque les caractères obtenus ne sont même pas correct (sorti du tableau ascii).

L'implémentation :
Java:
key = PrepareKey(key);
       int checksum = (int)((Integer.parseInt(Checksum(key), 0x10) * 2));
       String MapData = DecypherData(mapData, key, checksum);
Implémentation en VB.net
Code:
 Key = Decryptage.PrepareKey(Key)
                Dim checksum As Integer = CInt((Convert.ToInt64(Decryptage.Checksum(Key), &H10) * 2))
                MapData = Decryptage.DecypherData(MapData, Key, checksum)

Tu n'es pas loin de la vérité, en effet il ne te manque apparemment qu'à "unescape" le string renvoyé par les méthodes prepareKey et DecypherData.
J'utilise pour ça URLDecoder.decode(la_chaine, "UTF-8");
 
Inscrit
6 Mars 2017
Messages
3
Reactions
0
#19
Bonjour:), pardonnez moi de ressortir ce vieux sujet mais serait-il possible d'obtenir plus d'information sur le decryptage de map?
je travail actuellement sous Qt (C++) a fin que mon programme puisse être portable cependant j'ai du mal a comprendre tout le code:

C#:
private static string DecypherData(string data, string decryptKey)
        {
            try
            {
                var result = string.Empty;  //créer une chaine de caractére.

                if (decryptKey == "") return data; //si la clef est vide on retourne data

                decryptKey = PrepareKey(decryptKey);
                var checkSum = CheckSum(decryptKey)*2;

                for (int i = 0, k = 0; i < data.Length; i += 2)
                {
                    result +=
                        (char)
                            (int.Parse(data.Substring(i, 2), NumberStyles.HexNumber) ^
                             decryptKey[(k++ + checkSum)%decryptKey.Length]);
                           // ici je suppose que l'on recupére la chaine de caractere de data a l'emplacement (depart:i jusque i+2) et que l'on convertis le tout en hexa, le tout puissance
                          //  du caractére(k+1 +le checkSum)modulo longueur key

                }
                return Uri.UnescapeDataString(result); // ici je ne comprend pas vraiment ..
            }
            catch
            {
                return "error";
            }
        }

        private static string PrepareKey(string key)
        {
            var keyResult = string.Empty;
            for (var i = 0; i < key.Length; i += 2)
                keyResult += Convert.ToChar(int.Parse(key.Substring(i, 2), NumberStyles.HexNumber));
                // retournerai le caractére Obtenu par le code ASCII en Hexa de key a l'emplacement depart i et deux caractères plus loin)

            return Uri.UnescapeDataString(keyResult); // je ne comprend pas non plus ici ..
        }

        private static int CheckSum(string data) => data.Sum(t => t%16)%16;  // mais mon plus gros soucis se situe sur cette fonction ci que je ne comprend pas du tout ..

j'ai commenter le code a fin que vous puissiez mieux m'aider ou me corriger là ou j'aurai tord ;)
 
Inscrit
5 Novembre 2016
Messages
56
Reactions
2
#20
Uri.UnescapeDataString(result); permet de convertir la chaine de caractere en UTF-8

Ex : au lieu d'avoir 1%202%453, tu vas avoir 1+2=3

Uri.UnescapeDataString("%20") retourne "+" en utf-8
 
Haut Bas