Page 1 of 1

InBetween and the Majestic Chess engine WinChess (Kittinger)

PostPosted: 15 Sep 2005, 23:43
by Dann Corbit
For those who have used InBetween, what is the engine reading and what is the engine writing, from the following listings:

Z:\Program Files\Majestic Chess\res>type logfile.log
0.000: - Starting server: C:\Program Files\Majestic Chess\res\winchess.dbg.exe
0.000: - Priority class set to normal
0.000: - Thread priority set to normal
0.060: > protover 2
0.170: < feature playother=1
0.170: < feature setboard=1
0.170: < KITTINX SK=1316392572 VE=1.6 EL=1 KS=100 PW=100 FD=0 MP=0 CD=0
0.180: > tdelay=1
0.180: > new
0.180: > KITTINX SR=471666 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
0.180: > level 1 0:1 0
0.180: > allpvs
0.180: > hard
0.180: > learnon
0.180: > nopost
0.360: < KITTINX VE=1.6 SR=471666 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
0.360: <
18.717: > quit
18.717: >



Z:\Program Files\Majestic Chess\res>type logfile.log
0.000: - Starting server: C:\Program Files\Majestic Chess\res\winchess.dbg.exe
0.110: - Priority class set to normal
0.110: - Thread priority set to normal
0.180: > protover 2
0.240: < feature playother=1
0.240: < feature setboard=1
0.240: < KITTINX SK=1318004980 VE=1.6 EL=1 KS=100 PW=100 FD=0 MP=0 CD=0
0.441: > tdelay=1
0.441: > new
0.441: > KITTINX SR=471952 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
0.441: > level 1 0:1 0
0.441: > allpvs
0.441: > hard
0.451: > learnon
0.451: > nopost
0.621: < KITTINX VE=1.6 SR=471952 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
0.621: <
13.720: > quit
13.720: >

Re: InBetween and the Majestic Chess engine WinChess (Kittin

PostPosted: 16 Sep 2005, 07:15
by Fabien Letouzey
Hi Dann,

From what I see,
">" means GUI -> engine
"<" means engine -> GUI

Fabien.

Re: InBetween and the Majestic Chess engine WinChess (Kittin

PostPosted: 16 Sep 2005, 18:37
by Dann Corbit
That would imply this conversation:

Z:\Program Files\Majestic Chess\res>type logfile.log
0.000: - Starting server: C:\Program Files\Majestic Chess\res\winchess.dbg.exe
0.000: - Priority class set to normal
0.000: - Thread priority set to normal
: GUI -> engine$> protover 2
: engine -> GUI$> feature playother=1
: engine -> GUI$> feature setboard=1
: engine -> GUI$> KITTINX SK=1316392572 VE=1.6 EL=1 KS=100 PW=100 FD=0 MP=0 CD=0
: GUI -> engine$> tdelay=1
: GUI -> engine$> new
: GUI -> engine$> KITTINX SR=471666 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
: GUI -> engine$> level 1 0:1 0
: GUI -> engine$> allpvs
: GUI -> engine$> hard
: GUI -> engine$> learnon
: GUI -> engine$> nopost
: engine -> GUI$> KITTINX VE=1.6 SR=471666 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
: engine -> GUI$>
: GUI -> engine$> quit
: GUI -> engine$>

Z:\Program Files\Majestic Chess\res>type logfile.log
0.000: - Starting server: C:\Program Files\Majestic Chess\res\winchess.dbg.exe
0.110: - Priority class set to normal
0.110: - Thread priority set to normal
: GUI -> engine$> protover 2
: engine -> GUI$> feature playother=1
: engine -> GUI$> feature setboard=1
: engine -> GUI$> KITTINX SK=1318004980 VE=1.6 EL=1 KS=100 PW=100 FD=0 MP=0 CD=0
: GUI -> engine$> tdelay=1
: GUI -> engine$> new
: GUI -> engine$> KITTINX SR=471952 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
: GUI -> engine$> level 1 0:1 0
: GUI -> engine$> allpvs
: GUI -> engine$> hard
: GUI -> engine$> learnon
: GUI -> engine$> nopost
: engine -> GUI$> KITTINX VE=1.6 SR=471952 OP= 1 OQ= 9 ON= 3 OB= 3 OR= 5 CP= 1 CQ= 9 CN= 3 CB= 3 CR= 5 EL=100 KS=100 PW=100 FD=0 MP=0 CD=0
: engine -> GUI$>
: GUI -> engine$> quit
: GUI -> engine$>

Most of the fields are obvious (e.g piece weights).

I guess the one thing I have to figure out in order to run it in other GUIs is how to calculate the GUI SR number given the SK number.

I don't see any really obvious relationship...
C:\>factor 1316392572
first trying brute force division by small primes
PRIME FACTOR 2
PRIME FACTOR 2
PRIME FACTOR 3
PRIME FACTOR 11
PRIME FACTOR 967
PRIME FACTOR 10313
C:\>factor 471666
first trying brute force division by small primes
PRIME FACTOR 2
PRIME FACTOR 3
PRIME FACTOR 13
PRIME FACTOR 6047


C:\>factor 1318004980
first trying brute force division by small primes
PRIME FACTOR 2
PRIME FACTOR 2
PRIME FACTOR 5
PRIME FACTOR 1093
PRIME FACTOR 60293
C:\>factor 471952
first trying brute force division by small primes
PRIME FACTOR 2
PRIME FACTOR 2
PRIME FACTOR 2
PRIME FACTOR 2
PRIME FACTOR 13
PRIME FACTOR 2269

I will probably try modulus with various prime numbers.

Re: InBetween and the Majestic Chess engine WinChess (Kittin

PostPosted: 18 Sep 2005, 16:11
by Michael Yee
Hi Dann,

Interesting stuff so far...

Could you run a couple more inbetween sessions to get some more data points? One thing I'm curious about is if the SK number is related to milliseconds since some epoch date. (Because if it is, then at least there's nothing too special about *that* number.)

Also, it might be interesting to make a small utility that pretends to be the majestic engine so you can send the GUI your own SK numbers. For example, sending it a "0" could help discover some magical additive constant (if the relationship includes one).

Michael

Re: InBetween and the Majestic Chess engine WinChess (Kittin

PostPosted: 19 Sep 2005, 14:57
by Dann Corbit
I have decided not to persue it.

I actually know how it works, since I did an assembly dump of the program.

However, I think that it may be circumventing the author's wishes to run the program in some other interface so I will not publish any of my findings.

I also will not use Winchess outside of the interface myself, even though I could easily do it now.

Re: InBetween and the Majestic Chess engine WinChess (Kittin

PostPosted: 19 Sep 2005, 15:07
by Michael Yee
Your decision sounds wise...

I was mainly interested in the problem from a cryptanalysis sort of angle--examining plaintext and cyphertext given you have the actual "machine". But since you did in fact have the actual machine, I guess you found a more direct way :)

Michael