心想事成 发表于 2005-12-8 23:47:02

破解bbiagent 2.0?

反编译出来的

ackage net.bbiagent.explorer.ui.admin;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.LineNumberReader;
import java.security.Signature;
import java.util.Date;
import java.util.Locale;
import java.util.zip.CRC32;
import javax.security.cert.X509Certificate;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import net.bbiagent.explorer.ui.base.f;
import net.bbiagent.explorer.util.b;
import net.bbiagent.explorer.util.d;

// Referenced classes of package net.bbiagent.explorer.ui.admin:
//            h, i

public final class c extends f
{

    private JTextField a;
    private JTextField b;
    private JTextField c;
    private JTextField d;
    private JPanel e;
    private JButton f;
    private Object g[][];

    public c()
    {
      a = new JTextField();
      b = new JTextField();
      c = new JTextField();
      d = new JTextField();
      e = new JPanel();
      new JPanel();
      f = new JButton();
      g = (new Object[][] {
            new Object[] {
                "REF", a
            }, new Object[] {
                "RNAME", b
            }, new Object[] {
                "REMAIL", c
            }, new Object[] {
                "SNO", d
            }
      });
    }

    public final void a()
      throws Exception
    {
      Object aobj[][] = {
            {
                0, a, "ref", new Integer(20)
            }, {
                0, b, "nme", new Integer(20)
            }, {
                0, c, "eml", new Integer(20)
            }, {
                0, d, "sno", new Integer(20)
            }
      };
      e.setBackground(k);
      e.setLayout(new GridBagLayout());
      for(int j = 0; j < aobj.length; j++)
      {
            aobj = new JLabel();
            JLabel jlabel;
            (jlabel = (JLabel)aobj).setFont(l);
            jlabel.setText(h.w((String)aobj));
            jlabel.setAlignmentX(2.0F);
            ((JTextField)aobj).setBackground(Color.white);
            ((JTextField)aobj).setColumns(((Integer)aobj).intValue());
            e.add((JLabel)aobj, new GridBagConstraints(0, j, 1, 1, 0.0D, 0.0D, 13, 0, new Insets(4, 0, 0, 0), 0, 0));
            e.add((JTextField)aobj, new GridBagConstraints(1, j, 2, 1, 0.0D, 0.0D, 17, 0, new Insets(4, 0, 0, 0), 0, 0));
      }

      a.setEditable(false);
      a.setText(h.b("-"));
      f.setFont(l);
      f.setText(h.w("cfm"));
      e.add(f, new GridBagConstraints(1, aobj.length + 1, 2, 1, 0.0D, 0.0D, 17, 0, new Insets(20, 0, 0, 0), 0, 0));
      setLayout(new BorderLayout());
      add(e, "Center");
      f.addActionListener(new i(this));
      b.requestFocus();
    }

    public final void e()
    {
      f.setEnabled(h.i());
    }

    final void a(ActionEvent actionevent)
    {
      if(!c() || !d() || !f())
      {
            h.q("");
            return;
      } else
      {
            b();
            return;
      }
    }

    private boolean c()
    {
      String s;
      if((s = b.getText().trim()).length() == 0)
      {
            b.requestFocus();
            return false;
      } else
      {
            b.setText(s);
            return true;
      }
    }

    private boolean d()
    {
      String s;
      if((s = c.getText().trim()).length() == 0 || s.indexOf('@') < 0)
      {
            c.requestFocus();
            return false;
      } else
      {
            c.setText(s);
            return true;
      }
    }

    private boolean f()
    {
      String s;
      boolean flag;
      if(flag = (s = d.getText().trim()).length() == 22 && s.charAt(6) == '-' && s.charAt(15) == '-')
      {
            CRC32 crc32;
            (crc32 = new CRC32()).update(s.substring(0, 18).getBytes());
            long l1;
            l1 = (l1 = crc32.getValue()) & 65535L ^ l1 >> 16 & 65535L;
            flag = Long.parseLong(s.substring(18, 22), 16) == l1;
      }
      if(flag)
      {
            d.setText(s);
      } else
      {
            d.requestFocus();
      }
      return flag;
    }

    private void a(boolean flag)
    {
      f.setEnabled(flag);
      for(int j = 1; j < g.length; j++)
      {
            ((JTextField)g).setEditable(flag);
      }

    }

