Выбрать главу
СРАВНЕНИЕ КАРТ

Поскольку магнитная технология допускает практически неограниченные возможности стирания информации (штатного или нештатного), а также многократную запись, то важно иметь возможность проверять, не изменилось ли содержимое той или иной дорожки.

Это очень просто сделать путем архивирования файла .CAR — того, который послужил для кодирования карты (мы еще к этому вернемся), либо того, который был создан при «реперном» считывании.

Программа VERMAG.BAS позволяет сравнить не две карты, а два файла .CAR — старый и новый. Каждый идентичный бит обозначается тире, а каждый отличающийся — звездочкой, что сразу дает представление о масштабе возможного несоответствия. Нули запуска и заполнения, как известно, представляются в сокращенном виде, поскольку они исключены из процесса проверки. Их число может несколько изменяться от одного до другого считывания той же самой карты.

10 REM — VERMAG.BAS —

20 KEY OFF: CLS

30 PRINT "имя файла, подлежащего проверке";

40 INPUT N$: IF N$ = "" THEN END

50 FOR F=1 TO LEN (N$)

60 IF MID$ (N$,F,1) = "." THEN 90

70 NEXT F

80 N$=N$+".CAR"

90 OPEN N$ FOR INPUT AS #1

100 PRINT: PRINT "имя эталонного файла";

110 INPUT N$: IF N$="" THEN END

120 FOR F=1 TO LEN(N$)

130 IF MID$ (N$,F,1)="." THEN 160

140 NEXT F

150 N$=N$+".CAR"

160 OPEN N$ FOR INPUT AS #2

170 CLS: PRINT "идет проверка…"

180 DIM A(LOF(1)): DIM B(LOF<2))

190 F=0: WHILE NOT EOF(1)

200 INPUT#1, A (F); F=F+1: WEND

210 M=F

220 F=0: WHILE NOT EOF(2)

230 INPUT#2,B(F): F=F+1: WEND

240 N=F

250 X=0

260 IF A(X) =1 THEN 280

270 X=X+1: GOTO 260

280 Y=0

290 IF В (Y) = 1 THEN 310

300 Y = Y+1: GOTO 290

310 CLS: PRINT "0…….0";: E=0

320 IF A(X) =B(Y) THEN PRINT "-"; ELSE PRINT "*";: E=1

330 IF X=M THEN 360 ELSE X=X+1

340 IF Y=N THEN 360 ELSE Y=Y+1

350 GOTO 320

360 PRINT" 0 0": PRINT: PRINT: PRINT "Файл"

370 IF E=0 THEN PRINT "соответствует!": PRINT: PRINT: END

380 PRINT "не соответствует!": PRINT: PRINT: BEEP: END

390 REM COPYRIGHT (c)1996 Patrick GUEULLE

Ниже представлен результат, полученный при сравнении явно различных файлов TEST5.CAR И TEST7.CAR.

Теперь покажем результат, полученный при сравнении двух идентичных файлов. В обоих случаях отчет обязательно появляется по окончании выполнения программы.

4. Копирование, кодирование, стирание

В этой главе мы затронем тему, которую некоторые считают запретной. Общеизвестно, что магнитные карты по своей природе — носители информации с совершенно свободным доступом для считывания и записи. Предполагается, что устройства кодирования не должны оказаться в руках любого желающего, но, несмотря на это, мы собираемся рассказать, как построить их наипростейшим способом.

Естественно, мы позволили себе заняться этой темой только после того, как убедились, что подобное действие не потребует доступа к конфиденциальной информации или использования компонентов, запрещенных к продаже или хранению.

В конце концов, мы уже поступали так несколько лет назад, когда взялись обучить наших читателей считывать и записывать информацию на чип-карты.

С другой стороны, мы решительно не можем согласиться, что так называемые важные приложения настолько уязвимы, что любой дилетант способен взломать их с помощью простой магнитофонной головки, подключенной к ПК. Если бы это было так, все секреты уже давно стали бы общим достоянием.

ДОЛЖЕН ЛИ КОДЕР БЫТЬ ОБЯЗАТЕЛЬНО АВТОМАТИЗИРОВАННЫМ?

Хотя это мнение широко распространено (и не без оснований), ответ на него отрицательный. В самом деле, на рынке встречаются считывающие и записывающие устройства (кодеры), работающие при проведении карты вручную. При этом в них используются некоторые технические хитрости, которыми не запрещено воспользоваться и нам.

Автоматизированная версия, бесспорно, имеет то преимущество, что обеспечивает постоянную и точную скорость прохождения карты перед записывающей головкой. Однако можно получить сравнимый результат и при помощи простого датчика, способного постоянно улавливать точное положение карты.

Если только в кодирующих схемах будет использован весь этот опыт, то запись, осуществленная вручную, окажется так же стабильна, как и в автоматизированном варианте. Рискуя вызвать гнев специалистов, мы все-таки зададимся вопросом: «А так ли уж необходимо стабильное кодирование?»

И снова ответом будет категорическое «нет» — по крайней мере, для наиболее распространенного случая, когда карта предназначена для считывания в ручном считывающем устройстве.

Ручные считывающие устройства, начиная с описанных в главе 3, настолько «терпимы» к скорости прохождения карт и ее изменениям, что без проблем воспринимают карты, стабильность параметров кодирования которых катастрофична.

Как ни странно, это распространяется и на значительное число автоматизированных считывающих устройств просто потому, что они часто построены на тех же самых схемах декодирования, что и ручные! Как говорится, кто может больше, тот может и меньше; кстати, такой метод работы повышает надежность и экономит средства. Так зачем от него отказываться?

Единственное настоящее неудобство такого подхода заключается в невозможности автоматического отсеивания подозрительных карт или, наоборот, появляется возможность отсеивания и некоторого числа вполне нормальных карт со всем вытекающим отсюда недовольством пользователей.

В качестве резюме можно сказать, что применение для кодирования той же самой простейшей механики, что и для считывания, допустимо только в теории, но никак не на практике.

ТРАНСФОРМАЦИЯ СЧИТЫВАЮЩЕГО УСТРОЙСТВА В КОДЕР

Несмотря на все вышесказанное, не стоит и мечтать напрямую использовать для кодирования устройство, которое уже послужило нам для считывания.

Этого не следует делать по той простой причине, что для считывания мы применяли головку от кассетного магнитофона, воздушный зазор которой едва покрывает половину ширины дорожки.

Без сомнения, удобно иметь одновременно головки для считывания и для записи. Поэтому лучше остановиться на решении, состоящем в добавлении записывающей головки к уже существующему считывающему устройству.