Post
Topic
Board Scam Accusations
Re: How 999dice.com is stealing your coins, and exactly why you won't believe me
by
remon78eg
on 30/11/2016, 14:46:31 UTC
/*
I Think, To Get 100% Fair Bets, Do That Test With Every Bet
Note That ServerSeedHash Is The Same For All (BTC,DOGE,LTC)
So If You Run More Than One Bot You Have To Do Some Complex Programming To Know The Next ServerSeedHash Because May Be It Taken By Other Bot And The Server Create New One.
*/

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 ServerSeedHash = DiceWebAPI.GetServerSeedHash(Session).ServerSeedHash;
            int clientSeed = 333;//any number
            int BetNumber = 0;//must be 0

            var res = DiceWebAPI.PlaceBet(Session, decimal.Parse("-0.00000001"), 0, 499499, clientSeed, Currency);
            if (!res.Success) { return; }
            var it = VerifyBetResult(res.ServerSeed, clientSeed, BetNumber, res.Secret, ServerSeedHash);
            if (!it) MessageBox.Show("Something wrong!!");


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