กรณีศึกษา·Aegisตรวจสอบความถูกต้อง

เครื่องพิสูจน์ตัวตนอย่างไร
สร้างรหัสล็อกอิน?

รหัสหกหลักเปลี่ยนทุก 30 วินาที ใช้ REA เพื่อหาการคำนวณในAndroid APK แล้วสร้างมันด้วยนาฬิกาที่คุณสามารถควบคุม

Aegis 3.4.3*แอนดรอยด์*การเปิดตัวอย่างเป็นทางการ APK ·6.9 ล้านบาท

ดู Aegis บน GitHub

จาก APK รหัสที่คุณสามารถทำซ้ำ

  1. 01*ค้นหาคุณลักษณะ3,077 ชั้นเรียน methods การสร้างวิธีREA ค้นหาแพ็กเกจและติดตามรหัสที่ใช้โดยการแสดงผลและการดำเนินการคัดลอก
  2. 02*อ่านการคำนวณเวลา+บัญชีคีย์ six หกหลักREA ส่งกลับเมธอดและค่าดีฟอลต์ เจ้าหน้าที่อธิบายว่าพวกเขาเข้ากันได้ยังไง
  3. 03·สร้างและตรวจสอบเปลี่ยนนาฬิกา ดูรหัสการสาธิตเบราว์เซอร์ใหม่ทำซ้ำกฎและตรวจสอบกับกรณีการอ้างอิงสาธารณะ

สอบถามตัวแทนของคุณ

การตรวจสอบจะแสดงรหัสการเข้าสู่ระบบการเปลี่ยนแปลง เราต้องการที่จะหา สิ่งที่ทำให้มันเปลี่ยนแปลง และทำซ้ำพฤติกรรมนั้น

ตัวแทนการเข้ารหัสของคุณ

ใช้ REA วิเคราะห์ aegis-v3.4.3.apk อธิบายวิธีสร้างรหัสเข้าสู่ระบบหกหลักและเหตุผลที่รหัสเปลี่ยนทุก 30 วินาที แล้วสร้างเดโมเล็ก ๆ ที่ฉันปรับเวลาได้

พรอมป์ต์ตัวอย่างสำหรับ APK ที่ดาวน์โหลดมา ให้ตั้งค่าการวิเคราะห์ Android ของ REA ก่อน ดาวน์โหลด APK และการตั้งค่าการวิเคราะห์ ↓

ลองสร้างรหัส

แอปแบ่งเวลาเป็นช่วงละ 30 วินาที แล้วนำหมายเลขช่วงเวลากับคีย์บัญชีมาสร้างรหัส คีย์เดียวกันและช่วงเวลาเดียวกันจะให้รหัสเดียวกัน

ย้ายนาฬิกาข้าม 60 วินาที

  1. เวลา59 วินาทีนาฬิกาตัวอย่างที่สามารถปรับได้ของเรา
  2. บล็อก 30 วินาทีบล็อก 1floor(59 / 30)
    30-59 วินาที
  3. รหัสที่สร้างขึ้น287082คีย์บัญชี+บล็อก six หกหลัก

ที่ 59 วินาที: 287082. ที่ 60 วินาที: 359152. ย้ายภายในหนึ่งบล็อกใบรหัสไม่เปลี่ยนแปลง

คีย์ได้รับการแก้ไขสาธารณะ 6238 ข้อมูลการทดสอบ. การสาธิตดำเนินการคำนวณกู้คืนจาก APK.

