Halo 3 Retail Game Research

Discussion about modding Halo 3.
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

Digital Marine wrote:Doesn't look like it is.

EDIT:
Looks like there is some hash on the bottom of the info file to? I don't see any relation to the .map file though.
Yeah I noticed that also, I don't believe it does either.
Digital Marine





Posts: 50
Joined: Mon Dec 27, 2004 7:02 am

Post by Digital Marine »

I want to say in the .map file the hash is an RSA-460. I can't really prove it...just it seems like it.

Why I don't think it's a SHA1 list? Take 460, the length of the .map hash, divided by 40, the length of a SHA1 hash, and you get 11.5. That wouldn't make sense.

Why isn't it an MD5 list? Same thing, 460 divided by 32 and you get 14.375. Again, that wouldn't make sense.

It can't be SHA256 because 256 can't even go in 460 evenly... For sure it can't be SHA384 or SHA512...
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

Your sizes are off a SHA-1 hash has a size of 20(Dec) and a MD5 hash is 16(Dec)
Digital Marine





Posts: 50
Joined: Mon Dec 27, 2004 7:02 am

Post by Digital Marine »

I guess I was thinking of digit length. But still, MD5 wouldn't fit into the size. SHA1 would fit...but 23 different hashes for such a small area? That doesn't really make sense.
User avatar
Anthony




Translator Connoisseur New Age ONI

Posts: 1001
Joined: Thu Jul 06, 2006 10:19 pm
Location: Whittier, CA
Contact:

Post by Anthony »

even the raw offsets have a magic\baseaddress added to them :\

lol and if you guys keep thinking that hash is that big and in that location you will never find it :P
Image
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

If anyone needs help calculating the magic, I just made this function for it:

Code: Select all

        public int CalcMagic(int fileSize)
        {
            int magic = 0;
            uint magicCalc = 3218235392;

            double result = (double)fileSize / (double)16384;
            string resStr = result.ToString();
            if (int.Parse(resStr.Substring(resStr.IndexOf(".") + 1, 1)) > 5)
            {
                fileSize += 16384;
                magic = (int)magicCalc - fileSize;
            }
            else
            {
                magic = (int)magicCalc - fileSize;
            }
           
            return magic;
        }
Image
User avatar
Shadow LAG
Readers Club




Articulatist 500

Posts: 676
Joined: Sat Apr 02, 2005 5:47 pm
Contact:

Post by Shadow LAG »

I have some more disks to waste, Hit leo or I up msn tonight Shade and I can test a few more things. :wink:
Long live Detox
Long live leo
Long live the trust.

Sticking it to the man since 16 Jun 2005
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

LuxuriousMeat wrote:If anyone needs help calculating the magic, I just made this function for it:
[...]
Meh, your method is a bit long winded. Here:

Code: Select all

        private int GetMagic(int fileSize)
        {
            const uint constant = 3218235392;
            double div = (double)fileSize / 16384d;
            double diff = Math.Round(div) - div;
            if (diff > 0 && diff < .5) fileSize += 16384;
            return (int)(constant - fileSize);
        }
But neither work right for the mainmenu map.
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

Prey wrote:
LuxuriousMeat wrote:If anyone needs help calculating the magic, I just made this function for it:
[...]
Meh, your method is a bit long winded. Here:

Code: Select all

        private int GetMagic(int fileSize)
        {
            const uint constant = 3218235392;
            double div = (double)fileSize / 16384d;
            double diff = Math.Round(div) - div;
            if (diff > 0 && diff < .5) fileSize += 16384;
            return (int)(constant - fileSize);
        }
But neither work right for the mainmenu map.
Neither work for any campaign maps I've tried and they don't work on all of the MP maps either...
Image
Digital Marine





Posts: 50
Joined: Mon Dec 27, 2004 7:02 am

Post by Digital Marine »

This is what I used to calculate the magic while looking for stuff. Not sure if it works for all maps, but the few maps I've worked with seem to work just fine.

Code: Select all

private int GetMagic(int iFileSize)
{
Int64 iMagic = 3218235392 - iFileSize;
iMagic += iMagic % 4096;
return iMagic;
}
Well...I've changed it a little on my program....but that is basically what I do.
User avatar
Anthony




Translator Connoisseur New Age ONI

Posts: 1001
Joined: Thu Jul 06, 2006 10:19 pm
Location: Whittier, CA
Contact:

Post by Anthony »

i wouldn't bother too much with any of your guys methods. theres another way to calculate it it just needs to be found, so instead of trying to hack up a way you should just try and figure it out :p
Digital Marine





Posts: 50
Joined: Mon Dec 27, 2004 7:02 am

Post by Digital Marine »

Anthony wrote:i wouldn't bother too much with any of your guys methods. theres another way to calculate it it just needs to be found, so instead of trying to hack up a way you should just try and figure it out :p
Agreed :) Just out of curiosity, where did 3218235392 come from?
User avatar
Anthony




