可米网络电话 核心分析
来源:互联网 发布:淘宝企业店铺出售过程 编辑:程序博客网 时间:2024/04/28 03:54
’ 登录
' POST http://app.gekgek.com/callme/user.do?action=login&u=手机号&p=MD5(密码)HTTP/1.1' Connection: Keep-Alive' Content-Type: application/x-www-form-urlencoded' User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.4; Lenovo K30-T Build/KTU84P)' Host: app.gekgek.com' Accept-Encoding: gzip' Content-Length: 0
' 登陆成功返回 token=2056222||145709552222||OJ6fhsevsKsEcAddJ0222==
’ 拨打电话
' http://app.gekgek.com/callme/user.do?action=call¶m=DES密码()
============程序代码=====
localStringBuffer.append("http://app.gekgek.com/callme/user.do?action=call").append("¶m=").append(URLEncoder.encode(h.a(((JSONStringer)localObject1).toString(), CallJni.a().getDesKey()), "utf-8"));
其实就是这段加密
URLEncoder.encode(h.a(((JSONStringer)localObject1).toString(), CallJni.a().getDesKey()), "utf-8")
—————————————–分析
URLEncoder.encode("***", "utf-8") utf8编码
————–localObject1—来源
this.d = paramHandler; // 消息this.c = paramString3; // Toeknthis.b = paramString2; // 密码this.a = paramString1; // 账号Object localObject1 = new JSONStringer().object().key("t").value(this.a).key("c").value(this.c).key("ca").value(this.b).endObject();
————-就剩—-localObject1—来源
h.a(((JSONStringer)localObject1).toString(), CallJni.a().getDesKey())
首先找到h.a方法
public class h{ private static byte[] a = { 1, 2, 3, 4, 5, 6, 7, 8 }; public static String a(String paramString1, String paramString2) { IvParameterSpec localIvParameterSpec = new IvParameterSpec(a); paramString2 = new SecretKeySpec(paramString2.getBytes(), "DES"); Cipher localCipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); localCipher.init(1, paramString2, localIvParameterSpec); return a.a(localCipher.doFinal(paramString1.getBytes())); }}
然后找到CallJni.a().getDesKey()
public class CallJni{ private static CallJni a; static { System.loadLibrary("call_jni"); } public static CallJni a() { if (a == null) { a = new CallJni(); } return a; } public native String getDesKey();}
签到
' POST http://app.gekgek.com/callme/charge.do?action=sign&t=2056318||1457095500105||OJ6fhsevsKsEcAddJ0zjMw== HTTP/1.1' Connection: Keep-Alive' Content-Type: application/x-www-form-urlencoded' User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.4; Lenovo K30-T Build/KTU84P)' Host: app.gekgek.com' Accept-Encoding: gzip' Content-Length: 0
查询余额
' POST http://app.gekgek.com/callme/user.do?action=balance&t=2056318||1457095500105||OJ6fhsevsKsEcAddJ0zjMw== HTTP/1.1' Connection: Keep-Alive' Content-Type: application/x-www-form-urlencoded' User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.4; Lenovo K30-T Build/KTU84P)' Host: app.gekgek.com' Accept-Encoding: gzip' Content-Length: 0
0 0
- 可米网络电话 核心分析
- 网络电话Skype协议分析
- P2PSIP 网络电话系统的分析
- asterisk 连接可达网络电话callda
- 网络电话
- VoIP网络电话回音产生的原因分析
- PigeonCall:一款Android VoIP网络电话App架构分析
- android平台基于sip协议的网络电话实现(知识点及核心代码)
- 网络电话原理
- TTCALL 网络电话
- sip网络电话
- 手机网络电话
- sip 网络电话
- VoIP(网络电话)
- sip 网络电话
- sip网络电话
- 网络电话软件
- VOIP网络电话
- malloc函数的使用
- docker如何简单部署mysql
- ubuntu里面的任务管理器
- JS开发者调查
- Installing Theano
- 可米网络电话 核心分析
- MySql避免重复插入记录
- iOS中,在类的源文件(.m)中,@interface部分的作用
- 常用的文档
- Ubuntu 12.04 Gitolite 安装指南
- 中缀表达式转换成前缀表达式和后缀表达式的极其简单方法【转】
- UFLDL教程答案(2):Exercise:Vectorization
- SSO之CAS单点登录部署
- (终端)Git命令-->基本使用(新手)