    private int a(String s, String s1, String s2, String s3)
    {
      ((h)j).b(false);
      if(s.length() != 212)
      {
            return 1;
      }
      CRC32 crc32;
      (crc32 = new CRC32()).update(s.getBytes(), 8, 32);
      byte abyte0[] = net.bbiagent.explorer.util.d.b(s.substring(40, 212));
      h.l = Long.parseLong(s.substring(0, 8), 16) == crc32.getValue();
      if(!h.l)
      {
            return 3;
      }
      try
      {
            X509Certificate x509certificate = X509Certificate.getInstance(net.bbiagent.explorer.util.d.b(h.x()));
            Signature signature;
            (signature = Signature.getInstance(h.y())).initVerify(x509certificate.getPublicKey());
            byte abyte1[] = (s1 + s2 + s3).getBytes();
            signature.update(abyte1);
            h.l = signature.verify(abyte0);
            if(!h.l)
            {
                return 6;
            }
      }
      catch(Exception _ex)
      {
            return 5;
      }
      if(!a(s, h.n, "1"))
      {
            h.l = false;
            return 4;
      } else
      {
            ((h)j).a(b.getText(), c.getText());
            return 0;
      }
    }

    public final void b()
    {
      if(h.n.length() < 12)
      {
            return;
      }
      StringBuffer stringbuffer;
      (stringbuffer = new StringBuffer()).append("ref=" + h.b(""));
      h.n = h.n.substring(0, 12);
      stringbuffer.append("&mac=" + h.n);
      stringbuffer.append("&name=" + net.bbiagent.explorer.c.o(b.getText()));
      stringbuffer.append("&email=" + net.bbiagent.explorer.c.o(c.getText()));
      stringbuffer.append("&sn=" + net.bbiagent.explorer.c.o(d.getText()));
      a(false);
      b b1;
      if(!(b1 = new b(h)).a("reg.cgi", g() + "&" + stringbuffer.toString() + "&" + l()))
      {
            a(true);
            return;
      }
      try
      {
            LineNumberReader linenumberreader = b1.f();
            String s;
            while((s = linenumberreader.readLine()) != null)
            {
                if(s.charAt(0) != '0')
                {
                  h.q(s.substring(1) + "(" + s.charAt(0) + ")");
                } else
                {
                  int j = 0;
                  if((j = a(s.substring(1), h.b(""), c.getText(), h.n)) > 0)
                  {
                        h.q(h.w("esn") + "(" + j + ")");
                  }
                }
            }
            linenumberreader.close();
      }
      catch(Exception _ex) { }
      a(true);
    }

    private boolean a(String s, String s1, String s2)
    {
      String s3 = c.getText();
      String s4 = s.substring(40, 212);
      h.f("EMAIL", s3);
      h.f("SIG", s4);
      h.d("/etc/.user", "KEY=" + s.substring(0, 40) + s1 + "\nNAME=" + b.getText() + "\nEMAIL=" + s3 + "\nSIG=" + s4 + "\n");
      return h.s(s2);
    }

    private String g()
    {
      StringBuffer stringbuffer;
      (stringbuffer = new StringBuffer()).append("bversion=" + net.bbiagent.explorer.c.o("2.0.0"));
      stringbuffer.append("&bbuild=" + net.bbiagent.explorer.c.o("011"));
      stringbuffer.append("&country=" + net.bbiagent.explorer.c.o(h.f.getCountry()));
      stringbuffer.append("&lang=" + net.bbiagent.explorer.c.o(h.f.getLanguage()));
      stringbuffer.append("&mode=" + h.b());
      return stringbuffer.toString();
    }

    private String l()
    {
      Object aobj[][] = {
            {
                "cversion", "java.class.version"
            }, {
                "jversion", "java.version"
            }, {
                "oname", "os.name"
            }, {
                "oarch", "os.arch"
            }, {
                "oversion", "os.version"
            }
      };
      StringBuffer stringbuffer;
      (stringbuffer = new StringBuffer()).append("tz=" + net.bbiagent.explorer.c.o((new Date()).toString()));
      for(int j = 0; j < aobj.length; j++)
      {
            stringbuffer.append("&" + (String)aobj + "=" + net.bbiagent.explorer.c.o(System.getProperty((String)aobj)));
      }

      return stringbuffer.toString();
    }

    // Unreferenced inner class net/bbiagent/explorer/ui/admin/i

/* anonymous class */
    final class i
      implements ActionListener
    {

      final c a;

      public final void actionPerformed(ActionEvent actionevent)
      {
            a.a(actionevent);
      }

            
            {
                a = c.this;
            }
    }

}

