示例#1
0
        /*
         * void dump(byte[] foo){
         * for(int i=0; i<foo.length; i++){
         *      if((foo[i]&0xf0)==0)System.out.print("0");
         *      System.out.print(Integer.toHexString(foo[i]&0xff));
         *      if(i%16==15){System.out.println(""); continue;}
         *      if(i%2==1)System.out.print(" ");
         * }
         * }
         */

        internal static Fireball.Ssh.java.String[] guess(byte[] I_S, byte[] I_C)
        {
            //System.out.println("guess: ");
            Fireball.Ssh.java.String[] guess = new Fireball.Ssh.java.String[PROPOSAL_MAX];
            Buffer sb = new Buffer(I_S); sb.setOffSet(17);
            Buffer cb = new Buffer(I_C); cb.setOffSet(17);

            for (int i = 0; i < PROPOSAL_MAX; i++)
            {
                byte[] sp = sb.getString();                // server proposal
                byte[] cp = cb.getString();                // client proposal

                //System.out.println("server-proposal: |"+new String(sp)+"|");
                //System.out.println("client-proposal: |"+new String(cp)+"|");

                int j = 0;
                int k = 0;
                //System.out.println(new String(cp));
                //loop(using BREAK instead):
                while (j < cp.Length)
                {
                    while (j < cp.Length && cp[j] != ',')
                    {
                        j++;
                    }
                    if (k == j)
                    {
                        return(null);
                    }
                    String algorithm = Util.getString(cp, k, j - k);
                    //System.out.println("algorithm: "+algorithm);
                    int l = 0;
                    int m = 0;
                    while (l < sp.Length)
                    {
                        while (l < sp.Length && sp[l] != ',')
                        {
                            l++;
                        }
                        if (m == l)
                        {
                            return(null);
                        }
                        //System.out.println("  "+new String(sp, m, l-m));
                        if (algorithm.Equals(Util.getString(sp, m, l - m)))
                        {
                            guess[i] = algorithm;
                            //System.out.println("  "+algorithm);
                            goto BREAK;
                        }
                        l++;
                        m = l;
                    }
                    j++;
                    k = j;
                }
BREAK:
                if (j == 0)
                {
                    guess[i] = "";
                }
                else if (guess[i] == null)
                {
                    //System.out.println("  fail");
                    return(null);
                }
            }

            //    for(int i=0; i<PROPOSAL_MAX; i++){
            //      System.out.println("guess: ["+guess[i]+"]");
            //    }

            return(guess);
        }
示例#2
0
        /*
        void dump(byte[] foo){
          for(int i=0; i<foo.length; i++){
            if((foo[i]&0xf0)==0)System.out.print("0");
            System.out.print(Integer.toHexString(foo[i]&0xff));
            if(i%16==15){System.out.println(""); continue;}
            if(i%2==1)System.out.print(" ");
          }
        }
        */
        internal static Fireball.Ssh.java.String[] guess(byte[]I_S, byte[]I_C)
        {
            //System.out.println("guess: ");
            Fireball.Ssh.java.String[] guess=new Fireball.Ssh.java.String[PROPOSAL_MAX];
            Buffer sb=new Buffer(I_S); sb.setOffSet(17);
            Buffer cb=new Buffer(I_C); cb.setOffSet(17);

            for(int i=0; i<PROPOSAL_MAX; i++)
            {
                byte[] sp=sb.getString();  // server proposal
                byte[] cp=cb.getString();  // client proposal

                //System.out.println("server-proposal: |"+new String(sp)+"|");
                //System.out.println("client-proposal: |"+new String(cp)+"|");

                int j=0;
                int k=0;
                //System.out.println(new String(cp));
            //loop(using BREAK instead):
                while(j<cp.Length)
                {
                    while(j<cp.Length && cp[j]!=',')j++;
                    if(k==j) return null;
                    String algorithm=Util.getString(cp, k, j-k);
                    //System.out.println("algorithm: "+algorithm);
                    int l=0;
                    int m=0;
                    while(l<sp.Length)
                    {
                        while(l<sp.Length && sp[l]!=',')l++;
                        if(m==l) return null;
                        //System.out.println("  "+new String(sp, m, l-m));
                        if(algorithm.Equals(Util.getString(sp, m, l-m)))
                        {
                            guess[i]=algorithm;
                            //System.out.println("  "+algorithm);
                            goto BREAK;
                        }
                        l++;
                        m=l;
                    }
                    j++;
                    k=j;
                }
            BREAK:
                if(j==0)
                {
                    guess[i]="";
                }
                else if(guess[i]==null)
                {
                    //System.out.println("  fail");
                    return null;
                }
            }

            //    for(int i=0; i<PROPOSAL_MAX; i++){
            //      System.out.println("guess: ["+guess[i]+"]");
            //    }

            return guess;
        }