เครื่องมือนี้เป็นเพียงการใช้งานล่าสุดที่ทำลายเลเยอร์การเข้ารหัสและการทำให้งงงวยที่ Dropbox ใช้กับล่าม Python ที่แก้ไขแล้ว มันขึ้นอยู่กับการทำงานที่ผู้เขียนทำหลายเดือนดวงจันทร์ที่ผ่านมารวมถึงงานสาธารณะที่ทำโดยผู้อื่น สำหรับข้อมูลเพิ่มเติมโปรดดู BlogPost
การเปิดตัวครั้งแรก
รหัสได้รับการอัปเดตเพื่อสร้างฐานข้อมูล opcode โดยใช้ Python 3.7 ตอนนี้ยังตรวจสอบเวอร์ชันของ uncompyle6 ที่ติดตั้ง (> = 3.5.x) เพื่อให้เกิดข้อผิดพลาดเมื่อติดตั้ง uncompyle6 แต่ล้าสมัยมาก ข้อบกพร่องหลายอย่างได้รับการแก้ไขในการสร้างการแมป opcode ขอบคุณ @slinkinone ที่ส่งอีเมลถึงฉันและช่วยฉันในการดีบักปัญหาบางอย่าง
uncompyle6 คุณสามารถทำได้ด้วย: pip3 install uncompyle6
เรียกใช้สคริปต์ bash fetchdeps.sh ที่รวมอยู่ สิ่งนี้จะดึงรหัสแหล่ง Python รวมถึงดาวน์โหลด Dropbox สำหรับ Linux Tarball เวอร์ชันล่าสุด จำเป็นต้องใช้ซอร์สโค้ด Python ก็ต่อเมื่อต้องการสร้างฐานข้อมูล OpCode ใหม่
โปรดทราบว่า Python 3.7 เป็นข้อกำหนด สำหรับการโทร ทั้งสอง ต่อไปนี้เพื่อทำงานเนื่องจากมีการเปลี่ยนแปลงเพื่อ >=3.8 ประเภทรหัสพื้นฐาน ฯลฯ
ดำเนินการต่อไปนี้เพื่อแกะกล่องถอดรหัสและถอดรหัสซอร์สโค้ด Dropbox Python ส่วนใหญ่ มันจะสกัดไปยังไดเรกทอรีเริ่มต้น out มีชื่อ:
python3 unpacker.py --dropbox-zip `find . -name python-packages-37.zip`
find . -name python-packages-37.zip | xargs python3.7 gendb.py --python-dir tmp/Python-3.7.4/ --db opcode.db --dropbox-zip
python3 patchzip.py --dropbox-zip `find . -name python-packages-37.zip` --output-zip out.zip
mv out.zip ~/.dropbox-dist/dropbox-lnx_64-71.4.108/python-packages-37.zip
~/.dropbox-dist/dropbox-lnx_64-71.4.108/dropbox
python3 checkdb.py --db opcodemap.db
ที่จะให้บางอย่างดังต่อไปนี้:
...
| ============================== | ======= | ======= |
| OPCODE | PYTHON | DROPBOX |
| ============================== | ======= | ======= |
| POP_TOP | 1 | 24 |
| ROT_TWO | 2 | 1 |
| ROT_THREE | 3 | 83 |
| DUP_TOP | 4 | 66 |
| UNARY_POSITIVE | 10 | 77 |
...
setenv.py สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้โปรดดู BlogPost อีกครั้ง ปรับเปลี่ยนตามความประสงค์แล้วใช้เช่นนี้เพื่อตั้งค่าสภาพแวดล้อมและเรียกใช้ Dropbox eval `python3 setenv.py`
~/.dropbox-dist/dropbox-lnx_64-71.4.108/dropbox