DreamCat 发表于 2005-12-9 11:36:34

太美最近似乎着迷于破解?

刻录机 发表于 2005-12-9 16:29:53

其实BBI是个非常不错的软件路由器。能破解再好不过了。
如果有人要1.81版本的,本人愿意为坛子里的兄弟继续做ISO文件。只要把你的IP信息给全就可以了。

rob99 发表于 2005-12-9 17:45:36

原帖由 刻录机 于 2005-12-9 16:29 发表
其实BBI是个非常不错的软件路由器。能破解再好不过了。
如果有人要1.81版本的,本人愿意为坛子里的兄弟继续做ISO文件。只要把你的IP信息给全就可以了。

小弟正在用1.81的破解版,不知道iso有什么好处吗?
请大侠多多指教。
期望2.0能早日破解,2.0实在太棒了!

蝶舞 发表于 2005-12-10 17:38:52

我也在等2.0的破解出来

chaozaigao 发表于 2005-12-13 00:43:34

4楼的兄弟能把1.81的破解版传个给我好吗?谢谢了

analyst 发表于 2005-12-13 11:19:01

原帖由 DreamCat 于 2005-12-9 11:36 发表
太美最近似乎着迷于破解?
;P

蝶舞 发表于 2005-12-14 12:28:50

个人觉得bbiagent是比较容易操作调试的,比较适用于soho及家庭

liusimin 发表于 2005-12-15 04:58:42

bbiagent?

自从用上coyote linux后 都快把bbiagent淡忘了.......

前一阵见稳准狠本人
他本人也一直在研究CL之类的东西
让他登陆论坛没想到他既然把用户名忘拉 : (

niulinping 发表于 2006-1-25 11:41:02

能给我个bbi 1.8.1 的破解版吗

我adsl拨号,p2 200,两块8139网卡
初始ip不要设为 192.168.1.1 和 192.168.1.254

我的邮箱,jswjnlp@163.com

谢谢啊

niulinping 发表于 2006-1-25 11:43:58

是软盘启动的

niulinping 发表于 2006-1-25 11:44:44

是软盘启动的,可不可以发个原文件来我自己做呢?

hcd737p 发表于 2006-1-26 22:40:31

做个注册码就行了.不知那位大侠能破解?

心想事成 发表于 2006-2-1 15:30:19

经研究,如果象bbiagent 1.81那样从bbiagent.jar这个文件着手破解不行了。因为这个文件已经加入了数字签名,如果直接对程序修改的话,bbiagent会报错,而且拒绝执行。
可是我通过sniffer抓包却发现了一些秘密。比如,查看在线用户是用http请求执行,再将返回结果显示出来的。请求的字符串是:
GET /cgi-bin/get.cgi?file=/var/conf/online.log HTTP/1.1..User-Agent: Explorer/2.0.0_011 (BBIagent.Net; 1.5.0_06; Windows XP 5.1)..Referer: 3DA14F3043DC58E3/..Cookie: 1902552563..Authorization: Basic QkJJYWdlbnQ6QkJJYWdlbnQ=..Accept-Language: java,zh_CN..Host: 192.168.1.123..Accept: text/html, image/gif

发现所有的命令都是通过/etc/www/cgi-bin/目录下的这几个文件执行:
index.cgi
put.cgi
get.cgi
run.cgi
reg.cgi
trf.cgi
于是,联想到,在注册后,将配置内容写入软盘肯定也是执行一个http命令。通过分析代码,肯定是执行/cgi-bin/reg.cgi这个文件。但是http命令应当是什么了,再看,应当是这串代码:

new b(h)).a("reg.cgi", g() + "&" + stringbuffer.toString() + "&" + l()

哪位朋友有正版的bbiagent,用sniffer将bbiagent保存配置的那个指令包抓下来,我们再构造一个http请求的数据包,将它欺骗下,就可以直接将配置信息保存了(因为注册信息是在客户端进行验证),偶只是抛出一想想法,请高手共同研究。:D

hzxujh 发表于 2006-2-1 16:34:15

我用1.81的破解版破解之后把注册的信息保存的做好的2.0上提示注册成功,我还以为搞定了。进到2.0的管理里面保存设置就BBI就会上网不知再读什么信息很快就提示未注册。刷一下又是注册版。
页: [1] 2 3 4 5
查看完整版本: 破解bbiagent 2.0?