ค้นหารหัสด้วย REA

  1. แคบ APK ถึงสามชั้นเรียน

    เจ้าหน้าที่→ REA
    inspect_android_package
    {"path": "aegis-v3.4.3.apk"}
    
    search_android_classes
    {"path": "aegis-v3.4.3.apk",
     "query": "Totp"}
    REA agent ตัวแทน·ผลลัพธ์ที่เลือกไว้
    Package: com.beemdevelopment.aegis
    Version: 3.4.3
    Classes: 3,077
    
    Three matches:
      otp.TotpInfo
      ui.views.TotpProgressBar
      importers.TotpAuthenticatorImporter

    TotpInfo เป็นผู้สมัครคำนวณ;อีกสองกังวลแถบความคืบหน้าและบัญชีที่นำเข้า TOTP หมายถึงรหัสผ่านแบบครั้งเดียวตามเวลา

  2. เชื่อมต่อเครื่องกำเนิดไฟฟ้าเข้ากับจอแสดงผลของแอป

    เจ้าหน้าที่→ REA
    inspect_android_class
    {"path": "aegis-v3.4.3.apk",
     "class_name":
      "com.beemdevelopment.aegis.otp.TotpInfo"}
    
    trace_android_references
    {"path": "aegis-v3.4.3.apk",
     "class_name":
      "com.beemdevelopment.aegis.otp.OtpInfo",
     "method_name": "getOtp"}
    REA →ตัวแทน*วิธีการและฟังก์ชันที่เรียก
    TotpInfo methods:
      getOtp()      · overload 0
      getOtp(long)  · overload 1
    
    OtpInfo.getOtp callers:
      ui.views.EntryHolder.getOtp
      ui.MainActivity.copyEntryCode

    REA ระบุการประทับเวลาเกินพิกัดและพบว่าฟังก์ชันที่เรียกวิธีการฐาน การตรวจสอบ EntryHolder.getOtp จากนั้นแสดงการโทรจอแสดงผล TotpInfo.getOtp(timestamp).

คำขอแสดงเส้นทางอินพุตที่สั้นลง ชื่อชั้นผลลัพธ์ละเว้นทั่วไป com.beemdevelopment.aegis คำนำหน้า

อ่านการคำนวณ

REA การคืนสินค้า แปลงนาฬิกา,การตั้งค่าเริ่มต้นและวิธีการสร้าง ก่อสร้างตั้งช่วงเวลา 30 วินาทีและหกหลัก;วิธีการประทับเวลาจะเปลี่ยนวินาทีเป็นจำนวนบล็อ

REA *เลือกแยกจาวา
// TotpInfo defaults and clock
setPeriod(30);
getOtp(System.currentTimeMillis() / 1000);

// OtpInfo default algorithm and digits
this(bArr, "SHA1", 6);

// Block passed to the generator
(long) Math.floor(j / ((double) this._period))

// generateOTP → getHash
byte[] hash = getHash(bArr, str, j);

// getHash: account key + encoded block
Mac mac = Mac.getInstance(str);
mac.init(secretKeySpec);
return mac.doFinal(bArrArray);

// OTP.toString, case 0
this._code % ((int) Math.pow(10.0d, i))

// Keep leading zeroes
while (sb.length() < i) {
    sb.insert(0, "0");
}
สรุปสามารถอ่านได้*การตีความของตัวแทน
// Group time into 30-second blocks
seconds = current_time_ms / 1000
block = floor(seconds / 30)

// Generate a number from the key and block
hash = HMAC_SHA1(account_key,
                 big_endian_8_bytes(block))
number = select_31_bits(hash)

// Format the default six-digit code
code = number % 1_000_000
code = pad_with_zeroes(code, 6)

เวลาเลือกบล็อก วินาที 30 ถึง 59 ทั้งหมดให้บล็อก 1 ที่ 60 วินาทีบล็อกจะกลายเป็น 2

กุญแจสำคัญก็สำคัญเหมือนกัน เครื่องกำเนิดไฟฟ้ารวมคีย์บัญชีกับบล็อก บัญชีที่มีคีย์ที่แตกต่างกันสามารถแสดงรหัสที่แตกต่างกันในเวลาเดียวกัน

เก็บหกหลัก ส่วนที่เหลือหลังจากการหารด้วย 1,000,000 มีเบาะกับศูนย์เมื่อจำเป็นดังนั้นรหัสสามารถเริ่มต้นด้วย 0

ตัดตอนมาจากหลายวิธีการตรวจสอบที่มีการตัดสายสำหรับการแสดงผล แผงด้านขวาเป็นบทสรุปอธิบาย Aegis รหัสคือจีพีแอล-3.0

Insideในเครื่องกำเนิดไฟฟ้า

เปิดตัว APK ทำให้ generateOTP ใน kotlin.ExceptionsKt. REA ตามสายจาก TotpInfo และส่งกลับร่างกายนี้แหล่งที่มาเดิมเรียกผู้ช่วย HOTP.

