小编Abr*_*ham的帖子

如何在没有卡存在的情况下向智能卡读卡器(而不是智能卡)发送命令?

前言:

我有一个双接口智能卡读卡器,具有一些扩展功能(除了向卡发送APDU命令和接收APDU响应).

例如,在其文档中提到您可以使用以下命令获取阅读器的固件版本:

GET_FIRMWARE_VERSION: FF 69 44 42 05 68 92 00 05 00

在它的工具中,有一个用于此功能的按钮,它工作正常:

在此输入图像描述

我甚至嗅了嗅USB端口,看看我的电脑和读卡器之间的连接到底有什么交换这个功能:

命令: 在此输入图像描述

响应: 在此输入图像描述

问题:

我想使用其他工具或通过代码获取我的阅读器版本(并可能发送其他扩展命令),但我必须在读卡器中插入一张卡才能发送命令,否则我会收到No Card Present异常,而我不想发送命令到卡!(阅读器工具成功回答GET_FIRMWARE_VERSION,读卡器插槽中没有任何卡可用)

到目前为止我做了什么:

1.我尝试了一些工具,包括OpenSCTool,PyAPDUTool和其他读者工具.2.我写了以下python脚本来发送扩展命令.

#--- Importing required modules.
import sys
import time
sys.path.append("D:\\PythonX\\Lib\\site-packages")
from smartcard.scard import *
import smartcard.util
from smartcard.System import readers


#---This is the list of commands that we want to send device
cmds =[[,0xFF,0x69,0x44,0x42,0x05,0x68,0x92,0x00,0x04,0x00],]


#--- Let's to make a connection to the card reader
r=readers()
print "Available Readers :",r
print
target_reader …
Run Code Online (Sandbox Code Playgroud)

apdu javacard smartcard-reader pyscard

17
推荐指数
1
解决办法
6930
查看次数

在Python中使用GSM调制解调器拨打电话时收到"NO CARRIER"错误

我想用我的GSM调制解调器拨打电话.所以我写了下面的程序:

import time
import serial

recipient = "+98xxxxxxxxxx"

phone = serial.Serial("COM10",  115200, timeout=5)
try:
    time.sleep(0.5)
    phone.write(b'ATZ\r')
    time.sleep(1)
    phone.write(b'ATD"'+recipient.encode() +b'"\r')
    while(1):
        print(phone.readline())
    time.sleep(0.5)
finally:
    phone.close()
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我收到了这个输出:

>>> ================================ RESTART ================================
>>> 
b'ATZ\r\r\n'
b'OK\r\n'
b'ATDxxxxxxxxxx\r\r\n'
b'NO CARRIER\r\n'
Run Code Online (Sandbox Code Playgroud)

这个"NO CARRIER"错误意味着什么?

请注意,我可以成功发送短信.


这是我用来发送短信的程序:

import time
import serial

recipient = "+98xxxxxxxxxx"
message = "Test"

phone = serial.Serial("COM10",  115200, timeout=5)


try:
    time.sleep(0.5)
    phone.write(b'ATZ\r')
    time.sleep(0.5)
    phone.write(b'AT+CMGF=1\r')
    time.sleep(0.5)
    phone.write(b'AT+CMGS="' + recipient.encode() + b'"\r')
    time.sleep(0.5)
    phone.write(message.encode() + b"\r")
    time.sleep(0.5)
    phone.write(bytes([26]))
    time.sleep(0.5)
finally:
    phone.close()
Run Code Online (Sandbox Code Playgroud)

python modem gsm at-command python-3.x

13
推荐指数
1
解决办法
3万
查看次数

如何在活动呼叫期间通过GSM调制解调器发送和接收一些数据(Python和AT命令)

我编写了下面的Python程序来与我的D-Link DWM-156 GSM调制解调器进行通信.该程序等待来电,当收到RING警报时,它接受该呼叫.

幸运的是它工作正常;)

该程序:

import time
import serial

phone = serial.Serial("COM10",  115200, timeout=5)

try:
    time.sleep(1)
    while(1):
        x = phone.readline()
        print(x)
        if (x == b'RING\r\n'):
            phone.write(b'ATA\r')
            time.sleep(0.5)

finally:
    phone.close()
Run Code Online (Sandbox Code Playgroud)

