'잡동사니'에 해당되는 글 13812건

  1. 2025.03.18 libpcsclite on cpp
  2. 2025.03.17 NDEF 데이터 읽기
  3. 2025.03.17 ntag 213, 215 그리고 13.25MHz CUID 카드
  4. 2025.03.17 SCardListReadersA 함수(winscard.h)
  5. 2025.03.16 ace combat 7 멀티 플레이 첫 시도 2
  6. 2025.03.15 ace combat 7 sp mission완료
  7. 2025.03.15 한놈 털 밈
  8. 2025.03.14 low batt
  9. 2025.03.13 아내몰래 지름 ㅋㅋ 2
  10. 2025.03.13 libmodbus backend

음.. 흐음...

char *의 포인터를 넘겨줘야 하는데 에러가 난다 머지?

char *mszReaders = NULL;
DWORD dwReaderLen = SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, (LPCSTR)NULL, &mszReaders, &dwReaderLen);

 

그래서 강제로 하면 이렇게 에러가 나는데

error: cannot convert ‘char**’ to ‘LPSTR’ {aka ‘char*’}
  103 |     rv = SCardListReaders(hContext, (LPCSTR)NULL, &mszReaders, &dwReaderLen);
      |                                                   ^~~~~~~~~~~
      |                                                   |
      |                                                   char**

 

아래처럼 변수를 미리 선언해서 자동할당 하지 않게 하거나

char mszReaders[255];
DWORD dwReaderLen = sizeof(mszReaders); // SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, (LPCSTR)NULL, mszReaders, &dwReaderLen);

 

아래 처럼 강제 형변환을 해주어서 2중 포인터가 아닌 것으로 속여주면 된다.

char *mszReaders = NULL;
DWORD dwReaderLen = SCARD_AUTOALLOCATE;
rv = SCardListReaders(hContext, NULL, (char*)&mszReaders, &dwReaderLen);

 

해결은 되었는데 해결책 같은 느낌이 하나도 안드네..

'하드웨어 > rfid_nfc_smartcard' 카테고리의 다른 글

출입카드 복제 (CUID)  (0) 2025.03.20
NDEF 데이터 읽기  (0) 2025.03.17
ntag 213, 215 그리고 13.25MHz CUID 카드  (0) 2025.03.17
SCardListReadersA 함수(winscard.h)  (0) 2025.03.17
NTAG  (0) 2025.03.12
Posted by 구차니

claude로 찾아낸 APDU

 

NDEF application을 선택하고 (고정)

파일을 선택하고 (고정)

파일의 길이를 읽고(고정, 리턴 short)

파일을 읽는다(오프셋short + 길이byte)

읽을때는 읽는 길이 + 2 만큼의 버퍼가 필요하다 (끝의 확인 90 00 때문에)

 

BYTE selectNDEF[] = {0x00, 0xA4, 0x04, 0x00, 0x07, 0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01, 0x00};
BYTE selectFILE[] = {0x00, 0xA4, 0x00, 0x0C, 0x02, 0xE1, 0x04};
BYTE lengthNDEF[] = {0x00, 0xB0, 0x00, 0x00, 0x02};
BYTE readNDEF[] = {0x00, 0xB0, 오프셋HIGH, 오프셋LOW, 길이BYTE}

 

'하드웨어 > rfid_nfc_smartcard' 카테고리의 다른 글

출입카드 복제 (CUID)  (0) 2025.03.20
libpcsclite on cpp  (0) 2025.03.18
ntag 213, 215 그리고 13.25MHz CUID 카드  (0) 2025.03.17
SCardListReadersA 함수(winscard.h)  (0) 2025.03.17
NTAG  (0) 2025.03.12
Posted by 구차니

NTAG213 / 215는 ATR이 동일하다.

213 쪽은 ic type이 안뜨는 대신 제조사가 뜨네..?

EXTRA에서 213은 Version information이 안뜨다니..

 


NTAG 213

