Comunicatia se realizeaza pe portul parelel , nu stiu daca fac
 bine dar atasez mail-ului si diagramele cititoarelor ( 2 la numar)
Sper sa va folosesca.


----- Original Message -----
From: "Marius Stan" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, February 17, 2003 10:28 AM
Subject: [rlug] Re: Autentificare cu cartele telefonice consumate


> Salut,
>
> Cred ca cel mai simplu ar fi cu niste Perl-uri si mysql.
> Practic ai nevoie doar de 2 queryuri pt a marca o logare.
> Tii in baza toate corespondentele ID->utilizator, datele cind s-a logat
etc.
> Avantajul ar fi ca e scalabil si eventual poti crea si o interfata web la
> baza aia de date.
> Asta daca poti citi din Perl cartela. Cum se face comunicatia cu cititorul
> de cartele ?
>
> Marius
>
>
> ----- Original Message -----
> From: "Abibula Aygun" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, February 17, 2003 10:12 AM
> Subject: [rlug] Autentificare cu cartele telefonice consumate
>
>
> >
> > Salutare tuturor. Va doresc o saptamina cit se poate de placuta si
usoara
> .
> >
> > Am o mica intrebare , dar inainte de toate sa va explic ce trebuie sa
fac.
> > Trebuie sa fac un dispozitiv care sa asigure accesul intr-o anumita zona
> > pe baza unei autentificari , de preferat cu cartele telofonice
consumate.
> > Am gasit schema cititorului de cartela , dar ma intereseaza si un
program
> > ( bineinteles sub Linux ) cu care sa  efectuez administrarea
respectivului
> > punct.Programul ar trebui sa imi execute ceva de genul :
> >
> > - memorare ID cartela ( fiecare cartela are un ID unic scris de
> producator)
> > - atribuie fiecarui ID cartela un ID de utilizator (introdus de
> Administrator)
> > - sa execute automat rutina de citire si autentificare a utilizatorului
> > - sa creeze un log ( de cite ori si la ce ore a trecut utilizatorul prin
> > respectivul punct )
> >
> >
> > Intrebarea ar fi urmatoarea :
> >
> > Cunosteti un asemnea program ( de Linux ) care sa execute acest lucru?
> >
> > Daca a mai facut cineva asa ceva il rog sa imi trimita mail pe privat .
> >
> > Va multumesc anticipat
> >
> > Cu respect
> >
> > Abibula Aygun
> >
> > PS : In cazul in care  cunosteti alte soft-uri , pentru alte platforme ,
> va rog sa imi scrieti
> > de unde anume sa le iau .( un URL  sau o adresa ) dar de preferat ar fi
> Linux , motivul?
> > unul singur , detin o duzina de 486 care ar face treaba buna in acest
> context.
> >
> > Va rog ajutati-ma
> >
> > --
> > Pentru dezabonare, trimiteti mail la
> > [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
> > REGULI, arhive si alte informatii: http://www.lug.ro/mlist/
> >
> >
> >
>
> --
> Pentru dezabonare, trimiteti mail la
> [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
> REGULI, arhive si alte informatii: http://www.lug.ro/mlist/
>
>


-- HTML Attachment decoded to text by Listar --
-- File: telecard.htm

 Re-Load TeleCard

Jak si naplnit telefoni kartu

----------------------------------------------------------------------------
Index 
  * I) The cards from Gemplus, Solaic, Schlumberger, Oberthur: 
      * I-1) Introduction: 
      * I-2) SCHEMATICS of the chip: 
      * I-3) PINOUT of the connector: 
      * I-4) Main features: 
      * I-5) TIME DIAGRAMS: 
      * I-6) Memory MAP of cards from France and Monaco: 
      * I-5) Memory MAP of cards from other countries: 
  
  
  
  * II) The cards from ODS: (German cards) 
      * II-1) Introduction: 
      * II-2) Pinout: 
      * II-3) Main features: 
      * II-4) Time Diagrams: 
      * II-5) Memory Map: 
      * II-6) Electrical features: 
  
  
  
  * III) Schematics of Readers: 
      * III-1) Reader 1: 
      * III-2) Reader 2: 
  
  
  
  * IV) The program: 

