@ TOC
가을 항공 알고리즘을 역
그하여 패킷 캡처는 페이지 요청 응용 프로그램 가을, 첫째 / ECMember /의 비밀 / getSecret가 요청을 보낼 때마다, 핵심은 요청 및 응답이 암호문을 base64로 인코딩하고, 가능성이 인수해야한다.
패킷 캡쳐 분석
디 컴파일
여기에 우리가 젭으로 열고 , 그림에서 본 쉘을 추가, 당신은 패키지 이름에서 볼 수있는 플레이 플레이 쉘, 우리는 IDA 호출을 사용 케이스에 대한 메모리에서 떨어져 덱스 방법을 덤프하고, jadx 및 수출 연 소스 코드, 아이디어를 엽니 다
데이터 처리 로직 및 응답 패킷을 찾고
직접 아이디어에서 열기 검색하고 "데이터"를 입력 우리가 방법을 HttpRequestUtils를 선택하고 들어가이 같은 참조
public static String a(ReselectSeatArg reselectSeatArg) throws RemoteAccessException {
...
try {
String[] a = DESCrypter.a();
Map hashMap2 = new HashMap();
hashMap2.put("data", DESCrypter.c(JsonConvert.a(hashMap), a[0]));
String a2 = new HttpRequesterProxy(UrlConstant.Y, hashMap2, 30).a();
if (a2.trim().length() != 0) {
return a2;
}
throw new RemoteAccessException(BasicUtils.a((int) R.string.ERR001));
} catch (Exception e) {
throw new RemoteAccessException(BasicUtils.a((int) R.string.ERR001));
}
}
DES 알고리즘인가,) (DESCrypter.a를 입력
public static String[] a() throws Exception {
return a.getSecrets(new HttpRequesterProxy(UrlConstant.N, 30).a());
}
여기에 우리가 이전처럼 잡힌 분석을 얻을 수 있고,이 열쇠를 가지고하는 것입니다. 방법 DescrypterUtil getSecrets 재진입
public java.lang.String[] getSecrets(java.lang.String r1) {
....
}
감소 알고리즘
public static String recvData(String str) throws IOException {
...
}
public static String decode(String arg10) throws Exception {
...
byte[] decode = Base64.decodeBase64(arg10);
return new String(v0.doFinal(decode), "utf-8");
}
public static String encode(String arg9) throws Exception {
SecretKey v1 = SecretKeyFactory.getInstance("desede")
.generateSecret(new DESedeKeySpec("**************)".getBytes()));
Cipher v0 = Cipher.getInstance("***/***/****");
v0.init(1, ((Key) v1), new IvParameterSpec("***".getBytes()));
return Base64.encodeBase64String(v0.doFinal(arg9.getBytes("utf-8")));
}
알고리즘의 정확성을 확인
캡처 데이터 수집 요청 매개 변수 및 해독 된 응답 패킷은 완전히 성공 해독 Minga했다 읽을 수있는 문자열을 JSON 복원됩니다.
912 146 030 및 진행 상황을 공유 그룹을 입력 할 수 있습니다, 역 앤드류스에 관심이있는 친구가합니다.