информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в WindowsSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
очень странно 27.06.02 16:39  Число просмотров: 1011
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> command[0]=0xA0; // CLA
> command[1]=0xA4; // INS
> command[2]=0x00; // P1
> command[3]=0x00; // P2
> command[4]=0x02; // L
> command[5]=0x3F;
> command[6]=0x00;
> res=CT_data
> (ctn,&dad,&sad,7,command,&lenr,response);
>
>
> if( res==-1)fprintf(fil_out,"ERR_INVALID PARAMETR\n");
> else fprintf(fil_out,"res %d\n",res);
>
> for (i=0;i<7;i++){
> fprintf(fil_out,"response [ %d ] %c\n",i,response[i]);
> }
> После выбора MF у меня возвращаются в HEX вот такие числа
> 90, 00, 10, 88, 90, 00
> вот эти 10, 88 у меня находятся в ATR header.

Command code: A0 A4
Parameters: P1: 00 P2: 00 P3: 02
Command data: Directory/EF identifier
Response data: None
Return codes:
67 02 Wrong P3
6B 00 Wrong P1 or P2
94 04 Wrong identifier
9F xx Successful, xx = number of response data available for GET RESPONSE

Как видишь 90 00 в стандарте нет (gsm), и response data быть не должно. Если ты ничего не напутал - значит у тебя совершенно не gsm карта.
Попробуй ради прикола в ридер засунуть карточку от своего мобильника.

> sad=2;
> dad=00;
>
> command[0]=0xA0; // CLA
> command[1]=0xC0; // INS
> command[2]=0x00; // P1
> command[3]=0x00; // P2
> тогда какое число в ?
> command[4]=0x??; // L
> res=CT_data (ctn,&dad,&sad,5,command,&lenr,response);
> for (i=0;i<7;i++){
> fprintf(fil_out,"response [ %d ] %d\n",i,response[i]);
> }
> После get responce. responce мне ничего возвращает

Тады ой. Попробуй command[4]=0xff и посмотри, если вернет 67 xx, то xx и будет то что тебе надо.

Но это с 3f00, а на другие файлы ? Тебе же нужно было прочитать данные. Попробуй с другими файлами сделать чтение так как я в предыдущем ответе описал.
<programming>
[C++] CT-API и inter-industry Commands 24.06.02 04:18  
Автор: Full shrize Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Люди помогите любителю:-)
Выбирая файл на карте все нормально возвращает 90:00
Начинаю считывать на х.. ошибка CT-API 11(типа выделенный буфер слишком мал для читаемых данных) бл.. увеличиваю буфер он мне возвращает Err Parametr. Бл. какой буфер у меня карта(Сименс) на х.. позволяет читать файл целиком на х.. Если кто встречался с такой бородой помогите.
Каким API пользуешся ? 24.06.02 10:01  
Автор: PS <PS> Статус: Elderman
Отредактировано 24.06.02 10:27  Количество правок: 1
<"чистая" ссылка>
Какой ридер ? Пример программы можешь дать ?
И еще: почему у тебя select выдает 90 00 ? Такой код он не должен возвращать. При нормальном завершении операции он возвращает 9F xx.
[C++] Каким API пользуешся ? 25.06.02 04:15  
Автор: Full shrize Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Какой ридер ? Пример программы можешь дать ?
> И еще: почему у тебя select выдает 90 00 ? Такой код он не
> должен возвращать. При нормальном завершении операции он
> возвращает 9F xx.
1) Я извиняюсь да он возвращает 9F.:-)
2)ридер ECO5000 (ORGA).
синхронная передача
3)
sad=2;
dad=00;

fprintf(fil_out,"SELECT FILE\n");

command[0]=0x00; // CLA
command[1]=0xA4; // INS
command[2]=0x00; // P1
command[3]=0x00; // P2
command[4]=0x02; // L
command[5]=0x2F;
command[6]=0x00;
res=CT_data (ctn,&dad,&sad,7,command,&lenr,response);

if( res==-1)fprintf(fil_out,"ERR_INVALID PARAMETR\n");else fprintf (fil_out,"res %d\n",res);

for (i=0;i<lenr;i++){

fprintf(fil_out,"response [ %d ] %d\n",i,response[i]);
//if(response[lenr-1]==144) fprintf(fil_out,"function completed");;
}
//if(response[lenr-2]==144) fprintf(fil_out,"function completed\n");