----------------------------------------------------------------------------
I ) The cards from Gemplus, Solaic, Schlumberger, Oberthur 

I-1) Introduction: Since the middle of 80's have appeared a new generation
ofcards ( the smart-cards or chip cards ) that have replaced most of the
magnetics cards applications notably for telecom payement and also for
creditcards. These cards are far more secure than the magnetics cards, and
there are several kind of cards following the application. The simplier ones
are the Simple Memory cards like the one used as Telecard for the telecom
payement in the public phone-booths ( Generaly all the memory content is
readable, and there is a maker-area that is unwritable ) , then there are
more sofisticated cards: Memeory Cards with some area read protected by a
key, these cards can contain some private informations in the read-protected
area. At the end there are microprocessor-cards (cards working following the
ISO-7816 protocol), that are the safiest ones since these cards have their
own internal Operating System that prevent I/O if the Pin code has not been
entered in the cards before ( These cards are used when confidentiality is
needed, like in bank cards, crypted TV access cards, health cards, etc ...
).About telecards, even if these cards are the less safe ones, don't think
that you are going to phone freely for that, in fact no. All the data are
readable since there are no confidential data inside, the the cards are well
done enough to be very secure for the payement of telecom communications in
public booth. So, what is a phonecard exactly ? In fact generaly it's a 256
bits EPROM ( French likde cards ), or a 128 bits EEPROM (German like cards)
with a serial output and some other control pins. Then why can it not be
refilled ? Well, indeed to refill the card you will have to erase the cards
with UV, knowing that the cards is coated in UV opaqued resin that prevent
UVfrom reaching the silicium chip, and even if you could to erase the chip
you will have to program the manufactuer area that is write-protected by a
lock-out fuse that was fused after the card programming in factory.
Neithertheless it can be very interesting to study how these cards work, to
see which kind of data are inside and how the data are maped inside or to
seehow many units are left inside for exemple. Besides there are a great
number of applications of these cards when there are used (only for personal
use of course) , since you can use them as key to open a door, or you can
also use them as key to secure a program, etc .... French Telecards have
beencreated in 1984 and at this time constructors decided to build these
cards in NMOS technology but now, they plan to change by 1994 all readers in
the public booths and use CMOS technology. Also they plan to use EEPROM to
secure the cards and to add many usefull infornations in, and you will
perhaps use phone cards to buy you bread or any thing else. These cards are
called Second Generation Telecards. I-2) SCHEMATICS of the chip:
---------------------- .-------------------. | | --|> Clk | | _ | --| R/W |
|| --| Reset | | | --| Fuse | | | --| Vpp | | | | | '-. .-' | |
.-------------------. | Out |-- serial output '-------------------' I-3)
PINOUT of the connector: ------------------------- AFNOR CHIP ISO CHIP
---------- -------- -------------+------------- -------------+-------------
|8 | 4 | | 1 | 5 | | | | | | | +-------\ | /-------+ +-------\ | /-------+ |
7 +----+----+ 3 | | 2 +----+ + 6 | | | | | | | | | +--------| |--------+
+--------| |--------+ | 6 | | 2 | | 3 | | 7 | | + +----+ | | +----+----+ |
+-------/ | \-------+ +-------/ | \-------+ | 5 | 1 | | 4 | 8 | | | | | | |
-------------+------------- -------------+------------- NB: only the
positionof the chip is ISO standardized and not the pinout PINOUT: 1 : Vcc =
5V 5 : Gnd ------ 2 : R/W 6 : Vpp = 21V 3 : Clock 7 : I/O 4 : Reset 8 : Fuse
I-4) Main features: --------------- - Synchronous protocol. - N-MOS
technology. - 256x1 bit organisation. - 96 written protected by a lock-out
fuse. - Low power 85mW in read mode. - 21 V programming voltage. - Access
time: 500ns - Operating range: -100C +700C - Ten year data rentention. I-5)
TIME DIAGRAMS: --------------- +21V _____________ +5V
____________________________________| |_________________ Vpp : : +5V
___________________:_____________:_________________ Reset 0V
________________| : : : : : +5V ____ : ____ : ______:______ 0V ___|
|_______:_____| |________:______| : |__________ Clock : : : : : : : : : +5V
:: : : : :______:______: : _ 0V ___:____:_______:_____:____:________| :
|______:__________ R/W : : : : : : : : : +5V : : :_____: :________: : :
:__________ 0V
XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out : :
: : : :: : : : : : : :10 to 10 to : : : : : : :50 ms 50ms : Reset Bit 1 Bit2
Bit 3 card reading reading Bit2 writing to 1 reading I-6) MEMORY MAP of
cardsfrom France and Monaco: --------------------------------------------
Bytes Bits Binary Hexa +-----------+-----+ 1 1 --> 8 | | | ---> Builder
code.+-----------+-----+ 2 9 --> 16 | 0000 0011 | $03 | ---> a french
telecard +-----------+-----+ 3 17 --> 24 | | | +-----------+-----+ 4 25 -->
32 | | | +-----------+-----+ 5 33 --> 40 | | | +-----------+-----+ 6 41 -->
48 | | | +-----------+-----+ 7 49 --> 56 | | | +-----------+-----+ 8 57 -->
64 | | | +-----------+-----+ 9 65 --> 72 | | | +-----------+-----+ 10 73 -->
80 | | | +-----------+-----+ 11 81 --> 88 | | | +-----------+-----+ 12 33
-->40 | 0001 0011 | $13 | ---> 120 units card | 0000 0110 | $06 | ---> 50
units card | 0000 0101 | $05 | ---> 40 units card +-----------+-----+ 13-31
97 --> 248 | | | ---> The units area: each time a unit | | | is used, then a
bit is set to "1"; | | | Generaly the first ten units are | | | fused in
factory as test. | | | | | | | | | +-----------+-----+ 32 249 --> 256 | 1111
1111 | $FF | ---> the card is empty +-----------+-----+ I-7) MEMORY MAP of
the other cards: ------------------------------- Bytes Bits Binary Hexa
+-----------+-----+ 1 1 --> 8 | | | +-----------+-----+ 2 9 --> 16 | 1000
0011 | $83 | ---> a telecard +-----------+-----+-----------+-----+ 3-4 17
-->32 | 1000 0000 | $80 | 0001 0010 | $12 | ---> 10 units card | | | 0010
0100 | $24 | ---> 22 units card | | | 0010 0111 | $27 | ---> 25 units card |
| | 0011 0010 | $32 | ---> 30 units card | | | 0101 0010 | $52 | ---> 50
units card | | | 0110 0010 | $62 | ---> 60 units card | | | 1000 0010 | $82
|---> 80 units card | 1000 0001 | $81 | 0000 0010 | $02 | ---> 100 untis
card| | | 0010 0010 | $22 | ---> 120 units card | | | 0101 0010 | $52 | --->
150 units card +-----------+-----+-----------+-----+ 5 33 --> 40 | | | --->
$00 for sweden. +-----------+-----+ 6 41 --> 48 | | | +-----------+-----+ 7
49 --> 56 | | | +-----------+-----+ 8 57 --> 64 | | | +-----------+-----+ 9
65 --> 72 | | | +-----------+-----+ 10 73 --> 80 | | | +-----------+-----+
1181 --> 88 | | | ---> $11 for sweden +-----------+-----+ 12 89 --> 96 |
00011110 | $1E | ---> Sweden | 0010 0010 | $22 | ---> Spain | 0011 0000 |
$30| ---> Norway | 0011 0011 | $33 | ---> Andorra | 0011 1100 | $3C | --->
Ireland | 0100 0111 | $47 | ---> Portugal | 0101 0101 | $55 | ---> Czech
Republic | 0101 1111 | $5F | ---> Gabon | 0110 0101 | $65 | ---> Finland
+-----------+-----+ 13-31 97 --> 248 | | | ---> The units area: each time a
unit | | | is used, then a bit is set to "1"; | | | | | | Generaly the first
two units are | | | fused in factory as test. | | | | | |
+-----------+-----+32 249 --> 256 | 0000 0000 | $00 | +-----------+-----+ II
) The cards from ODS, Giesecke & Devrient, ORGA Karten systeme, Uniqua,
Gemplus, Schlumberger and Oldenbourg Kartensysteme: 