运行期间的输出:

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b'\r\n'
b'RING\r\n'   #Here, my friend (named "Jimmy",for example), called me.
b'OK\r\n'
b''
b''
b''
b''
b''
Run Code Online (Sandbox Code Playgroud)

如上所示,在接到来电后,GSM调制解调器立即接受它,从那一点到最后,我们有一个有效的呼叫.

我的问题:

1-在此活动呼叫期间是否可以发送/接收某些数据(例如SMS)?或者至少可以在这个有效通话期间在这个频道的另一侧(即吉米手机的扬声器)发出噪音吗?(我不想发出可识别的声音,噪音就足够了.虽然有一种发送可识别语音的方法确实更好.)

2-为什么此程序检测到来电,但未检测到来电短信?往下看.当Jimmy向我的GSM调制解调器发送3条短信时,你可以看到我程序的输出(并且他在我的手机上收到了所有这些的"已发送"通知).

>>> ================================ RESTART ================================
>>> 
b''
b''
b''
b''
b''
b''
b''
Run Code Online (Sandbox Code Playgroud)

如上所述,我没有收到任何信息 …

python gsm pyserial at-command python-3.x

10
推荐指数
1
解决办法
2444
查看次数

在javacard中安装applet

我通过Eclipse制作了流行的"Hello World"javacard代码的.cap文件

现在我想通过GPShell和ACR38智能卡读卡器将它加载到真正的javacard中.

问题:我需要任何密钥才能在卡中加载.cap文件吗?我的意思是,我应该在将我的小程序上传到卡中之前进行身份验证,还是不是必需的?我认为认证是非常重要的.在没有身份验证的情况下上传.cap是不合理的.但我不知道,如何进行身份验证.问题:这有什么问题?

C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
javax.smartcardio.CardException: connect() failed
        at sun.security.smartcardio.TerminalImpl.connect(Unknown Source)
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)
Caused by: sun.security.smartcardio.PCSCException: SCARD_E_SHARING_VIOLATION
        at sun.security.smartcardio.PCSC.SCardConnect(Native Method)
        at sun.security.smartcardio.CardImpl.<init>(Unknown Source)
        ... 2 more
Found card in terminal: ACS CCID USB Reader 0
java.lang.NullPointerException
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)

C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install

Found terminals: [PC/SC terminal ACS CCID USB Reader 0]

Found card in terminal: ACS CCID USB Reader 0 …
Run Code Online (Sandbox Code Playgroud)

smartcard javacard globalplatform

8
推荐指数
1
解决办法
2102
查看次数

如何自定义Gitlab LDAP身份验证功能?

我想在我安装的Gitlab loginLDAP身份验证功能中编写一些日志.

我在以下文件中添加了所需的行(第3行): 在此输入图像描述

之后我在Gitlab的登录表单中进行了一些登录尝试.

但正如您在上面看到的那样,debug文件没有创建.

我需要做什么?它需要重新编译还是什么?

请注意,我还使用以下命令重新启动了该服务,但没有任何更改:

# gitlab-ctl restart

ldap ruby-on-rails gitlab

8
推荐指数
1
解决办法
84
查看次数

错误:在程序中迷路'\ 240'

我想要实现以下功能:

void calc ( double* a, double* b, int r, int c, double (*f) (double) )
Run Code Online (Sandbox Code Playgroud)

输入参数a,r,c和f,输出b."a"和"b"是具有"r"行和"c"列的2d矩阵."f"是一个函数指针,可以指向以下类型的任何函数:

double function?name ( double x ) { 
    … 
} 
Run Code Online (Sandbox Code Playgroud)

函数  calc 将矩阵a中的每个元素(即aij)转换为矩阵b中的bij = f(aij).  


我实现calc如下函数,并将其放在一个程序中进行测试:

#include <stdlib.h>
#include <iostream>

using namespace std;

double f1( double x ){
    return x * 1.7;
}

void calc ( double* a, double* b, int r, int c, double (*f) (double) ) 
{
    double input;
    double output;

    for(int i=0;i<r*c;i++)
    {
        input=a[i];
        output=(*f)(input);
        b[i]=output;
    }
}

int …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers function matrix

7
推荐指数
3
解决办法
8万
查看次数