fprintf(fil_out,"command[2] %d\n",command[2]);
fprintf(fil_out,"command[3] %d\n",command[3]);
fprintf(fil_out,"command[4] %d\n",command[4]);
fprintf(fil_out,"command[5] %d\n",command[5]);
fprintf(fil_out,"command[6] %d\n",command[6]);
fprintf(fil_out,"command[7] %d\n",command[7]);
fprintf(fil_out,"command[8] %d\n",command[8]);
fprintf(fil_out,"command[9] %d\n",command[9]);
fprintf(fil_out,"sad %d\n",sad);
fprintf(fil_out,"dad %d\n",dad);
fprintf(fil_out,"lenr %d\n",lenr);

fprintf(fil_out,"READ BINARY\n");

sad=2; /* source = host */
dad=00;

command[0]=0x00; // CLA
command[1]=0xB0; // INS
command[2]=0x00; // P1
command[3]=0x00; // P2
command[4]=0x00; // L
//command1[5]=0x00;
//command1[6]=0x00;


res=CT_data (ctn,&dad,&sad,5,command,&lenr,response);
Здесь вызываю CT_API.dll
Наскоко мне удалось найти то READ BINARY не читает МФ и Дир секции(но это у GSM)у карты нет никаких security. Вот и как прочитать эту Дир потому что мне кажется на этой карте до х.. апликаций:-) (карта -страховой полис)
Так 25.06.02 12:08  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> 2)ридер ECO5000 (ORGA).
Сочувствую.

> command[0]=0x00; // CLA
правильно A0
> command[1]=0xA4; // INS
> command[2]=0x00; // P1
> command[3]=0x00; // P2
> command[4]=0x02; // L
> command[5]=0x2F;
> command[6]=0x00;
Что за файл ?
> command[0]=0x00; // CLA
A0
> command[1]=0xB0; // INS
> command[2]=0x00; // P1
> command[3]=0x00; // P2
> command[4]=0x00; // L
тут длинна
> //command1[5]=0x00;
> //command1[6]=0x00;
Эти два нафиг не нужны.

> Наскоко мне удалось найти то READ BINARY не читает МФ и Дир
> секции(но это у GSM)
Не читает, только двоичные файлы. Для MF используй READ RECORD.
Какой именно файл - GET RESPONSE после SELECT. Там же и длинна доступная для чтения.
Прочесть дирестории нельзя. Узнать файлы в директории - можно, но комманда специфична для каждого производителя. Либо полным перебором.
Еще один Так 26.06.02 09:11  
Автор: Full shrize Статус: Незарегистрированный пользователь
<"чистая" ссылка>
fprintf(fil_out,"GET RESPONCE\n");

sad=2; /* source = host */
dad=00;

command[0]=0x00; // CLA
или опять A0
command[1]=0xC0; // INS
command[2]=0x00; // P1
command[3]=0x00; // P2
command[4]=0x10; // L
res=CT_data (ctn,&dad,&sad,5,command,&lenr,response);
после этого в lenr будет хранится длина файла?

fprintf(fil_out,"READ RECORD\n");

sad=2; /* source = host */
dad=00;

command[0]=0xA0; // CLA
command[1]=0xB2; // INS
command[2]=0x00; // P1
command[3]=0x00; // P2
command[4]=lenr; // L
res=CT_data (ctn,&dad,&sad,5,command,&lenr,response);
тут вопрос на счет длины у меня карта считывает все сразу, не указывая длины поэтому command[4] должен быть равен Empty?
Не так :) 26.06.02 10:20  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Не так.
SELECT
Получаешь 9F XX
command[0]=0xA0; // CLA
command[1]=0xC0; // INS
command[2]=0x00; // P1
command[3]=0x00; // P2
command[4]=0xXX; // L

> res=CT_data (ctn,&dad,&sad,5,command,&lenr,response);
> после этого в lenr будет хранится длина файла?
НЕТ, в len будет ко-во байт в response
Далее расскладываешь этот response по полочкам. Его формат можно найти в спецификации.
Выгребаешь из него тип файла и количество байт доступных для чтения.
И после этого делаешь либо READ BINARY, либо READ RECORD.
Но можно сделать и более криво. Для чтения в P3 засунуть FF. Тогда тебе вернется 67 YY, где YY то количество байт которое карточка от тебя ждала.


> тут вопрос на счет длины у меня карта считывает все сразу,
> не указывая длины поэтому command[4] должен быть равен
> Empty?
Не встречались такие карточки. По идее рекорд файлы можно читать только по одному рекорду. Бинарники - тем количеством, которое карточка может вернуть за раз.
В любом случае - более чем 256 байт за раз ты не прочтешь ;)
Ну а если карточка действительно позволяет прочесть сразу все, неограниченного размера - тут надо смотреть спецификацию именно к этой карте.
Совет, не лезь пока в специфик, пользуйся стандартом. Читай по столько, по сколько тебя просят в респонсе или во втором байте ошибки 67.