II-1) Introduction: ------------ These cards are in fact 128 bit memory in
NMOS technology, and the map of these cards are the following: 64 bit EPROM
written protected (manufaturer area). 40 bit EEPROM (5x8 bits). 24 bits set
to "1". II-2) Pinout: -------- ISO 7816-2 -------------+------------- | 1 |
5| Pinout: | | | ------- +-------\ | /-------+ | 2 +----+ + 6 | 1 : Vcc = 5V
5 : Gnd | | | | 2 : Reset 6 : n.c. +--------| |--------+ 3 : Clock 7 : I/O |
3 | | 7 | 4 : n.c. 8 : n.c. | +----+----+ | +-------/ | \-------+ n.c. : not
connected | 4 | 8 | | | | -------------+------------- II-3) Main features:
--------------- - ISO 7816- 1/2 compatible. - use a single 5V power supply.
-low power consuption. - NMOS technology. II-4) Time Diagrams:
---------------- Reset: ------ The address counter is reset to 0 when the
clock line CLK is raised while the control line R is high. Note that the
address counter can not be reset when it is in the range 0 to 7.
__________________ _____| |_____________________________________________
Reset : : : _____ : _____ _____ _____ _____ _____:_______| |____:_| |_____|
|_____| |_____| |_ Clk : : : : : : : : : : :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____:_____:_
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3_____|___4_:_
(Address) : : : : : : : _____:_______
____:_______:___________:___________:___________:_ _____: |_____|
:_______|___________|___________|___________|_ Data Bit n Bit 0 Bit 1 Bit2
Bit3 The address counter is incremented by 1 with each rising edge of the
clock signal Clk, for as long as the control line R remains low. The data
held in each addressed bit is output to I/O contact each time Clk falls. It
is not impossible to decrement the address counter, therefore to address an
earlier bit, the address counter must be reset then incremented to require
value. Write: ------ All unwritten or erased bits in the address 64-104 may
be unwritten to. When a memory cell is unwritten to, it is set to 0. The
addressed cell is unwritten to by the following sequence. 1- R is raised
while Clk is low, to disable address counter increment for one clock pulse.
2- Clk is then raised for a minimum of 10ms to write to the address bit.
Whento write operation ends, and Clk falls, the address counter is unlocked,
and the content of the written cell, which is now 0, is output to I/O
contactif the operation is correct. The next Clk pulse will increment the
address by one, then the write sequence can be repeated to write the next
bit. _____ _____ _____________| |______________________________|
|_______________ Reset : : ___ : _____ ___ : _____ ____| |____:__________|
|_________| |_____:__________| |____ Clk : : : : : : : : :
____:________:__________:_____:_________:___:_____:__________:_____:_____ n
|n+1 | n+2 | : n+3 | : (Addre
----'--------:----------'-----:---------'---:-----:----------'-----:----- :
:: : : : : ________ ____:_____ __________:_____________:_____:_____
__________:____ ________|____| |__________|_____________|_____|
|__________|____ I/O n n+1 : : n+1 n+2 : : : : : : write write WriteCarry:
----------- A counter is erased by performing the WRITECARRY sequence on the
stage of the next highest weighing to that to be erased. The writecarry
sequence is as follows: 1 - Set the address counter to an unwritten bit in
the next highest counter stage to that to be erased. 2 - Increment is
disabled on the following rising edge of R where Clk remains low. 3 - Clk is
then raised for a minimum of 10ms, while R is low, to write to the next
address bit. 4 - R is the raised again while Clk remains low to disable
increment a second time. 5 - Clk is the raised for a minimum of 1ms, while R
is low, to write to the addressed bit a second time, erasing the counter
level immediately below that the addressed bit. _____ _____ ______|
|____________________| |_________________________________ Rst : : : _______
:_______ ___ ______:___________| |______:_____________| |______| |______ Clk
: : : : : : : : : : : : : : : : : 8 | | | +-----------+-----+ 2 9 --> 16 |
0010 1111 | $2F | ---> Germany | 0011 0111 | $37 | ---> Netherland | 0011
1011 | $3B | ---> Greece +-----------+-----+ 3 17 --> 24 | | | 4 25 --> 32 |
| | ---> Issuer area (written protected) 5 33 --> 40 | | | 6 41 --> 48 | | |
7 49 --> 56 | | | 8 57 --> 64 | | | +-----------+-----+ 9 65 --> 72 | | |
---> c4096 ) 10 73 --> 80 | | | ---> c512 ) 11 81 --> 88 | | | ---> c64 ) 5
stage octal counter 12 89 --> 96 | | | ---> c8 ) 13 97 --> 104 | | | ---> c0
) +-----------+-----+ 14 105 --> 112 | 1111 1111 | $FF | 15 113 --> 120 |
1111 1111 | $FF | ---> area of bits set to "1" 16 120 --> 128 | 1111 1111 |
$FF | +-----------+-----+ The Issuer area: ---------------- This issuer
consists of 40 bits. The contents of the issuer area are specified by the
card issuer, and are fixed during the manufacturing process. The contents of
the issuer area will include data such as serial numbers, dates, and
distribution centers. This area may only be read. The Counter area:
----------------- The counter area stores the card's units. Its initial
valueis specified by the card issuer and set during manufacturing. The
counter area is divided into a 5 stage abacus. The octal value of each stage
is defined by the number of bits set to '1' and this stage value must be
weighted by the coeficient 8^n ( where n is among [4..0] ). Exemple: For a
card with 15818 units (or money units) left. -------- Byte9 Byte10 Byte11
Byte12 Byte13 --------------------------------------------------------------
00000111 - 00111111 - 01111111 - 00000001 - 00000011
-------------------------------------------------------------- (3)octal
(6)octal (7)octal (1)octal (2)octal
-------------------------------------------------------------- Value = 3*8^4
+ 6*8^3 + 7*8^2 + 1*8^1 + 2*8^
-------------------------------------------------------------- TOTAL = 15818
Units Note that you can only decrease the counter and it is not authorised
towrite in the counter a value greater than the old value. I-6) Electrical
features: -------------------- Maximum ratings: ----------------
+--------+------+------+------+ | Symbol | Min | Max | Unit |
+----------------------+--------+------+------+------+ | Supply voltage |
Vcc| -0.3 | 6 | V | +----------------------+--------+------+------+------+ |
Input voltage | Vss | -0.3 | 6 | V |
+----------------------+--------+------+------+------+ | Storage temperature
| Tstg | -20 | +55 | 0C |
+----------------------+--------+------+------+------+ | Power dissipassion
|Pd | - | 50 | mW | +----------------------+--------+------+------+------+
DCcaracteristics: ------------------ +--------+-----+-----+-----+------+ |
Symbol | Min.| Typ.| Max.| Unit |
+---------------------------+--------+-----+-----+-----+------+ | Suplly
current | Icc | - | - | 5 | mA |
+---------------------------+--------+-----+-----+-----+------+ | Input
Voltage (low) | Vl | 0 | - | 0.8 | V |
+---------------------------+--------+-----+-----+-----+------+ | Input
voltage (high) | Vh | 3.5 | - | Vcc | V |
+---------------------------+--------+-----+-----+-----+------+ | Input
current R | Ih | - | - | 100 | uA |
+---------------------------+--------+-----+-----+-----+------+ | Input
current Clk | Il | - | - | 100 | uA |
+---------------------------+--------+-----+-----+-----+------+ | Output
current (Vol=0.5V) | Iol | - | - | 10 | uA |
+---------------------------+--------+-----+-----+-----+------+ | Output
current (Voh=5V) | Ioh | - | - | 0.5 | mA |
+---------------------------+--------+-----+-----+-----+------+ AC
caracteristics: ------------------ +--------+------+------+------+ | Symbol
|Min. | Max. | Unit | +----------------------+--------+------+------+------+
| Pulse duration | tr | 50 | - | us | | R address reset | | | | |
+----------------------+--------+------+------+------+ | Pulse duration | ts
| 10 | - | us | | R write | | | | |
+----------------------+--------+------+------+------+ | High level Clk | th
| 8 | - | us | +----------------------+--------+------+------+------+ | Low
level Clk | tl | 12 | - | us |
+----------------------+--------+------+------+------+ | Write window |
Twrite | 10 | - | ms |
+----------------------+--------+------+------+------+| Erase window |
Terase| 10 | - | ms | +----------------------+--------+------+------+------+
| | tv1 | 5 | - | us |
+----------------------+--------+------+------+------+| | tv2 | 3.5 | - | us
| +----------------------+--------+------+------+------+ | | tv3 | 3.5 | - |
us | +----------------------+--------+------+------+------+ | | tv4 | 3.5 |
-| us | +----------------------+--------+------+------+------+ | | tv5 | 3.5
| - | us | +----------------------+--------+------+------+------+ | | tv6 |
5| - | us | +----------------------+--------+------+------+------+ | | tv7 |
5 | - | us | +----------------------+--------+------+------+------+ | | tv8
|10 | - | us | +----------------------+--------+------+------+------+ III)
Schematics of Readers: 

