贴吧助手web版

 找回密码
 
搜索
查看: 1709|回复: 1

4·百度贴吧安卓客户端接口分析 /system/etc/hosts

[复制链接]
     紫钻仅向指定用户开放  
  • TA的每日心情
    不屑
    昨天 17:30
  • 签到天数: 1104 天

    [LV.10]以坛为家III

    685

    主题

    1507

    帖子

    1530

    积分

    管理员

    Rank: 15Rank: 15Rank: 15Rank: 15

    金币
    3565

    接口达人工具作者土豪之星

    发表于 2016-3-19 17:01:07 | 显示全部楼层 |阅读模式
    [mw_shl_code=java,true]package com.baidu.sapi2.utils;

    import android.content.Context;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    import android.os.Build;
    import android.os.Build.VERSION;
    import android.telephony.TelephonyManager;
    import android.text.TextUtils;
    import com.baidu.android.common.security.MD5Util;
    import com.baidu.sapi2.d;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.net.URLEncoder;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;

    public class a
    {
      public static String a()
      {
        for (;;)
        {
          try
          {
            if (!TextUtils.isEmpty(Build.VERSION.RELEASE)) {
              continue;
            }
            str1 = "";
            str1 = URLEncoder.encode(str1, "UTF-8");
          }
          catch (Exception localException)
          {
            String str1;
            String str2 = "";
            continue;
          }
          return str1;
          str1 = Build.VERSION.RELEASE;
        }
      }
      
      public static void a(Context paramContext)
      {
        if (paramContext == null) {
          return;
        }
        for (;;)
        {
          try
          {
            FileInputStream localFileInputStream = new java/io/FileInputStream;
            localFileInputStream.<init>("/system/etc/hosts");
            byte[] arrayOfByte = new byte[localFileInputStream.available()];
            localFileInputStream.read(arrayOfByte);
            String str = new java/lang/String;
            str.<init>(arrayOfByte);
            if ((TextUtils.isEmpty(str)) || (!str.contains("passport.baidu.com"))) {
              break label84;
            }
            d.a(paramContext).b(true);
            localFileInputStream.close();
          }
          catch (Throwable localThrowable)
          {
            d.a(paramContext).b(false);
            L.e(localThrowable);
          }
          break;
          label84:
          d.a(paramContext).b(false);
        }
      }
      
      public static String b()
      {
        for (;;)
        {
          try
          {
            if (!TextUtils.isEmpty(Build.BRAND)) {
              continue;
            }
            str1 = "";
            str1 = URLEncoder.encode(str1, "UTF-8");
          }
          catch (Exception localException)
          {
            String str1;
            String str2 = "";
            continue;
          }
          return str1;
          str1 = Build.BRAND;
        }
      }
      
      public static String b(Context paramContext)
      {
        if (paramContext == null) {}
        for (paramContext = null;; paramContext = ((TelephonyManager)paramContext.getSystemService("phone")).getDeviceId()) {
          return paramContext;
        }
      }
      
      public static String c()
      {
        for (;;)
        {
          try
          {
            if (!TextUtils.isEmpty(Build.MODEL)) {
              continue;
            }
            str1 = "";
            str1 = URLEncoder.encode(str1, "UTF-8");
          }
          catch (Exception localException)
          {
            String str1;
            String str2 = "";
            continue;
          }
          return str1;
          str1 = Build.MODEL;
        }
      }
      
      public static String c(Context paramContext)
      {
        if (paramContext == null) {
          paramContext = null;
        }
        for (;;)
        {
          return paramContext;
          try
          {
            paramContext = ((WifiManager)paramContext.getSystemService("wifi")).getConnectionInfo();
            if (TextUtils.isEmpty(paramContext.getMacAddress())) {
              paramContext = "";
            } else {
              paramContext = paramContext.getMacAddress();
            }
          }
          catch (Exception paramContext)
          {
            paramContext = "";
          }
        }
      }
      
      public static String d()
      {
        return "os_version=" + a() + "&brand_name=" + b() + "&brand_model=" + c() + "&os_type=" + "Android";
      }
      
      public static String d(Context paramContext)
      {
        return MD5Util.toMd5((b(paramContext) + c(paramContext)).getBytes(), false).replace("\n", "");
      }
      
      public static class a
      {
        private static final String a = "MD5";
        private static final String b = "AES";
        private static final String c = "UTF-8";
        private static final int d = 16;
        private static final int e = 16;
       
        public static String a(String paramString)
        {
          Object localObject = null;
          if (TextUtils.isEmpty(paramString)) {
            paramString = (String)localObject;
          }
          for (;;)
          {
            return paramString;
            try
            {
              paramString = b(paramString.getBytes("UTF-8"));
              StringBuilder localStringBuilder = new java/lang/StringBuilder;
              localStringBuilder.<init>();
              String str = a(b(paramString + "js52je)927!hsm^%3m"));
              localStringBuilder = new java/lang/StringBuilder;
              localStringBuilder.<init>();
              paramString = a(paramString + "." + str, "js52je)927!hsm^%3m");
            }
            catch (Exception paramString)
            {
              L.e(paramString);
              paramString = (String)localObject;
            }
          }
        }
       
        public static String a(String paramString1, String paramString2)
        {
          try
          {
            String str = a(b(paramString2.trim()));
            paramString2 = str.substring(0, 16);
            Object localObject = new java/lang/StringBuffer;
            ((StringBuffer)localObject).<init>(str.substring(0, 16));
            str = ((StringBuffer)localObject).reverse().toString();
            localObject = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec localSecretKeySpec = new javax/crypto/spec/SecretKeySpec;
            localSecretKeySpec.<init>(paramString2.getBytes("UTF-8"), "AES");
            paramString2 = new javax/crypto/spec/IvParameterSpec;
            paramString2.<init>(str.getBytes("UTF-8"));
            ((Cipher)localObject).init(1, localSecretKeySpec, paramString2);
            paramString1 = b(((Cipher)localObject).doFinal(c(paramString1.getBytes("UTF-8"))));
            return paramString1;
          }
          catch (Exception paramString1)
          {
            for (;;)
            {
              L.e(paramString1);
              paramString1 = null;
            }
          }
        }
       
        public static String a(byte[] paramArrayOfByte)
        {
          StringBuilder localStringBuilder = new StringBuilder();
          int j = paramArrayOfByte.length;
          for (int i = 0; i < j; i++) {
            localStringBuilder.append(Integer.toString((paramArrayOfByte & 0xFF) + 256, 16).substring(1));
          }
          return localStringBuilder.toString();
        }
       
        public static String b(String paramString1, String paramString2)
        {
          try
          {
            Object localObject2 = a(b(paramString2.trim()));
            paramString2 = ((String)localObject2).substring(0, 16);
            Object localObject1 = new java/lang/StringBuffer;
            ((StringBuffer)localObject1).<init>(((String)localObject2).substring(0, 16));
            localObject1 = ((StringBuffer)localObject1).reverse().toString();
            localObject2 = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec localSecretKeySpec = new javax/crypto/spec/SecretKeySpec;
            localSecretKeySpec.<init>(paramString2.getBytes("UTF-8"), "AES");
            paramString2 = new javax/crypto/spec/IvParameterSpec;
            paramString2.<init>(((String)localObject1).getBytes("UTF-8"));
            ((Cipher)localObject2).init(2, localSecretKeySpec, paramString2);
            paramString1 = b(((Cipher)localObject2).doFinal(c(paramString1.getBytes("UTF-8"))));
            return paramString1;
          }
          catch (Exception paramString1)
          {
            for (;;)
            {
              L.e(paramString1);
              paramString1 = null;
            }
          }
        }
       
        public static String b(byte[] paramArrayOfByte)
        {
          int i2 = 0;
          StringBuilder localStringBuilder = new StringBuilder();
          int i3 = paramArrayOfByte.length * 8;
          int i = 0;
          int m = 0;
          int i1 = 0;
          int n = 6;
          int k = 0;
          int j;
          if ((k > 0) && (n > 0))
          {
            i = (byte)((byte)((paramArrayOfByte[i1] & 0xFF) << n | (paramArrayOfByte[(i1 + 1)] & 0xFF) >> 8 - n) & 0x3F);
            k = 8 - n;
            j = 6 - k;
          }
          for (;;)
          {
            localStringBuilder.append("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i));
            m += 6;
            i1 = m / 8;
            int i4 = i3 - m;
            n = j;
            if (i4 >= 6) {
              break;
            }
            if (i4 > 0) {
              localStringBuilder.append("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((byte)(paramArrayOfByte[(paramArrayOfByte.length - 1)] << 6 - i4 & 0x3F)));
            }
            for (i = i2; i < i3 % 3; i++) {
              localStringBuilder.append("=");
            }
            if (k == 0)
            {
              i = (byte)((paramArrayOfByte[i1] & 0xFF) >> 8 - n);
              k = 2;
              j = 4;
            }
            else
            {
              j = n;
              if (n == 0)
              {
                i = (byte)(paramArrayOfByte[i1] & 0x3F);
                j = 6;
                k = 0;
              }
            }
          }
          return localStringBuilder.toString();
        }
       
        private static byte[] b(String paramString)
        {
          try
          {
            MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
            localMessageDigest.update(paramString.getBytes());
            paramString = localMessageDigest.digest();
            return paramString;
          }
          catch (NoSuchAlgorithmException paramString)
          {
            for (;;)
            {
              L.e(paramString);
              paramString = null;
            }
          }
        }
       
        private static byte[] c(byte[] paramArrayOfByte)
        {
          byte[] arrayOfByte = paramArrayOfByte;
          if (paramArrayOfByte.length % 16 != 0)
          {
            arrayOfByte = new byte[(paramArrayOfByte.length / 16 + 1) * 16];
            System.arraycopy(paramArrayOfByte, 0, arrayOfByte, 0, paramArrayOfByte.length);
            for (int i = paramArrayOfByte.length; i < arrayOfByte.length; i++) {
              arrayOfByte = ((byte)0);
            }
          }
          return arrayOfByte;
        }
      }
    }
    [/mw_shl_code]

    代码分析 回复可见
    游客,如果您要查看本帖隐藏内容请回复




    上一篇:2016年3月19日签到记录贴
    下一篇:教你如何不加修饰和前后缀打出邓小平
    喵星人贴吧助手你值得拥有
    回复

    使用道具 举报

            
  • TA的每日心情
    疑惑
    2016-10-11 16:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    10

    帖子

    10

    积分

    按个爪印

    Rank: 1

    金币
    15
    发表于 2016-10-11 16:04:41 | 显示全部楼层
    确实是难得好帖啊,顶先
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 |

    本版积分规则

    快速回复 返回顶部 返回列表