mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-24 01:08:32 +03:00
sniff: send ATR over GSMTAP
Change-Id: Id35129883f08002a4a796b56954a128e2b533245
This commit is contained in:
@@ -65,7 +65,7 @@ struct st_transport {
|
|||||||
/* global GSMTAP instance */
|
/* global GSMTAP instance */
|
||||||
static struct gsmtap_inst *g_gti;
|
static struct gsmtap_inst *g_gti;
|
||||||
|
|
||||||
static int gsmtap_send_sim(const uint8_t *apdu, unsigned int len)
|
static int gsmtap_send_sim(uint8_t sub_type, const uint8_t *data, unsigned int len)
|
||||||
{
|
{
|
||||||
struct gsmtap_hdr *gh;
|
struct gsmtap_hdr *gh;
|
||||||
unsigned int gross_len = len + sizeof(*gh);
|
unsigned int gross_len = len + sizeof(*gh);
|
||||||
@@ -80,8 +80,9 @@ static int gsmtap_send_sim(const uint8_t *apdu, unsigned int len)
|
|||||||
gh->version = GSMTAP_VERSION;
|
gh->version = GSMTAP_VERSION;
|
||||||
gh->hdr_len = sizeof(*gh)/4;
|
gh->hdr_len = sizeof(*gh)/4;
|
||||||
gh->type = GSMTAP_TYPE_SIM;
|
gh->type = GSMTAP_TYPE_SIM;
|
||||||
|
gh->sub_type = sub_type;
|
||||||
|
|
||||||
memcpy(buf + sizeof(*gh), apdu, len);
|
memcpy(buf + sizeof(*gh), data, len);
|
||||||
|
|
||||||
rc = write(gsmtap_inst_fd(g_gti), buf, gross_len);
|
rc = write(gsmtap_inst_fd(g_gti), buf, gross_len);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
@@ -235,9 +236,17 @@ static int process_data(enum simtrace_msg_type_sniff type, const uint8_t *buf, i
|
|||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
if (SIMTRACE_MSGT_SNIFF_TPDU == type) {
|
/* Send message as GSNTAP */
|
||||||
/* send TPDU (now considered as APDU) to GSMTAP */
|
switch (type) {
|
||||||
gsmtap_send_sim(data->data, data->length);
|
case SIMTRACE_MSGT_SNIFF_ATR:
|
||||||
|
gsmtap_send_sim(GSMTAP_SIM_ATR, data->data, data->length);
|
||||||
|
break;
|
||||||
|
case SIMTRACE_MSGT_SNIFF_TPDU:
|
||||||
|
/* TPDU is now considered as APDU since SIMtrace sends complete TPDU */
|
||||||
|
gsmtap_send_sim(GSMTAP_SIM_APDU, data->data, data->length);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user