import re
from com.pnfsoftware.jeb.client.api import IScript, IGraphicalClientContext
from com.pnfsoftware.jeb.core import RuntimeProjectUtil
from com.pnfsoftware.jeb.core.actions import Actions, ActionContext, ActionCommentData, ActionXrefsData
from com.pnfsoftware.jeb.core.events import JebEvent, J
from com.pnfsoftware.jeb.core.output import AbstractUnitRepresentation, UnitRepresentationAdapter
from com.pnfsoftware.jeb.core.units.code import ICodeUnit, ICodeItem
from com.pnfsoftware.jeb.core.units.code.java import IJavaSourceUnit, IJavaStaticField, IJavaNewArray, IJavaConstant, IJavaCall, IJavaField, IJavaMethod, IJavaClass
face_sdk_classes={
u'旷视科技-33dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2W2k6%4k6A6K9g2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'com.megvii.facepp\S*',
u'旷视科技-45eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2W2k6%4k6A6K9g2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'com.megvii.idcardquality\S*',
u'旷视科技-10eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2W2k6%4k6A6K9g2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'com.megvii.kas\S*',
u'旷视科技-aebK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2W2k6%4k6A6K9g2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'com.megvii.kassilentlive.sdk\S*',
u'旷视科技-b6dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2W2k6%4k6A6K9g2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'megvii.openapi.access\S*',
u'商汤科技-104K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4W2L8Y4y4W2N6r3W2E0k6g2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'com.sensetime.senseid.sdk\S*',
u'平安科技-tech.pingan.com': r'com.pingan.ai.face.entity\S*',
u'平安科技-tech.pingan.com': r'com.pingan.ai.face.manager\S*',
u'科大讯飞-070K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3W2X3L8s2W2@1k6h3E0Q4x3X3g2U0L8$3#2Q4x3U0M7`.: r'com.iflytek.cloud.FaceRequest\S*',
u'科大讯飞-e62K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3W2X3L8s2W2@1k6h3E0Q4x3X3g2U0L8$3#2Q4x3U0M7`.: r'com.iflytek.cloud.FaceDetector\S*',
u'海鑫科金-41aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2A6M7$3W2Y4L8W2)9J5k6h3y4G2L8g2)9J5k6h3y4F1i4K6t1%4: r'com.hisign.FaceSDK\S*',
u'海鑫科金-be4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2A6M7$3W2Y4L8W2)9J5k6h3y4G2L8g2)9J5k6h3y4F1i4K6t1%4: r'com.hisign.facedetectv1small\S*',
u'海鑫科金-2d1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2A6M7$3W2Y4L8W2)9J5k6h3y4G2L8g2)9J5k6h3y4F1i4K6t1%4: r'com.hisign.matching.UvcInputAPI\S*',
u'爱莫科技-008K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4A6L8h3q4D9L8q4)9J5k6s2c8W2j5$3S2Q4x3X3g2U0L8$3#2Q4x3U0M7`.: r'com.aimall.sdk.faceactiondetector\S*',
u'爱莫科技-70bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4A6L8h3q4D9L8q4)9J5k6s2c8W2j5$3S2Q4x3X3g2U0L8$3#2Q4x3U0M7`.: r'com.aimall.sdk.trackerdetector\S*',
u'爱莫科技-335K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4A6L8h3q4D9L8q4)9J5k6s2c8W2j5$3S2Q4x3X3g2U0L8$3#2Q4x3U0M7`.: r'com.aimall.core\S*',
u'百度AI-2bdK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4A6i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3U0M7`.: r'com.baidu.idl.facesdk\S*',
u'杭州小孔成像-517K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3c8X3j5h3y4W2i4K6u0W2N6r3g2U0K9q4)9J5y4H3`.`.: r'com.dface.api.FaceDetect\S*',
u'杭州小孔成像-b9cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3c8X3j5h3y4W2i4K6u0W2N6r3g2U0K9q4)9J5y4H3`.`.: r'com.dface.api.FaceCompare\S*',
u'杭州小孔成像-6beK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3c8X3j5h3y4W2i4K6u0W2N6r3g2U0K9q4)9J5y4H3`.`.: r'com.dface.api.FaceTrack\S*',
u'杭州小孔成像-83aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3c8X3j5h3y4W2i4K6u0W2N6r3g2U0K9q4)9J5y4H3`.`.: r'com.dface.dto.LicenseInfoType\S*',
u'中科视拓-6aeK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4W2k6i4c8S2N6r3g2U0K9q4)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'com.seeta.sdk\S*',
u'广州云从科技-177K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4D9L8%4g2V1N6$3q4D9K9#2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'cn.cloudwalk.FaceInterface\S*',
u'广州云从科技-c34K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4D9L8%4g2V1N6$3q4D9K9#2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'cn.cloudwalk.callback.FaceInfoCallback\S*',
u'广州云从科技-4fdK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4D9L8%4g2V1N6$3q4D9K9#2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'cn.cloudwalk.sdk.FaceInfo\S*',
u'广州云从科技-c51K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4D9L8%4g2V1N6$3q4D9K9#2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'cn.cloudwalk.sdk.realtime.FaceInfoCallback\S*',
u'广州云从科技-b3aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4D9L8%4g2V1N6$3q4D9K9#2)9J5k6h3y4G2L8g2)9J5y4H3`.`.: r'cn.cloudwalk.libproject\S*',
u'杭州虹软科技-a28K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4A6i4K6u0W2j5i4u0U0M7$3!0X3N6q4)9J5k6h3y4G2L8g2)9J5k6h3y4F1i4K6t1%4: r'com.arcsoft.facetracking\S*',
u'杭州虹软科技-424K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4A6i4K6u0W2j5i4u0U0M7$3!0X3N6q4)9J5k6h3y4G2L8g2)9J5k6h3y4F1i4K6t1%4: r'com.arcsoft.facerecognition\S*',
u'FaceTec-dev.facetec.com/': r'com.facetec.sdk.FaceTecSDK\S*',
u'FaceTec-dev.facetec.com/': r'com.facetec.sdk.FaceTecSessionStatus\S*',
u'FaceTec-dev.facetec.com/': r'com.facetec.sdk.FaceTecSDKStatus\S*',
u'上海依图科技-9dcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2&6K9i4c8#2N6r3g2U0K9q4)9J5k6h3y4G2L8g2)9J5c8W2)9J5y4H3`.`.: r'com.yitutech.face\S*',
}
found_sdk=[]
class FaceSdkDectect(IScript):
def run(self, ctx):
global face_sdk_classes
global found_sdk
engctx = ctx.getEnginesContext()
if not engctx:
print('Back-end engines not initialized')
return
projects = engctx.getProjects()
if not projects:
print('There is no opened project')
return
project = projects[0]
print('Decompiling code units of %s...' % project)
codeUnit = RuntimeProjectUtil.findUnitsByType(project, ICodeUnit, False)
for unit in codeUnit:
classes = unit.getClasses()
for cls in classes:
for (key, value) in face_sdk_classes.items():
pattern = re.compile(value, re.I)
x = pattern.search(str(cls))
if(x):
found_sdk.append(key)
found_sdk = list(set(found_sdk))
print("FaceSdkDectect ------------------------------------------------")
for sdk in found_sdk:
print(sdk.encode('utf-8', errors='ignore').decode('utf-8'))
print("FaceSdkDectect ------------------------------------------------")