III-1) Reader 1: ---------- External 5V (Optional) 5V o------, | / T2 PNP
d13r7 10 0V o--, | / BC 177 |\ | _____ | | ,-------o/ o--*------. E C .--|
>+-[_____]--------, __+__ | | | \ / |/ | | \\\\\ | __|__ Batery | \ / | | -
22.5V | --------- | ....... | | | _____ | _____ | : | __+__
+--[_____]--*--[_____]--, | D2 : | \\\\\ r6 150k r5 15k | | 4
o-------|---------------------------*------------------|-------------, | : |
| r3 220k / C | | Ack : | | _____ |/ T1 - NPN | | 10 o------|--------.
'--[_____]-*---| BC107 | | : | | _____ | |\ | | : ,-, ,-, +--[_____]-' \ E |
| : | |r2 | |r1 | r4 390k | | | : | |220 | |22k __+__ __+__ | | : |_| |_|
\\\\\ \\\\\ | | : | |\ | | | | : *--|
>+--|----------------*----------------------------------|--* : | |/ | |
,-----|-----------------------------, | | : | d1 | | |
,----------,----------, | | | : | | | *---|--* Fuse | Reset *--|---' | | : |
| | | |----------|----------| | | D0 : | | | ,-|---|--* I/O | Clk *--|---, |
| 2 o-------|--------|----------' | | |----------|----------| | | | : | | |
'---|--* Vpp | R/W *--|---|----' | Busy : | | | |----------|----------| | |
11 o------|--------|--------------' ,---|--* Gnd | 5V * | | | : | | |
'----------'-------|--' | | D1 : | | __+__ Chip connector | | | 3
o-------|--------|--------, \\\\\ | | | : | |
'------------------------------|------' | Str : | |\ | | | | 1 o-------*--|
>+--*----*----*----*----*-------------------' | : d2|/ | |d3 |d4 |d5 |d6 |d7
| : -+- -+- -+- -+- -+- | : /_\ /_\ /_\ /_\ /_\ | D3 : | | | | | |\ | d8 | 5
o----------------*----|----|----|----|---| >+-------*-------------------' :
|| | | |/ | | : | | | | | D4 : | | | | |\ | d9 | 6
o---------------------*----|----|----|---| >+-------* : | | | |/ | | : | | |
| D5 : | | | |\ | d10 | 7 o--------------------------*----|----|---|
>+-------* : | | |/ | | : | | | D6 : | | |\ | d11 | 8
o-------------------------------*----|---| >+-------* : | |/ | | : | | D7 :
||\ | d12 | 9 o------------------------------------*---| >+-------' : |/ | :
: 25 o------. : | .......: | d1 to d13: 1N4148 __+__ \\\\\ Centronic port
III-2) Reader 2: --------- Zener 3.3V 2x1N4001 ________ 150 |\ | |\ | | |
________ | /| (6) (8) o----, ,--+ >+--*--+ >+--*---+ 7824 +----*--o
o-|_____|-++------+ 7805 +------*-------------------*--|_____|-o Vcc |/ |
|________| | | 1N4001 | _+_ | | \ / ---> ,+, __+__ -+- ---> | | \\\\\ | | |
4.7k ,+, '+' | | | (7) | | 680 *----------o I/O '+' | | Busy (11) o | (4)
__+__ D0 (2) o-----*----o Reset \\\\\ | 4.7nF ===== | __+__ \\\\\ (3) D1 (3)
o----------o Clk (2) D2 (4) o----------o R/W Gnd (25) o | fuse (5)
*--~~~~~---o Gnd __+__ \\\\\ IV) The program:

