Можете ли вы сказать мне, в чем проблема с python cpde?

Среда разработки: ubuntu 20.04 python3

Я пробовал извлечение разрешений Android. Я не знаю, почему эта проблема появляется. Я не знаю, что это за ошибка. Можете ли вы сказать мне, в чем проблема?

Exception in thread "pool-1-thread-1" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so


    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
    at java.base/java.lang.Runtime.load0(Runtime.java:768)
    at java.base/java.lang.System.load(System.java:1837)
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648)
    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
    at java.base/java.lang.System.loadLibrary(System.java:1873)
    at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1399)
    at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1397)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1396)
    at java.desktop/java.awt.Toolkit.<clinit>(Toolkit.java:1429)
    at java.desktop/sun.awt.AppContext$2.run(AppContext.java:282)
    at java.desktop/sun.awt.AppContext$2.run(AppContext.java:271)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.desktop/sun.awt.AppContext.initMainAppContext(AppContext.java:271)
    at java.desktop/sun.awt.AppContext$3.run(AppContext.java:326)
    at java.desktop/sun.awt.AppContext$3.run(AppContext.java:309)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.desktop/sun.awt.AppContext.getAppContext(AppContext.java:308)
    at java.desktop/javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:129)
    at java.desktop/javax.imageio.ImageIO.<clinit>(ImageIO.java:66)
    at jadx.core.utils.android.Res9patchStreamDecoder.decode(Res9patchStreamDecoder.java:41)
    at jadx.api.ResourcesLoader.decodeImage(ResourcesLoader.java:117)
    at jadx.api.ResourcesLoader.loadContent(ResourcesLoader.java:104)
    at jadx.api.ResourcesLoader.lambda$loadContent$0(ResourcesLoader.java:82)
    at jadx.api.ResourcesLoader.decodeStream(ResourcesLoader.java:71)
    at jadx.api.ResourcesLoader.loadContent(ResourcesLoader.java:82)
    at jadx.api.ResourceFile.loadContent(ResourceFile.java:60)
    at jadx.core.xmlgen.ResourcesSaver.run(ResourcesSaver.java:31)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

это код питона.

Execution Code: python3 [file name].py there are some malware application in malwareAPK directory.

"""
Author : Saket Upadhyay
Android Permission Extraction and Database Creation

26 Sept. 2019
"""
from os import system as sys
import os, time
import xml.etree.ElementTree as ET
import numpy as np
import csv

# FUNCTION TO MERGE FOUND PERMISSIONS TO DEFAULT PERMISSION LIST TO CREATE COMPRIHENSIVE PERMISSION LIST
def PermListUpdater():
    updateList = []
    defaultList = []
    with open('./PermList/UpdatePermList.txt') as updateFile:
        updatedata = updateFile.read()
        updateList = updatedata.split('\n')
    updateList.pop()
    with open('./PermList/DefaultPermList.txt') as defaultFile:
        defaultdata = defaultFile.read()
        defaultList = defaultdata.split('\n')
    defaultList.pop()

    newList=defaultList+list(set(updateList) - set(defaultList))

    with open('./PermList/UpdatedPermList.txt', 'w') as dumpFile:
        for i in newList:
            dumpFile.write(i+'\n')


# FUNCTION TO CREATE .csv FILE TO STORE DATA FROM PERMISSION LIST SUPPLIED
def CSVFormatter():
    test_file=open("./PermList/UpdatedPermList.txt")
    data=test_file.read()
    test_file.close()

    permlist=data.split('\n')
    permlist.pop()

    csv_row_data=['NAME']  #ADD NAME COLUMN
    csv_row_data += permlist
    csv_row_data.append('CLASS') # ADD PERMISSION COLUMN 

    with open('data.csv','w') as csv_file:
        writer=csv.writer(csv_file)
        writer.writerow(csv_row_data)


#FUNCTION TO EXTRACT PERMISSIONS FROM APPLICATIONS TO CREATE A LIST
def Extract():
    DIRTYPE=["./MalwareAPK","./BenignAPK"]
    permCollection = set()


    for datastoredir in DIRTYPE:
        if datastoredir == "./MalwareAPK":          # FILTER APK TYPE TO AID IN LABEL GENERATION
            apktype="MALWARE"
        else:
            apktype="BENIGN"
        Flag=1
        TimeStamp = str(time.time())
        Jdax = "./Modules/jadx/bin/jadx"            # JADX MODULE PATH
        TargetApkPath = datastoredir
        ApkNameList = os.listdir(datastoredir)
        if len(ApkNameList) == int(0):
            Flag=0

        if Flag != int(0):
            ApkNameList.sort()
            TargetApkPath = datastoredir+"/"
            CurrentApk = 0

            for ApkName in ApkNameList:
                TargetApk = TargetApkPath + ApkName

                print("("+str(apktype)+")"+ " [" + str(CurrentApk + 1) + ' / ' + str(len(ApkNameList)) + "] --- "+ApkName,end="")
               
                sys(Jdax + " -d ./UnpackedApk/" + ApkName + TimeStamp + " " + TargetApk+ " >/dev/null" )        # USE JADX TO EXTRACT FILES FROM APK AND MAINFEST.XML
                UnpackedDir = "./UnpackedApk/" + ApkName + TimeStamp
                MainfestPath = UnpackedDir + "/resources/AndroidManifest.xml"
                try:
                    root = ET.parse(MainfestPath).getroot()
                    permissions = root.findall("uses-permission")

                    print("  SET STATUS :", end=' ')        # ADD NEW PERMISSION TO THE LIST
                    for perm in permissions:
                        for att in perm.attrib:
                            permelement = perm.attrib[att]

                            if permelement in permCollection:
                                print("0", end=' ')
                            else:
                                print("1", end=' ')
                                permCollection.add(permelement)

                except FileNotFoundError:
                    print('Error')
                    print(TargetApk)
                    pass
                sys("rm -f -R " + UnpackedDir)
                print()
                CurrentApk += 1


    permList = list(permCollection)


    with open("./PermList/UpdatePermList.txt", 'w') as file:        # SAVE LIST IN FILE.
        for i in permList:
            file.write(i + '\n')


#FUNCTION TO CREATE DATASET FROM EXISTING .csv FILE AND SUPPLIED APK FILES FOLDER.
def Bagger(datastoredir):
    if datastoredir == "./MalwareAPK":
        TYPE=1                        # TYPE SET TO DIFFERENTIATE MALWARE AND BENIGN IN DATASET WITH LABELS
        print("\n\t ** Extracting From Malware Samples ** \n\n")
    elif datastoredir =="./BenignAPK":
        TYPE=0
        print("\n\t ** Extracting From Benign Samples ** \n\n")
    TimeStamp = str(time.time())
    Flag=1

    Jdax = "./Modules/jadx/bin/jadx"
    TargetApkPath = datastoredir+"/"
    ApkNameList = os.listdir(datastoredir)
    if len(ApkNameList) == int(0):
        Flag=0

    if Flag != int(0):
        ApkNameList.sort()
        TotalApks = len(ApkNameList)
        CurrentApk = 0
        fieldnames=[]
        with open('data.csv') as csv_file:
            CSVREADER=csv.DictReader(csv_file)
            fieldnames=CSVREADER.fieldnames     #GET THE FIELD NAMES

        csv_master_dict=dict.fromkeys(fieldnames,0)


        for ApkName in ApkNameList:
            TargetApk = TargetApkPath + ApkName

            print(">[" + str(CurrentApk + 1) + ' / ' + str(TotalApks) + "] --- "+ApkName ,end=' ')
            print("\t.",end=' ')
            sys(Jdax + " -d ./UnpackedApk/" + ApkName + TimeStamp + " " + TargetApk + " >/dev/null")        #EXTRACT THE PERMISSIONS FROM THE APK FILES
            print(".",end=' ')

            UnpackedDir = "./UnpackedApk/" + ApkName + TimeStamp
            MainfestPath = UnpackedDir + "/resources/AndroidManifest.xml"

            try:
                root = ET.parse(MainfestPath).getroot()         # FORMAT DATA ROW 
                permissions = root.findall("uses-permission")
                csv_master_dict=dict.fromkeys(fieldnames,0)
                csv_master_dict['NAME']=ApkName
                csv_master_dict['CLASS']=TYPE
                for perm in permissions:
                    for att in perm.attrib:
                        permelement = perm.attrib[att]
                        csv_master_dict[permelement]=1
                sys("rm -f -R " + UnpackedDir)
                print(".", end=' ')
                with open('data.csv', 'a') as csv_dump:
                    CSVwriter = csv.DictWriter(csv_dump, fieldnames=fieldnames)
                    CSVwriter.writerow(csv_master_dict)         # SAVE DATA TO DATASET ROW BY ROW FOR EACH APPLICATION
                print(".")
            except Exception:
                print("EERRRROORR")
                pass
            CurrentApk += 1



# MAIN DRIVER FUNCTION 
def Main():
    sys("rm './PermList/UpdatePermList.txt' './PermList/UpdatePermList2.txt' './PermList/UpdatedPermList.txt'")  # TO CLEAN THE STRUCTURE BEFORE STARTING
    sys("rm -rf ./UnpackedApk/*")
    Malware_Directory_Name="./MalwareAPK"
    Benign_Directory_Name="./BenignAPK"
    sys("clear")
    print("\tANDROID PERMISSION BASED DATASET CREATOR FOR ML MODELS \n\tGIT : https://github.com/Saket-Upadhyay/Android-Permission-Extraction-and-Dataset-Creation-with-Python\n\n")
    print("Extracting Permissions\t[*---]")
    Extract()
    print("\n\nCreating Base Permission List\t[**--]")
    PermListUpdater()
    print("\n\nCreating Base Dataset\t[***-]")
    CSVFormatter()
    print("\n\nCreating Main Dataset\t[****]")
    Bagger(Benign_Directory_Name)
    Bagger(Malware_Directory_Name)
    print("\n## Cleaning Temp. Files")
    sys("rm -rf ./UnpackedApk/*")
    sys("rm './PermList/UpdatePermList.txt' './PermList/UpdatedPermList.txt'")
    print("\n\n ***************DONE*****************  \nSaved as data.csv")


if __name__ == '__main__':
    Main()


person 이선아    schedule 02.05.2021    source источник
comment
Пожалуйста, поделитесь кодом PYTHON, который привел к ошибке.   -  person edusanketdk    schedule 02.05.2021
comment
я обновляю некоторый код.   -  person 이선아    schedule 02.05.2021
comment
stackoverflow.com/questions/62017969/ отвечает ли это на ваш вопрос?   -  person edusanketdk    schedule 02.05.2021
comment
уже сделал. Это не решение. :(   -  person 이선아    schedule 03.05.2021
comment
Кажется, это связано с процессом. но я не знаю почему   -  person 이선아    schedule 03.05.2021


Ответы (1)


Похоже на ошибку в пакетах.

Чтобы исправить, установите openjdk-11-jre:

sudo apt install openjdk-11-jre
person turnerm    schedule 14.05.2021