REA *เครื่องกำเนิดไฟฟ้า,ร่างกายที่สมบูรณ์
public static OTP generateOTP(byte[] bArr, String str,
        int i, long j)
        throws NoSuchAlgorithmException, InvalidKeyException {
    byte[] hash = getHash(bArr, str, j);
    int i2 = hash[hash.length - 1] & 15;
    return new OTP(
        (hash[i2 + 3] & 255)
        | ((hash[i2] & 127) << 24)
        | ((hash[i2 + 1] & 255) << 16)
        | ((hash[i2 + 2] & 255) << 8), i, 0);
}

ไบต์แฮชล่าสุดเลือกตำแหน่ง สี่ไบต์ที่ตำแหน่งนั้นให้หมายเลข 31 บิตเป็นบวก;การจัดรูปแบบลดลงไปยังหมายเลขที่ร้องขอข อาร์กิวเมนต์สุดท้ายของตัวสร้างเลือกสาขาการจัดรูปแบบรหัสที่นำมาใช้โดยการรวบรวม

เปรียบเทียบกับแหล่งที่มาของรีลีสที่ตรงกัน.

ตรวจสอบการฟื้นฟู

เราประกอบที่เลือก REA-กลับวิธีการจาวาในโปรแกรมทดสอบขนาดเล็ก ผลผลิตของพวกเขาตรงกับการฟื้นฟูอิสระ 133 กรณีทดสอบ รวมถึงขอบเขตเวลาบล็อกและรหัสที่เริ่มต้นด้วยศูนย์

ตัวอย่างเวลา บล็อก รหัสหกหลัก
30 วินาที 1 287082
59 วินาที 1 287082
60 วินาที 2 359152
1,111,111,109 วินาที 37,037,036 081804

เครื่องกำเนิดไฟฟ้ายังตรงกับหกตีพิมพ์ SHA-1 กรณีอ้างอิงใน 6238. ตรวจสอบการใช้เบราว์เซอร์กับพวกเขา:

อ่านการคำนวณการสาธิต

กรณีอ้างอิงใช้แปดหลัก ตรวจสอบยังตรวจสอบผลลัพธ์หกหลักของพวกเขา

การตรวจสอบการทำงานแยกวิธีการจาวาและการสาธิตใหม่ Android APK ได้รับการตรวจสอบแบบคงที่

ตรวจสอบ APK ตัวคุณเอง

ตั้งค่า REA บน macOS หรือ Linux แล้วดาวน์โหลดทั้งสองไฟล์ลงในโฟลเดอร์เดียวกัน บน Windows ใช้ Linux วุฒิการศึกษาระดับปริญญาตรีขึ้นไป

17 หรือสูงกว่า เลือกด้วย JAVA_HOME หรือ PATH. คดีนี้ใช้เจดีเค 21

จุด REA ที่ไฟล์ผู้ให้บริการและตรวจสอบ APK:

macOS / Linux
REA_JADX_MCP_JAR="$PWD/jadx-headless-mcp-0.7.1-all.jar" \
npx rea-agents@latest inspect-android-package \
  ./aegis-v3.4.3.apk --format json --full-output

ตัวแทนของคุณสามารถดำเนินการต่อผ่าน REAของ CLI ใช้พร้อมท์ข้างต้น สำหรับ MCP,เพิ่ม REA_JADX_MCP_JAR ไปที่ REA สภาพแวดล้อมของเซิร์ฟเวอร์และเชื่อมต่อมัน

คำถามต่อไป: จะเกิดอะไรขึ้นเมื่อบัญชีใช้ตัวเลขแปดหลักหรือช่วงเวลาที่แตกต่างกัน

แหล่งที่มา

ตรวจสอบด้วย REA 6.1.0 เมื่อวันที่ 9 ตุลาคม 2026 ข้อความที่ตัดตอนมาแบบแยกส่วนจะให้เครดิตกับ Aegis;แผนภาพสรุปที่อ่านได้และการฟื้นฟูเบราว์เซอร์เป็นวัสดุการเรียนการสอนใหม่

ด้านบน