The following program will enable you to read telecards on you PC if you
build the precedent reader. This programma does *NOT* work for OSD cards.
(****************************************************************************
/*) (* T E L E C A R D . PAS *)
(****************************************************************************
*) (* This program enable you to dumb the memory of electronics phonecards
*)(* from all over the world ( NOT ), so that you will be able to see which
*) (* country the card is from how many units are left and so on .... *) (*
*) (* Last revised: 07.05.1994 *)
(****************************************************************************
*) USES crt,dos; CONST port_address=$378; (* Select Printer PORT 1 *) TYPE
string8=string[8]; string2=string[2]; VAR reg : registers; i,j : integer;
Data : array[1..32] of byte; car : char; byte_number : integer; displaying :
char;
{---------------------------------------------------------------------------
--} { PROCEDURE Send(b:byte); } { } { - Send a byte on the selected printer
port. }
{---------------------------------------------------------------------------
--} PROCEDURE Send(b:byte); BEGIN port[port_address]:=b; END;
{---------------------------------------------------------------------------
--} { FUNCTION Get:byte; } { } { - Get a byte from the status register of
theselected printer port. }
{---------------------------------------------------------------------------
--} FUNCTION Get:byte; BEGIN get:=port[port_address+1]; END;
{---------------------------------------------------------------------------
--} { FUNCTION dec2hexa_one(decimal_value):hexa_character_representation; }
{} { - convert a 4 bit long decimal number to hexadecimal. }
{---------------------------------------------------------------------------
--} FUNCTION dec2hexa(value:byte):char; BEGIN case value of 0..9 :
dec2hexa:=chr(value+$30); 10..15 : dec2hexa:=chr(value+$37); END; END;
{---------------------------------------------------------------------------
--} { FUNCTION d2h(decimal_byte):string2; } { } { - convert a decimal byte
toits hexadecimal representation. }
{---------------------------------------------------------------------------
--} FUNCTION d2h(value:byte):string2; BEGIN d2h:=dec2hexa(value div $10) +
dec2hexa(value and $0F); END;
{---------------------------------------------------------------------------
--} { FUNCTION Binary(byte):string8; } { } { - Convert a byte to its binary
representation. }
{---------------------------------------------------------------------------
--} FUNCTION Binary( b : byte):string8; VAR weigth : byte; s : string8;
BEGINweigth:=$80; s:=''; while (weigth > 0) do BEGIN if ((b and weigth) =
weigth) then s:=s+'1' else s:=s+'0'; weigth:=weigth div $02; END; Binary:=s;
END;
{---------------------------------------------------------------------------
--} FUNCTION Units:byte; VAR u, i : integer; s : string8; BEGIN u:=0; i:=13;
while (Data[i] = $FF) do BEGIN u:=u+8; i:=i+1; END; s:=Binary(Data[i]);
while(s[1]='1') do BEGIN inc(u); s:=copy(s,2,length(s)); END; units:=u; END;
{---------------------------------------------------------------------------
--} FUNCTION Octal_Unit_Count:LongInt; FUNCTION BitCount( Data : integer
):integer; VAR i : integer; BEGIN i:=0; while ((Data and $01)=$01) do BEGIN
Data:=Data div 2; inc(i); END; BitCount:=i; END; BEGIN Octal_Unit_Count:=
4096*BitCount(Data[9])+512*BitCount(Data[10])
+64*BitCount(Data[11])+8*BitCount(Data[12]) +BitCount(Data[13]); END;
{---------------------------------------------------------------------------
--} PROCEDURE Card_Type; BEGIN case Data[2] of $03: BEGIN write('Telecard -
France - '); case Data[12] of $13: write('120 Units - ',units-130,' Units
left'); $06: write('50 Units - ',units-60,' Units left'); $15: write('40
Units - ',units-40,' Units left'); END; END; $2F:write('Telecard - Germany -
', Octal_Unit_Count, ' Pfennigs left'); $37:write('Telecard - Neitherland -
',Octal_Unit_Count,' Cents left'); $3B:write('Telecard - Greece - ',
Octal_Unit_Count, ' Units left'); $83:BEGIN write('Telecard'); case Data[12]
of $1E: write(' - Sweden'); $30: write(' - Norway'); $33: write(' -
Andorra'); $3C: write(' - Ireland'); $47: write(' - Portugal'); $55: write('
- Czech Republic'); $5F: write(' - Gabon'); $65: write(' - Finland'); END;
if(Data[12] in [$30,$33,$3C,$47,$55,$65]) then BEGIN case ((Data[3] and
$0F)*$100+Data[4]) of $012: write (' - 10 Units - ',units-12,' Units left');
$024: write (' - 22 Units - ',units-24,' Units left'); $027: write (' - 25
Units - ',units-27,' Units left'); $032: write (' - 30 Units - ',units-32,'
Units left'); $052: write (' - 50 Units - ',units-52,' Units left'); $067:
write (' - 65 Units - ',units-62,' Units left'); $070: write (' - 70 Units -
',units-70,' Units left'); $102: write (' - 100 Units - ',units-102,' Units
left' $152: write (' - 150 Units - ',units-152,' Units left END; END; {
write(' - N0 ',Data[5]*$100+Data[6]);} END; END; END;
{---------------------------------------------------------------------------
--} PROCEDURE waiting; BEGIN send($00); write('Enter a card in the reader
andpress a key ...'); repeat until keypressed; gotoxy(1, wherey); clreol;
END;
{---------------------------------------------------------------------------
--} PROCEDURE Full_Displaying; BEGIN writeln('Memory dump:'); for i:=1 to 80
do write('-'); for i:=1 to (byte_number div 6 + 1) do BEGIN for j:=1 to 6 do
if j+6*(i-1) 

--
Pentru dezabonare, trimiteti mail la 
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/


Raspunde prin e-mail lui