Post
Topic
Board Scam Accusations
Re: How 999dice.com is stealing your coins, and exactly why you won't believe me
by
remon78eg
on 16/12/2016, 03:40:30 UTC
// c# code to verify every bet in the multi bet results


using System.Security.Cryptography;
using System.Globalization;
//==========================================================================================
        static bool VerifyBetResult(string serverSeed, int clientSeed, int betNumber,
                            long betResult, string serverSeedHash = null)
        {
            Func strtobytes = s => Enumerable
                .Range(0, s.Length / 2)
                .Select(x => byte.Parse(s.Substring(x * 2, 2), NumberStyles.HexNumber))
                .ToArray();
            byte[] server = strtobytes(serverSeed);
            byte[] client = BitConverter.GetBytes(clientSeed).Reverse().ToArray();
            byte[] num = BitConverter.GetBytes(betNumber).Reverse().ToArray();
            byte[] serverhash = serverSeedHash == null ? null : strtobytes(serverSeedHash);
            byte[] data = server.Concat(client).Concat(num).ToArray();
            using (SHA512 sha512 = new SHA512Managed())
            {
                if (serverhash != null)
                    using (SHA256 sha256 = new SHA256Managed())
                        if (!sha256.ComputeHash(server).SequenceEqual(serverhash))
                            throw new Exception("Server seed hash does not match server seed");

                byte[] hash = sha512.ComputeHash(sha512.ComputeHash(data));
                while (true)
                {
                    for (int x = 0; x <= 61; x += 3)
                    {
                        long result = (hash[ x ] << 16 ) | (hash[x + 1] << 8 ) | hash[x + 2];
                        if (result < 16000000)
                            return result % 1000000 == betResult;
                    }
                    hash = sha512.ComputeHash(hash);
                }
            }
        }

//==========================================================================================


                var seed = rnd.Next(rnd.Next(0, 111111), rnd.Next(222222, 999999));
                var settings = new AutomatedBetsSettings
                {
                    BasePayIn = baseBet,
                    GuessLow = guessLow,
                    GuessHigh = guessHigh,
                    MaxBets = betCount > Session.MaxBetBatchSize ? Session.MaxBetBatchSize : betCount,
                    ResetOnWin = resetOnWin,
                    ResetOnLose = resetOnLoss,
                    IncreaseOnWinPercent = increaseOnWin,
                    IncreaseOnLosePercent = increaseOnLoss,
                    MaxAllowedPayIn = maxBet,
                    ResetOnLoseMaxBet = resetOnMaxLoss,
                    StopOnLoseMaxBet = stopOnMaxLoss,
                    StopMaxBalance = stopMaxBalance,
                    ClientSeed = seed,//rnd.Next(),
                    Currency = Currency
                };

                var ServerSeedHash = DiceWebAPI.GetServerSeedHash(Session).ServerSeedHash;

                var result = DiceWebAPI.PlaceAutomatedBets(Session, settings);
                if (!result.Success || result.BetCount == 0)
                {
                       return;
                }

                //verify result
                bool it = false;
                for (int i = 0; i < result.BetCount; i++){
                    it = VerifyBetResult(result.ServerSeed, seed, i, result.Secrets, ServerSeedHash);
                    if (!it) { MessageBox.Show("Verify Fail: Something wrong!!"); }
                }