如何使用SIM卡(安装小程序)

我有一张带有以下ATR的智能卡:

ATR = 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF.

根据atr-parse.appspot.com的输出,我发现它是MCI(伊朗移动通信公司)的SIM卡.

这些是我从历史字节获得的信息:

(紧凑型TLV数据对象)

标签:3,Len:1(卡服务数据字节)

卡服务数据字节:0

  • EF.DIR和EF.ATR访问服务:通过GET RECORD(s)命令

  • 卡与MF

标签:7,Len:3(卡片功能)

选择方法:190

  • 支持记录号码

  • 支持短EF标识符

  • 隐式DF选择

  • 按文件标识符选择DF

  • 通过路径选择DF

  • DF选择全DF名称

数据编码字节:33

  • 写功能的行为:专有

  • BER-TLV标记字段的第一个字节的值'FF':有效

  • 四重奏数据单位:1

命令链,长度字段和逻辑通道:16

  • 逻辑频道号码分配:由卡

  • 最大逻辑通道数:1

标签:6,Len:6(发布前数据)

数据:54 59 53 04 4C 25"TYS.L%"

如上所述,提到该卡有一个MF.

问题是我对这张卡无能为力.在第一步中,我想列出其内容.我看了TS 11.11,TS 102.221,TS 131.102TS 151.011规范.

据我所知,从上面的文件中,卡的系统文件包括Master File其AID 3F00 …

gsm javacard sim-card gemalto globalplatform

7
推荐指数
1
解决办法
3336
查看次数

致命错误:iostream:使用GCC编译C程序时没有这样的文件或目录

为什么当我想编译以下多线程合并排序C程序时,我收到此错误:

ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread
mer.c:4:20: fatal error: iostream: No such file or directory
 #include <iostream>
                    ^
compilation terminated.
ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread
mer.c:4:22: fatal error: iostream.h: No such file or directory
 #include <iostream.h>
                      ^
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

我的节目:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <iostream>
using namespace std;

#define N 2  /* # of thread */

int a[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};  /* target …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc g++

7
推荐指数
2
解决办法
15万
查看次数

如何用Java计算文件的哈希值?

我编写了以下程序来计算Java中字符串的SHA-256哈希值:

public class ToHash {

    public static void main(String[] args)  {

        byte[] data = "test".getBytes("UTF8");
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hash = digest.digest(data);
        System.out.println(new BASE64Encoder().encode(hash));

    }
}
Run Code Online (Sandbox Code Playgroud)

嗯,这很好.在下一步中,我想以接受文件并计算其哈希值的方式开发它.我的解决方案是在字符串数组中读取整个文件,并在该字符串数组上调用该digest()方法.但是有两个问题:

  1. 我不知道如何将整个文件读入数组?目前我认为我必须逐行阅读并附加一个带有新行的数组!

  2. 以上方法需要大量文件的大量内存!


这是我当前读取文件的程序:

public class ToHash {

    public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException, FileNotFoundException, IOException {
        // TODO code application logic here

        // The name of the file to open.
        String fileName = "C:\\Users\\ghasemi\\Desktop\\1.png";
        BufferedReader br = null;

        try {

            String sCurrentLine;
            br = new BufferedReader(new FileReader(fileName));
            while …
Run Code Online (Sandbox Code Playgroud)

java arrays hash file-io

7
推荐指数
1
解决办法
2万
查看次数

我们可以在两对特定的IP和端口之间同时拥有两个udp流吗?

我正在尝试检查和分析我的网络流量.突然间我发现了令人困惑的事情.有人认为数据包会根据它们分成流(SRC_IP, DES_IP, SRC_PORT, SRC_PORT , PROTOCOL_NUM).但现在我发现两组具有相同功能的数据包,但在Wireshark中被解释为两个不同的流:

如下所示,RTP具有偶数包数的包是单个流,而RTP具有奇数包数的包是另一个流,而两者都相等(SRC_IP, DES_IP, SRC_PORT, SRC_PORT , PROTOCOL_NUM).为什么?

要比较统计数据:

在此输入图像描述

在此输入图像描述

它们被解释为两个不同的流:

在此输入图像描述

在此输入图像描述

udp network-programming rtp wireshark

7
推荐指数
1
解决办法
161
查看次数