Translator Connoisseur New Age ONI

Posts: 1001
Joined: Thu Jul 06, 2006 10:19 pm
Location: Whittier, CA
Contact:

Post by Anthony »

Digital Marine wrote:
Anthony wrote:i wouldn't bother too much with any of your guys methods. theres another way to calculate it it just needs to be found, so instead of trying to hack up a way you should just try and figure it out :p
Agreed :) Just out of curiosity, where did 3218235392 come from?
I_F prob found the index header and subtracted whats at 0x16 by it then with that value prob added the map size

why he used the size of the map is unkown to me :?
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

Anthony wrote: why he used the size of the map is unkown to me :?
I dunno is it because the mind of a genius works in mysterious ways?
User avatar
Anthony




Translator Connoisseur New Age ONI

Posts: 1001
Joined: Thu Jul 06, 2006 10:19 pm
Location: Whittier, CA
Contact:

Post by Anthony »

shade45 wrote:
Anthony wrote: why he used the size of the map is unkown to me :?
I dunno is it because the mind of a genius works in mysterious ways?
i genius woulda done it the correct way in the first place :wink:
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

First post updated. Also Ant, why are you being secretive about how to calculate the value? I mean if your going to keep it a secret, then could you just stop telling us that you know how? As it's not of much interest to us. Perhaps also stop talking about people that are actually helping in such a way too. Cheers, appreciated.
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

Prey wrote:First post updated. Also Ant, why are you being secretive about how to calculate the value? I mean if your going to keep it a secret, then could you just stop telling us that you know how? As it's not of much interest to us. Perhaps also stop talking about people that are actually helping in such a way too. Cheers, appreciated.
I don't think he knows how, he is just saying that the way we're doing it now isn't the correct way...
Image
User avatar
Anthony




Translator Connoisseur New Age ONI

Posts: 1001
Joined: Thu Jul 06, 2006 10:19 pm
Location: Whittier, CA
Contact:

Post by Anthony »

Prey wrote:First post updated. Also Ant, why are you being secretive about how to calculate the value? I mean if your going to keep it a secret, then could you just stop telling us that you know how? As it's not of much interest to us. Perhaps also stop talking about people that are actually helping in such a way too. Cheers, appreciated.
no where did I say i knew how... I just said its the wrong way... is it not? and i have not been so "secretive" about it because ive already helped a few people out
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

Lul then you said in a very roundabout way. I apologise. Anyway lets not let this thread derail any further.

Edit: Here, I made a quick app that finds a few things in the map files that should help. Thanks Matt for running the program ^_^

Code: Select all

Name              | Header Index Offset | Actual Index Offset | Needed Subtractor
===================================================================================
005_intro.map     | -1091704276         | 130619948           | -1222324224      
010_jungle.map    | -1106744128         | 287091904           | -1393836032      
020_base.map      | -1112240656         | 383786480           | -1496027136      
030_outskirts.map | -1115160620         | 323903444           | -1439064064      
040_voi.map       | -1117284580         | 363640604           | -1480925184      
050_floodvoi.map  | -1117129820         | 360727460           | -1477857280      
070_waste.map     | -1120285260         | 388021684           | -1508306944      
100_citadel.map   | -1121314592         | 462260448           | -1583575040      
110_hc.map        | -1109401492         | 256692332           | -1366093824      
120_halo.map      | -1119668648         | 355837528           | -1475506176      
130_epilogue.map  | -1091357892         | 128516924           | -1219874816      
campaign.map      | 0                   | 0                   | 0                
chill.map         | -1093350492         | 80661412            | -1174011904      
construct.map     | -1092501472         | 86515744            | -1179017216      
cyberdyne.map     | -1093801764         | 83618012            | -1177419776      
deadlock.map      | -1096629836         | 89493940            | -1186123776      
guardian.map      | -1092043300         | 86588892            | -1178632192      
isolation.map     | -1093323984         | 100995888           | -1194319872      
mainmenu.map      | -1083644960         | 47240160            | -1130885120      
riverworld.map    | -1095009480         | 90868536            | -1185878016      
salvation.map     | -1091413144         | 68385640            | -1159798784      
shared.map        | 0                   | 0                   | 0                
shrine.map        | -1095513764         | 87480668            | -1182994432      
snowbound.map     | -1095927484         | 69773636            | -1165701120      
zanzibar.map      | -1095103188         | 111152428           | -1206255616  
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
Anthony




Translator Connoisseur New Age ONI

Posts: 1001
Joined: Thu Jul 06, 2006 10:19 pm
Location: Whittier, CA
Contact:

Post by Anthony »

prey you should convert them to hex instead of dec, it would make it a bit easier to read. and also it helps find any values taht are in the header unless you have yours set to display dec instead of hex =p
Post Reply