Перебором - это почти шутка. Тебе нужно перебрать имена файлов от 0000 до FFFF, исключив жестко заданные в стандартах, и сделать на каждый SELECT. Причем все это сделать для каждой директории. Только карточка у тебя не третий пень, да и ридер - вещь тормозная.
походу что-то не так:-) 27.06.02 05:10  
Автор: Full shrize Статус: Незарегистрированный пользователь
<"чистая" ссылка>
command[0]=0xA0; // CLA
command[1]=0xA4; // INS
command[2]=0x00; // P1
command[3]=0x00; // P2
command[4]=0x02; // L
command[5]=0x3F;
command[6]=0x00;
res=CT_data (ctn,&dad,&sad,7,command,&lenr,response);


if( res==-1)fprintf(fil_out,"ERR_INVALID PARAMETR\n");
else fprintf(fil_out,"res %d\n",res);

for (i=0;i<7;i++){
fprintf(fil_out,"response [ %d ] %c\n",i,response[i]);
}
После выбора MF у меня возвращаются в HEX вот такие числа 90, 00, 10, 88, 90, 00
вот эти 10, 88 у меня находятся в ATR header.

sad=2;
dad=00;

command[0]=0xA0; // CLA
command[1]=0xC0; // INS
command[2]=0x00; // P1
command[3]=0x00; // P2
тогда какое число в ?
command[4]=0x??; // L
res=CT_data (ctn,&dad,&sad,5,command,&lenr,response);
for (i=0;i<7;i++){
fprintf(fil_out,"response [ %d ] %d\n",i,response[i]);
}
После get responce. responce мне ничего возвращает
очень странно 27.06.02 16:39  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> command[0]=0xA0; // CLA
> command[1]=0xA4; // INS
> command[2]=0x00; // P1
> command[3]=0x00; // P2
> command[4]=0x02; // L
> command[5]=0x3F;
> command[6]=0x00;
> res=CT_data
> (ctn,&dad,&sad,7,command,&lenr,response);
>
>
> if( res==-1)fprintf(fil_out,"ERR_INVALID PARAMETR\n");
> else fprintf(fil_out,"res %d\n",res);
>
> for (i=0;i<7;i++){
> fprintf(fil_out,"response [ %d ] %c\n",i,response[i]);
> }
> После выбора MF у меня возвращаются в HEX вот такие числа
> 90, 00, 10, 88, 90, 00
> вот эти 10, 88 у меня находятся в ATR header.

Command code: A0 A4
Parameters: P1: 00 P2: 00 P3: 02
Command data: Directory/EF identifier
Response data: None
Return codes:
67 02 Wrong P3
6B 00 Wrong P1 or P2
94 04 Wrong identifier
9F xx Successful, xx = number of response data available for GET RESPONSE

Как видишь 90 00 в стандарте нет (gsm), и response data быть не должно. Если ты ничего не напутал - значит у тебя совершенно не gsm карта.
Попробуй ради прикола в ридер засунуть карточку от своего мобильника.

> sad=2;
> dad=00;
>
> command[0]=0xA0; // CLA
> command[1]=0xC0; // INS
> command[2]=0x00; // P1
> command[3]=0x00; // P2
> тогда какое число в ?
> command[4]=0x??; // L
> res=CT_data (ctn,&dad,&sad,5,command,&lenr,response);
> for (i=0;i<7;i++){
> fprintf(fil_out,"response [ %d ] %d\n",i,response[i]);
> }
> После get responce. responce мне ничего возвращает

Тады ой. Попробуй command[4]=0xff и посмотри, если вернет 67 xx, то xx и будет то что тебе надо.

Но это с 3f00, а на другие файлы ? Тебе же нужно было прочитать данные. Попробуй с другими файлами сделать чтение так как я в предыдущем ответе описал.
А тут просто возникло не допонимание 28.06.02 04:06  
Автор: Full shrize Статус: Незарегистрированный пользователь
<"чистая" ссылка>
А тут просто возникло не допонимание, карта то не мобильника, простая карта Сименс, там хранятся данные толи пациентов толи еще кого-то. Так что я делаю все чисто по IS0-7816. :-)
по ИСО 7816-4 если 9000 то комманда успешна.
Вот еще здесь что-то я не врубился, тут в ИСО для переключения передачи от карты к ридеру нуно сбросить карту, А какой командой?:-)
Так 26.06.02 08:49  
Автор: Full shrize Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Прочесть дирестории нельзя. Узнать файлы в директории -
> можно, но комманда специфична для каждого производителя.
> Либо полным перебором.
Ух ты, а как это перебором?
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach