gpt4 book ai didi

bytecode-manipulation - 封顶文件的字节码卡片外验证程序

转载 作者:行者123 更新时间:2023-12-04 04:17:15 29 4
gpt4 key购买 nike

我需要使用卡片外的字节码验证器来验证Java Card程序(盖帽文件)。
我已经手动修改了cap文件中的信息,并且我想验证新的cap文件是否类型正确。

我尝试使用com.sun.javacard.scriptgen.CAP.verifyCAP()方法。我发送了有效和无效的封顶文件,但结果始终等于0。

最佳答案

我从不发布解决方案。那天终于到了;)

下载JavaCard SDK。它包含验证程序的编译版本。对于该示例,将为java_card_kit-2_2_1。

我的文件:

./
./java_card_kit-2_2_1/
./java2CAP.sh
./ValidApplet/
./ValidApplet/ValidApp.java
./verifyCAP.sh


java2CAP.sh:

#!/bin/bash
export JC_HOME=./java_card_kit-2_2_1
export CLASSPATH=$JC_HOME/lib/apduio.jar:$JC_HOME/lib/apdutool.jar:$JC_HOME/lib/jcwde.jar:$JC_HOME/lib/converter.jar:$JC_HOME/lib/scriptgen.jar:$JC_HOME/lib/offcardverifier.jar:$JC_HOME/lib/api.jar:$JC_HOME/lib/capdump.jar:$JC_HOME/lib/:$JC_HOME/samples/classes:$CLASSPATH
PACKAGE=ValidApplet
CLASS=ValidApp
APPLET=$CLASS.java
PACKAGE_AID=0x46:0x56:0x55:0x4c:0x4e:0x54:0x45:0x53:0x54:0x53
APPLET_AID=0x46:0x56:0x55:0x4c:0x4e:0x54:0x45:0x53:0x54:0x53:0x41:0x70:0x70
javac -g -source 1.3 -target 1.1 $PACKAGE/$APPLET
java com.sun.javacard.converter.Converter -nobanner -out CAP -exportpath $JC_HOME/api_export_files -applet $APPLET_AID $CLASS $PACKAGE $PACKAGE_AID 1.0 -i


verifyCAP.sh:

#!/bin/bash
export JC_HOME=./java_card_kit-2_2_1
export CLASSPATH=$JC_HOME/lib/apduio.jar:$JC_HOME/lib/apdutool.jar:$JC_HOME/lib/jcwde.jar:$JC_HOME/lib/converter.jar:$JC_HOME/lib/scriptgen.jar:$JC_HOME/lib/offcardverifier.jar:$JC_HOME/lib/api.jar:$JC_HOME/lib/capdump.jar:$JC_HOME/lib/:$JC_HOME/samples/classes:$CLASSPATH

export CAPP_PATH=./ValidApplet/javacard
export CAPP_NAME=ValidApplet.cap

java -classpath $JC_HOME/lib/offcardverifier.jar com.sun.javacard.offcardverifier.Verifier $JC_HOME/api_export_files/javacard/framework/javacard/framework.exp $JC_HOME/api_export_files/java/lang/javacard/lang.exp $JC_HOME/api_export_files/javacard/security/javacard/security.exp $CAPP_PATH/$CAPP_NAME


./ValidApplet/ValidApp.java:

package ValidApplet;

import javacard.framework.Applet;
import javacard.framework.APDU;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;

public class ValidApp extends Applet //implements PIN
{
final static byte TEST_CLA = (byte)0x77;

public static class TestClassStatic {};

protected ValidApp()
{
register();
}

public static void install(byte[] bArray, short bOffset, byte bLength)
{
new ValidApp();
}

public void process(APDU apdu)
{
byte buffer[] = apdu.getBuffer();

try {
if (buffer[ISO7816.OFFSET_CLA] == TEST_CLA) {
test((byte)4, (short)2);
} else {
ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
}
} catch (ISOException e) {

}
}
}

关于bytecode-manipulation - 封顶文件的字节码卡片外验证程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267315/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com