この大会は2019/12/28 5:00(JST)~2019/12/30 5:00(JST)に開催されました。
今回もチームで参戦。結果は105点で321チーム中122位でした。
自分で解けた問題をWriteupとして書いておきます。
1337 skills (ZAJ)
Google PlayのサイトのWILD Skillsというアプリへのリンクが提示されている。GooglePlayからapkとしてファイルを入手する。Bytecode Viewerで入手したapkファイルを開き、コードを見てみる。
public class MainActivity extends Activity { : public void activateApp(View var1) { int var2; try { var2 = Integer.parseInt(this.editTextActivation.getText().toString()); } catch (NumberFormatException var5) { var2 = -1; } Calendar var6 = Calendar.getInstance(); if (var2 == (int)(Math.pow((double)(var6.get(3) * var6.get(1)), 2.0D) % 999983.0D)) { this.findViewById(2131296458).setVisibility(4); ((InputMethodManager)this.getSystemService("input_method")).hideSoftInputFromWindow(this.editTextActivation.getWindowToken(), 0); Editor var7 = this.prefsmain.edit(); var7.putBoolean("Activated", true); long var3 = (new Date()).getTime(); var7.putLong("Installed", var3); var7.putLong("ActivationDate", var3); var7.commit(); } else { Toast.makeText(this, "Ungültiger Aktivierungscode", 1).show(); this.editTextActivation.requestFocus(); ((InputMethodManager)this.getSystemService("input_method")).showSoftInput(this.editTextActivation, 1); } } : public void courseActivation(View var1) { String var4 = ((EditText)this.findViewById(2131296341)).getText().toString(); int var2 = activateCourse; Editor var3; StringBuilder var5; if (var2 != 3) { switch(var2) { case 0: if (var4.equals("sgk258")) { course = activateCourse; activateCourse = -1; this.setCourse(); ((InputMethodManager)this.getSystemService("input_method")).hideSoftInputFromWindow(this.editTextActivation.getWindowToken(), 0); Editor var6 = this.prefsmain.edit(); StringBuilder var7 = new StringBuilder(); var7.append("Activated"); var7.append(course); var6.putBoolean(var7.toString(), true); var6.apply(); } else { Toast.makeText(this, "Ungテシltiger Aktivierungscode", 1).show(); } break; case 1: if (var4.equals("wmt275")) { course = activateCourse; activateCourse = -1; this.setCourse(); ((InputMethodManager)this.getSystemService("input_method")).hideSoftInputFromWindow(this.editTextActivation.getWindowToken(), 0); var3 = this.prefsmain.edit(); var5 = new StringBuilder(); var5.append("Activated"); var5.append(course); var3.putBoolean(var5.toString(), true); var3.apply(); } else { Toast.makeText(this, "Ungテシltiger Aktivierungscode", 1).show(); } } } else if (var4.equals("udh736")) { course = activateCourse; activateCourse = -1; this.setCourse(); ((InputMethodManager)this.getSystemService("input_method")).hideSoftInputFromWindow(this.editTextActivation.getWindowToken(), 0); var3 = this.prefsmain.edit(); var5 = new StringBuilder(); var5.append("Activated"); var5.append(course); var3.putBoolean(var5.toString(), true); var3.apply(); } else { Toast.makeText(this, "Ungテシltiger Aktivierungscode", 1).show(); } } : }
activateAppメソッドの以下の部分の条件を確認する。
if (var2 == (int)(Math.pow((double)(var6.get(3) * var6.get(1)), 2.0D) % 999983.0D)) {
$ cat ActivateCode.java import java.util.Calendar; class ActivateCode { public static void main(String args[]){ int var2; Calendar var6 = Calendar.getInstance(); var2 = (int)(Math.pow((double)(var6.get(3) * var6.get(1)), 2.0D) % 999983.0D); System.out.println(var2); } } $ javac ActivateCode.java $ java ActivateCode 667518
あとはcourseActivationに書いてあるコードを指定する。
$ nc 88.198.154.132 7002 Activation code: 667518 activated! Sales activation code: sgk258 activated! Leadership activation code: wmt275 activated Service Roadmap (SRM) activation code: udh736 activated! Congratulations please give me your name: hogehoge ←適当 ______________________________ / \ \. | | |. \_ | |. | Certificate of Attendance |. | |. | This is to certify that |. | |. | hogehoge |. | |. | has attended |. | |. | **The baby rev challenge** |. | |. | |. | hxp |. | |. | -------------------------- |. | |. |hxp{thx_f0r_4773nd1n6_70d4y}|. | |. | _________________________|___ | / /. \_/____________________________/.
hxp{thx_f0r_4773nd1n6_70d4y}