Help Crack NAV Screen Diag PIN Code
http://www.coastaletech.com/GMLOCKPICK.htm
http://www.coastaletech.com/GMLOCKPICK.htm
The Best of Corvette for Corvette Enthusiasts

Mike
I see enough code in my daily job that I really don't want to come home and work on it as a project. Being that it's machine code, I'm pretty far out of my element -- that was the only programming class I had trouble with in college and I just barely passed it. Not to be bitter, but I'm not encouraged to work on it when everyone else seems to have the attitude of, "let me know when you find something".
So, yes, it's taken a year to find "something" and progress is slow. It took us six months just to find the three codes I did find. I'm confident there are others, because after digging through at least a half dozen different loading.kwi files, ours is the only one I can extract valid codes from -- but that doesn't stop other forums from finding codes that work in their systems. There's a lot of good information in this thread, but I see few people making a serious attempt to build on what SonarTech, myself, Buffy, and a few others have discovered.
What I'm trying to say is, if you aren't actively helping, I don't think it's fair to criticize the rest of us for taking too long to make progress.



http://avelectronic.com/products.htm
So there were a couple of codes mentioned earlier in the thread that had some effect. Specifically 660, 9448 and 295660.
I grabbed NAVUpdateFiles.zip from earlier in the thread and did a quick search for all 6 digits numerics stored within the LOADING.KWI and I've output them below for posterity. 9448 and 295660 show up here.. 660 doesn't.. so it's at least partial confirmation of the method.
This method should grab any numeric that's stored in the binary and is used for comparison (i.e., compare user input to that of a code list). What it wouldn't catch is if that comparison method included a rolling code. In other words, if the Denso engineers designed the system such that the appropriate code as based on the date/time/etc.
That could be figured out also, with IDA pro.. but that's beyond the scope of my caring.

Anyway, for posterity, here is a list of the 47 unique numerics in the LOADING.KWI I found of which there are 2 that are apparently verified.
Enjoy:
strings LOADING.KWI | egrep '^[0-9]{1,6}$'|sort | uniq
0033
0066
0080
0405
0514
0519
0618
07070
08080
0920
1001
11100
1412
1620
1791
1922
2222
295660
3060
3122
323333
3311
33311
3333
333333
3337
4108
4154
4441
4443
4554
5555
6666
66665
666666
70070
7774
7777
81791
8660
8888
89448
9311
93393
93939
9448
9999
-jbl
So there were a couple of codes mentioned earlier in the thread that had some effect. Specifically 660, 9448 and 295660.
I grabbed NAVUpdateFiles.zip from earlier in the thread and did a quick search for all 6 digits numerics stored within the LOADING.KWI and I've output them below for posterity. 9448 and 295660 show up here.. 660 doesn't.. so it's at least partial confirmation of the method.
This method should grab any numeric that's stored in the binary and is used for comparison (i.e., compare user input to that of a code list). What it wouldn't catch is if that comparison method included a rolling code. In other words, if the Denso engineers designed the system such that the appropriate code as based on the date/time/etc.
That could be figured out also, with IDA pro.. but that's beyond the scope of my caring.

Anyway, for posterity, here is a list of the 47 unique numerics in the LOADING.KWI I found of which there are 2 that are apparently verified.
Enjoy:
strings LOADING.KWI | egrep '^[0-9]{1,6}$'|sort | uniq
0033
0066
...
9448
9999
-jbl
When you type any of the code, you just go back to the menu. Unless one of these do something and just go back to the main screen without displaying antything.
Guess we'll have to look further...
Mike

However, using this method on any other loading.kwi file I've found so far turns up no working numbers, not even ones previously known.
Ida Pro is beyond the scope of my knowledge, but I can give my copy to anyone that can use it along all loading.kwi files I currently have.
I've not looked hard to see what CPU is being used yet though.... then the reality is that LOADING.KWI more than likely has a couple of portions to it.. i.e., compressed and uncompressed data... it's highly likely that there is something like a tar hidden in there somewhere.
The quickest way I can think of to determine that would be something that byte-walked the file and did a comparison at each offset to a known good (i.e., full) /etc/magic (unix-ism, used by the 'file' command).
With that said, I'd -really- like to disable the inability to use NAV whilst moving... best case, I've got a passenger in the car that can use it.. worst case, I'm being a dumbass trying to program it myself whilst doing 80mph. I think I should have the right to make that call.
Perhaps sometime I'll dig into that.. but without the ability to run the code on a unit and break into it with a debugger, it'd be fairly difficult to randomly find the right bits to twiddle with or without IDA Pro.
anyway....
-jbl
However, using this method on any other loading.kwi file I've found so far turns up no working numbers, not even ones previously known.
Ida Pro is beyond the scope of my knowledge, but I can give my copy to anyone that can use it along all loading.kwi files I currently have.
-jbl
However, using this method on any other loading.kwi file I've found so far turns up no working numbers, not even ones previously known.
Ida Pro is beyond the scope of my knowledge, but I can give my copy to anyone that can use it along all loading.kwi files I currently have.
Can't guarantee that I can come up with something interesting (or even with anything at all), but if you can give a copy of Ida Pro and sum up to me what you've done so far, I can try to jump in.
I guess the way to go would be to see how and when in the code it switches between "input enabled mode" and "greyed mode" and see if there is some sort of test on top of the speed check. Then look for what other element is being tested there and see if there is a way to change that element somewhere else in the code.
Seems easy as it's said, but I know that coud be a hell of a task to figure it out through thousands of line of code, especially in assembler.
If the ability to input destinations while moving is not built in the current code, then we'll have to program a patch to add it. Now that would be even more complicated to do and probably too complicated (for me at least).

-jbl
If the ability to input destinations while moving is not built in the current code, then we'll have to program a patch to add it. Now that would be even more complicated to do and probably too complicated (for me at least).
However, hacks like that are best performed when one can debug live against target hardware. I've been pondering on the right method to attack this problem....
-jbl