Mon Mar 17 13:59:48 2025
 Reader 0: ACS ACR1252 Dual Reader [ACR1252 Dual Reader PICC] 00 00
  Event number: 5
  Card state: Card inserted, 
  ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68

ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
+ TS = 3B --> Direct Convention
+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1 
-----
+ Historical bytes: 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00
  Category indicator byte: 80 (compact TLV data object)
    Tag: 4, len: F (initial access data)
      Initial access data: 0C A0 00 00 03 06 03 00 03 00 00 00 00
+ TCK = 68 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
3B 8F 80 01 80 4F 0C A0 00 00 03 06 .. 00 03 00 00 00 00 ..
MIFARE Ultralight (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 .. .. 00 00 00 00 ..
RFID - ISO 14443 Type A Part 3 (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
RFID - ISO 14443 Type A - NXP Mifare Ultralight or UltralightC
   
Mon Mar 17 13:59:49 2025
 Reader 0: ACS ACR1252 Dual Reader [ACR1252 Dual Reader PICC] 00 00
  Event number: 6
  Card state: Card removed, 

 

NTAG 215

Mon Mar 17 14:00:34 2025
 Reader 0: ACS ACR1252 Dual Reader [ACR1252 Dual Reader PICC] 00 00
  Event number: 7
  Card state: Card inserted, 
  ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68

ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
+ TS = 3B --> Direct Convention
+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1 
-----
+ Historical bytes: 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00
  Category indicator byte: 80 (compact TLV data object)
    Tag: 4, len: F (initial access data)
      Initial access data: 0C A0 00 00 03 06 03 00 03 00 00 00 00
+ TCK = 68 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
3B 8F 80 01 80 4F 0C A0 00 00 03 06 .. 00 03 00 00 00 00 ..
MIFARE Ultralight (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 .. .. 00 00 00 00 ..
RFID - ISO 14443 Type A Part 3 (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
RFID - ISO 14443 Type A - NXP Mifare Ultralight or UltralightC
   
Mon Mar 17 14:00:35 2025
 Reader 0: ACS ACR1252 Dual Reader [ACR1252 Dual Reader PICC] 00 00
  Event number: 8
  Card state: Card removed, 

 

13.56MHz CUID 카드

Mon Mar 17 14:01:11 2025
 Reader 0: ACS ACR1252 Dual Reader [ACR1252 Dual Reader PICC] 00 00
  Event number: 9
  Card state: Card inserted, 
  ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A

ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A
+ TS = 3B --> Direct Convention
+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1 
-----
+ Historical bytes: 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00
  Category indicator byte: 80 (compact TLV data object)
    Tag: 4, len: F (initial access data)
      Initial access data: 0C A0 00 00 03 06 03 00 01 00 00 00 00
+ TCK = 6A (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A
3B 8F 80 01 80 4F 0C A0 00 00 03 06 .. 00 01 00 00 00 00 ..
MIFARE Classic 1K (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 .. .. 00 00 00 00 ..
RFID - ISO 14443 Type A Part 3 (as per PCSC std part3)
3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A
NXP/Philips MIFARE Classic 1K (as per PCSC std part3)
http://www.nxp.com/#/pip/pip=[pfp=41863]|pp=[t=pfp,i=41863]
Oyster card - Transport for London (first-gen)
https://en.wikipedia.org/wiki/Oyster_card
ACOS5/1k Mirfare
vivotech ViVOcard Contactless Test Card
Bangkok BTS Sky SmartPass
Mifare Classic 1K (block 0 re-writeable)
Electic vehicle charging card of the German Telekom, acting as EMSP GetCharge
Electic vehicle charging card of the EMSP Stadtwerke Muenchen (SWM), ladenetz.de, Germany
Electic vehicle charging card of the EMSP EinfachStromLaden of Maingau-Energie, Germany
Scouter carsharing customer card in Germany
https://scouter.de/
   
Mon Mar 17 14:01:11 2025
 Reader 0: ACS ACR1252 Dual Reader [ACR1252 Dual Reader PICC] 00 00
  Event number: 10
  Card state: Card removed,

'하드웨어 > rfid_nfc_smartcard' 카테고리의 다른 글

libpcsclite on cpp  (0) 2025.03.18
NDEF 데이터 읽기  (0) 2025.03.17
SCardListReadersA 함수(winscard.h)  (0) 2025.03.17
NTAG  (0) 2025.03.12
NDEF 읽기  (0) 2025.03.11
Posted by 구차니

특이하다면 특이한 함수인데

mszReaders 변수의 길이를 포인터인 pcchReaders에 넘겨주어야지 정상적으로 작동한다.

LONG SCardListReadersA(
  [in]           SCARDCONTEXT hContext,
  [in, optional] LPCSTR       mszGroups,
  [out]          LPSTR        mszReaders,
  [in, out]      LPDWORD      pcchReaders
);

 

그래서 조금 편하게 쓰라고 SCARD_AUTOALLOCATE (-1)을 해주면 알아서 할당해서 던져주는 듯.

LPTSTR          pmszReaders = NULL;
LPTSTR          pReader;
LONG            lReturn, lReturn2;
DWORD           cch = SCARD_AUTOALLOCATE;

// Retrieve the list the readers.
// hSC was set by a previous call to SCardEstablishContext.
lReturn = SCardListReaders(hSC,
                           NULL,
                           (LPTSTR)&pmszReaders,
                           &cch );

[링크 : https://learn.microsoft.com/ko-kr/windows/win32/api/winscard/nf-winscard-scardlistreadersa]

'하드웨어 > rfid_nfc_smartcard' 카테고리의 다른 글

NDEF 데이터 읽기  (0) 2025.03.17
ntag 213, 215 그리고 13.25MHz CUID 카드  (0) 2025.03.17
NTAG  (0) 2025.03.12
NDEF 읽기  (0) 2025.03.11
mifare desfire 인증 프로세스  (0) 2025.03.11
Posted by 구차니
게임/ace combat2025. 3. 16. 16:58

무기 언락해보려고

두드려 맞을 각오로 f-16 끌고 가서 4등 달성 ㅋㅋ

 

다른 사람들은 다크스타에 X-02에 아주 난리 ㅋㅋㅋ

 

아무튼 1회 해서 멀티무기 언락!

싱글에서 벌어서 해도 되고 반대로 멀티해서 싱글 쪽 풀어도 되고(?)

'게임 > ace combat' 카테고리의 다른 글

잘가 ace combat 7  (0) 2025.04.30
ace combat 7 normal 난이도 끝  (0) 2025.04.06
ace combat 7 sp mission완료  (0) 2025.03.15
ace combat 7 - 미션 20, 엔딩  (0) 2025.03.11
ace combat 7 - 미션 19  (0) 2025.03.10
Posted by 구차니
게임/ace combat2025. 3. 15. 23:57

어우.. 마지막껀 템빨로 겨우 꺰

겁나 두드려 맞아도 50% 이하로 체력이 안 깍여서 SP 미션 깨는데 엄청 도움이 된다.

 

'게임 > ace combat' 카테고리의 다른 글

ace combat 7 normal 난이도 끝  (0) 2025.04.06
ace combat 7 멀티 플레이 첫 시도  (2) 2025.03.16
ace combat 7 - 미션 20, 엔딩  (0) 2025.03.11
ace combat 7 - 미션 19  (0) 2025.03.10
ace combat 7 F-22 구매!  (0) 2025.03.09
Posted by 구차니

어우 내일 또 한놈 또 밀어야.. ㅠㅠ

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

휴가  (0) 2025.03.24
오늘은 외식데이  (0) 2025.03.22
컴백  (0) 2025.03.02
피곤하다 -_ㅠ  (0) 2025.03.01
해운대  (0) 2025.02.16
Posted by 구차니

졸려!!

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

피곤한데 짜증까지  (0) 2025.04.03
3월 끝!  (0) 2025.03.31
아내몰래 지름 ㅋㅋ  (2) 2025.03.13
k-pass 다자녀 혜택 + 횟수 제한  (0) 2025.03.10
2 스택  (0) 2025.03.07
Posted by 구차니

RFID 종류별로 질러봄

NTAG는 몰라서 한번 사보는데 어디서 인식이 되려나..

 

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

3월 끝!  (0) 2025.03.31
low batt  (0) 2025.03.14
k-pass 다자녀 혜택 + 횟수 제한  (0) 2025.03.10
2 스택  (0) 2025.03.07
정신이 늙었어..  (2) 2025.02.20
Posted by 구차니

예전 작업을 다시 찾아보는데

워낙 자동화가 잘된녀석이라 slave 모드에서 외부에 read / write 명령을 추가로 처리할 방법을 찾고 있는데 영 안보여서 고민하다

소스뜯어보기로 결정!

 

rtu나 tcp에서 아래와 같이 modbus_new 명령을 통해 수행중에

backend에 기본적인 녀석들을 추가해주는데

modbus_t* modbus_new_rtu(const char *device,
int baud, char parity, int data_bit,
int stop_bit)
{
_modbus_init_common(ctx);
ctx->backend = &_modbus_rtu_backend;
ctx->backend_data = (modbus_rtu_t *)malloc(sizeof(modbus_rtu_t));
if (ctx->backend_data == NULL) {
modbus_free(ctx);
errno = ENOMEM;
return NULL;
}
ctx_rtu = (modbus_rtu_t *)ctx->backend_data;

 

해당 backend 구조체는 아래와 같이 여러개의 함수 포인터 들을 포함하고 있고

const modbus_backend_t _modbus_rtu_backend = {
_MODBUS_BACKEND_TYPE_RTU,
_MODBUS_RTU_HEADER_LENGTH,
_MODBUS_RTU_CHECKSUM_LENGTH,
MODBUS_RTU_MAX_ADU_LENGTH,
_modbus_set_slave,
_modbus_rtu_build_request_basis,
_modbus_rtu_build_response_basis,
_modbus_rtu_prepare_response_tid,
_modbus_rtu_send_msg_pre,
_modbus_rtu_send,
_modbus_rtu_receive,
_modbus_rtu_recv,
_modbus_rtu_check_integrity,
_modbus_rtu_pre_check_confirmation,
_modbus_rtu_connect,
_modbus_rtu_close,
_modbus_rtu_flush,
_modbus_rtu_select,
_modbus_rtu_free
};
const modbus_backend_t _modbus_tcp_backend = {
_MODBUS_BACKEND_TYPE_TCP,
_MODBUS_TCP_HEADER_LENGTH,
_MODBUS_TCP_CHECKSUM_LENGTH,
MODBUS_TCP_MAX_ADU_LENGTH,
_modbus_set_slave,
_modbus_tcp_build_request_basis,
_modbus_tcp_build_response_basis,
_modbus_tcp_prepare_response_tid,
_modbus_tcp_send_msg_pre,
_modbus_tcp_send,
_modbus_tcp_receive,
_modbus_tcp_recv,
_modbus_tcp_check_integrity,
_modbus_tcp_pre_check_confirmation,
_modbus_tcp_connect,
_modbus_tcp_close,
_modbus_tcp_flush,
_modbus_tcp_select,
_modbus_tcp_free
};

 

그중 하나 찍어서 보면 static 함수로 되어있다.

static ssize_t _modbus_rtu_send(modbus_t *ctx, const uint8_t *req, int req_length)

 

진짜로 전송하고 보내는 쪽이라 신경안써도 되려나?

'프로그램 사용 > libmodbus' 카테고리의 다른 글

mbpoll  (0) 2025.08.06
libmodbus pi 함수들  (0) 2022.05.10
libmodbus modbus_mapping_new()  (0) 2022.05.10
libmodbus poll 적용  (0) 2022.05.04
modbus tcp  (0) 2022.05.04
Posted by 구차니