                              ==Phrack Magazine==

                 Volume Five, Issue Forty-Six, File 16 of 28

****************************************************************************

                        VisaNet Operations (Continued)

4.22 TRANSACTION AMOUNT

This is a variable field from three to twelve digits in length.  The transaction
amount includes the amount in 4.28, Secondary Amount.  Therefore, field 4.22
must be greater than or equal to field 4.28.

The transaction amount is presented by the terminal with an implied decimal
point.  For example $.01 would be represented in the record as "001".  When the
terminal is used with an authorization system which supports the US dollar as
the primary currency, the amount field must be limited to seven digits
(9999999). [...]  The terminal may be used with authorization system which
support other currencies that require the full twelve-digit field.

4.23 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

4.24 DEVICE CODE/INDUSTRY CODE

This field is used to identify the device type which generated the transaction
and the industry type of the merchant.  Table 4.24 provides a brief summary of
the current codes.

                                   TABLE 4.24
                           Device Code/Industry Code

C                                      C
O                                      O
D                                      D
E          DEVICE TYPE                 E            INDUSTRY TYPE
-------------------------------------------------------------------------------
0   Unknown or Unsure                  0   Unknown or Unsure
1          RESERVED                    1              RESERVED
2          RESERVED                    2              RESERVED
3          RESERVED                    3              RESERVED
4          RESERVED                    4              RESERVED
5          RESERVED                    5              RESERVED
6          RESERVED                    6              RESERVED
7          RESERVED                    7              RESERVED
8          RESERVED                    8              RESERVED
9          RESERVED                    9              RESERVED
A          RESERVED                    A              RESERVED
B          RESERVED                    B   Bank/Financial Institution
C   P.C.                               C              RESERVED
D   Dial Terminal                      D              RESERVED
E   Electronic Cash Register (ECR)     E              RESERVED
F          RESERVED                    F   Food/Restaurant
G          RESERVED                    G   Grocery Store/Supermarket
H          RESERVED                    H   Hotel
I   In-Store Processor                 I              RESERVED
J          RESERVED                    J              RESERVED
K          RESERVED                    K              RESERVED
L          RESERVED                    L              RESERVED
M   Main Frame                         M   Mail Order
N          RESERVED                    N              RESERVED
O          RESERVED                    O              RESERVED
P   POS-port                           P              RESERVED
Q       RESERVED for POS-port          Q              RESERVED
R          RESERVED                    R   Retail
S          RESERVED                    S              RESERVED
T          RESERVED                    T              RESERVED
U          RESERVED                    U              RESERVED
V          RESERVED                    V              RESERVED
W          RESERVED                    W              RESERVED
X          RESERVED                    X              RESERVED
Y          RESERVED                    Y              RESERVED
Z          RESERVED                    Z              RESERVED
--------------------------------------------------------------------------------

4.25 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

4.26 ISSUING INSTITUTION ID/RECEIVING INSTITUTION ID

This six-digit field is provided by the merchant signing member and is present
when the terminal is used to process transactions which can not be routed using
the cardholder Primary Account Number.  When a value is present in this field,
it is used as an RIID for all valid transaction codes, field 4.12, except 81
through 88.  This field is used as an IIID for transaction codes 81 through 88.
Table 4.26 provides a summary of the RIID codes for check acceptance.

                                   TABLE 4.26
                          Check Acceptance RIID Values

                         Vendor                 RIID
                         ---------------------------
                         JBS, Inc             810000
                         Telecheck            861400
                         TeleCredit, West     894300 [note; telecredit has been
                         TeleCredit, East     894400  mutated/eaten by equifax]
                         ---------------------------

4.27 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

4.28 SECONDARY AMOUNT (CASHBACK)

NOTE: "Cashback" is NOT allowed on Visa cards when the Customer Data Field,
see section 4.18, has been manually entered.

This is a variable length field from three to twelve digits in length.  The
Secondary Amount is included in field 4.22, Transaction Amount.

The secondary amount is presented by the terminal with an implied decimal point.
For example $.01 would be represented in the record as "001".  This field will
contain 000 when no secondary amount has been requested.  Therefore, when the
terminal is used with an authorization system which supports the US dollar as
the primary currency, the secondary amount field must be limited to seven
digits (9999999).  The terminal may be used with authorization systems which
support other currencies that require the full twelve-digit field.

4.29 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

4.30 MERCHANT NAME

This 25-character field contains the merchant name provided by the signing
member.  the name must correspond to the name printed on the customer receipt.
The name is left justified with space fill.  The first character position can
not be a space.  This field must contain the same used in the data capture
batch.

4.32 MERCHANT STATE

This two-character field contains the merchant location state abbreviation
provided by the singing member.  The abbreviation must correspond to the state
name printed on the customer receipt and be one of the Visa accepted
abbreviations.  This field must contain the same data used in the data capture
batch.

4.33 SHARING GROUP

This one to fourteen-character field contains the group of debit card/network
types that a terminal may have access to and is provided by the singing member.
The values must correspond to one of the Visa assigned debit card /network
types.  This data is part of the VisaNet debit data.

4.34 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

4.35 MERCHANT ABA NUMBER

This fixed length field is twelve digits in length.  If this field is not used,
its length must be zero.  If this field is not used, the following field must
also be empty.

This number identifies the merchant to a debit switch provided by the signing
member.  The number is provided by the signing member.

4.36 MERCHANT SETTLEMENT AGENT NUMBER

This fixed length field is four digits in length.  If this field is not used,
its length must be zero.  If this field is not used, the previous field must
also be empty.

This number identifies the merchant settling agent.  The number is provided by
the signing member.

4.37 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

4.38 AGENT NUMBER

This six-digit field contains an agent number assigned by the signing member.
The number identifies an institution which signs merchants as an agent of a
member.  The member uses this number to identify the agent within the member
systems.  The acquirer BIN, Agent, Chain, Merchant, Store, and Terminal numbers
are required to uniquely identify a terminal within the VisaNet systems.

4.39 CHAIN NUMBER

This six-digit field contains a merchant chain identification number assigned
by the singing member.  The member uses this number to identify the merchant
chain within the member systems.  The acquirer BIN, Agent, Chain, Merchant,
Store, and Terminal numbers are required to uniquely identify a terminal within
the VisaNet systems.

4.40 BATCH NUMBER

This three-digit field contains a batch sequence number generated by the
terminal.  The number will wrap from 999 to 001.  This number is that data
capture batch number.

4.41 REIMBURSEMENT ATTRIBUTE

This is a single character fixed length field.

This field contains the reimbursement attribute assigned by the singing member.
This field must be a "space".

4.42 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

4.43 APPROVAL CODE

This contains a six-character fixed length field.

This field is only present in cancel transactions and contains the original
approval code from the original transaction.

The approval code was returned in the authorization response of the transaction
to be canceled.

4.44 SETTLEMENT DATE

This contains a four-digit fixed length field.

This field is only present in cancel transactions and contains the settlement
date from the original transaction and is in the format MMDD.

The settlement date was returned in the authorization response of the
transaction to be canceled.

4.45 LOCAL TRANSACTION DATE

This contains a four-digit fixed length field.

This field is only present in cancel transactions and contains the transaction
date from the original transaction and is in the format MMDD.

The transaction date was returned in the authorization response of the
transaction to be canceled as MMDDYY.

4.46 LOCAL TRANSACTION TIME

This contains a six-digit fixed length field.

This field is only present in cancel transactions and contains the transaction
time from the original transaction and is in the format HHMMSS.

The transaction time was returned in the authorization response of the
transaction to be canceled.

4.47 SYSTEM TRACE AUDIT NUMBER

This contains a six-character fixed length field.

This field is only present in cancel transactions and contains the trace audit
number from the original transaction.

The trace audit number was returned in the authorization response of the
transaction to be canceled.

4.48 ORIGINAL AUTHORIZATION TRANSACTION CODE

The field is a two-character fixed length field and must contain the original
AUTHORIZATION TRANSACTION CODE (filed 4.12) of the transaction to be canceled.
Currently, the only transaction that can be canceled in an Interlink Debit
Purchase.

4.49 NETWORK IDENTIFICATION CODE

This contains a single character fixed length field.

This field is only present in cancel transactions and contains the network ID
from the original transaction.

The network ID was returned in the authorization response of the transaction to
be canceled.

4.50 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

5.0 RESPONSE RECORD DATA ELEMENT DEFINITIONS

The following subsections will define the authorization response record data
elements.

5.01 PAYMENT SERVICE INDICATOR

This field contains the one-character payment service indicator.  It must be
placed in the batch detail record for terminals that capture.

Table 5.01 provides a summary of current Values.

                                   TABLE 5.01
                        Payment Service Indicator Values

        VALUE   DESCRIPTION
        ------------------------------------------------------------------
          A     REPS qualified
          Y     Requested a "Y" in field 4.14 and there was a problem
                REPS denied (VAS edit error or BASE I reject)
          N     Requested an "N" in field 4.14 or requested a "Y" in field
                4.14 and request was downgraded (by VAS)
        space   If "Y" sent and transaction not qualified  (VAS downgrade)
        -------------------------------------------------------------------

5.02 STORE NUMBER

This four-digit number is returned by VisaNet from the authorization request for
formats "J" and "G", and can be used to route the response within a store
controller and/or a store concentrator.

5.03 TERMINAL NUMBER

This four-digit number is returned by VisaNet from the authorization request for
formats "J" and "G", and can be used to route the response within a store
controller and/or a store concentrator.

5.04 AUTHORIZATION SOURCE CODE

This field contains a one-character code that indicates the source of the
authorization.  The received code must be placed in the data capture detail
transaction record when data capture is enabled.

Table 5.04 provides a summary of current codes.

                                   TABLE 5.04
                           Authorization Source Codes

 Code   Description
--------------------------------------------------------------------------------
  1     STIP: time-out response
  2     LCS: amount below issuer limit
  3     STIP: issuer in Suppress-Inquiry mode
  4     STIP: issuer unavailable
  5     Issuer approval
  6     Off-line approval, POS device generated
  7     Acquirer approval: BASE I unavailable
  8     Acquirer approval of a referral
  9     Use for non-authorized transactions; such as credit card credits [yum!]
  D     Referral: authorization code manually keyed
  E     Off-line approval: authorization code manually keyed
--------------------------------------------------------------------------------

5.05 TRANSACTION SEQUENCE NUMBER

This field contains the four-digit code which was generated by the terminal as
the sequence number for the transaction and passed to the authorization center
in the authorization request record.  The sequence number can be used by the
terminal to match request and response messages.  The transaction sequence
number is returned by VisaNet without sequence verification.

5.06 RESPONSE CODE

This field contains a two-character response code indicating the status of the
authorization.

Table 5.06 provides the response codes for formats "J" and "G".  A response code
of "00" represents an approval.  A response code of "85" represents a successful
card verification returned by TRANSACTION CODES 58, 68, and 88.  All other
response codes represent a non-approved request.

The value returned is stored in the batch transaction detail record for
terminals that capture.

                                   TABLE 5.06
           Authorization Response Codes For Record Formats "J" & "G"

  Authorization     Response                                        AVS Result
 Response Message     Code       Response Definition                   Code
--------------------------------------------------------------------------------
   EXACT MATCH         00        Exact Match, 9 digit zip               X
   EXACT MATCH         00        Exact Match, 5 digit zip GRIND         Y
  ADDRESS MATCH        00        Address match only                     A
    ZIP MATCH          00        9-digit zip match only                 W
    ZIP MATCH          00        5-digit zip match only GRIND           Z
     NO MATCH          00        No address or zip match                N
 VER UNAVAILABLE       00        Address unavailable                    U
      RETRY            00        Issuer system unavailable              R
 ERROR INELIGIBLE      00        Not a mail/phone order                 E
 SERV UNAVAILABLE      00        Service not supported                  S
    APPROVAL           00        Approved and completed              see above
     CARD OK           85        No reason to decline                see above
      CALL             01        Refer to issuer                        0
      CALL             02        Refer to issue - Special condition     0
    NO REPLY           28        File is temporarily unavailable        0
    NO REPLY           91        Issuer or switch is unavailable        0
    HOLD-CALL          04        Pick up card                           0
    HOLD-CALL          07        Pick up card - Special condition       0
    HOLD-CALL          41        Pick up card - Lost                    0
    HOLD-CALL          43        Pick up card - Stolen                  0
 ACCT LENGTH ERR       EA        Verification Error                     0
 ALREADY REVERSED      79        Already Reversed at Switch [ya got me] 0
   AMOUNT ERROR        13        Invalid amount                         0
  CAN'T VERIFY PIN     83        Can not verify PIN                     0
   CARD NO ERROR       14        Invalid card number                    0
  CASHBACK NOT APP     82        Cashback amount not approved           0
   CHECK DIGIT ERR     EB        Verification Error                     0
  CID FORMAT ERROR     EC        Verification Error                     0
     DATE ERROR        80        Invalid Date                           0
      DECLINE          05        Do not honor                           0
      DECLINE          51        Not Sufficient Funds                   0
      DECLINE          61        Exceeds Withdrawal Limit               0
      DECLINE          65        Activity Limit Exceeded                0
 ENCRYPTION ERROR      81        Cryptographic Error                    0
      ERROR xx         06        General Error                          0
     ERROR xxxx        06        General Error                          0
    EXPIRED CARD       54        Expired Card                           0
  INVALID ROUTING      98        Destination Not Found                  0
   INVALID TRANS       12        Invalid Transaction                    0
  NO CHECK ACCOUNT     52        No Check Account                       0
  NO SAVE ACCOUNT      54        No Save Account                        0
   NO SUCH ISSUER      15        No Such Issuer                         0
      RE ENTER         19        Re-enter Transaction                   0
    SEC VIOLATION      63        Security Violation                     0
   SERV NOT ALLOWED    57        Trans. not permitted-Card              0
   SERV NOT ALLOWED    58        Trans. not permitted-Terminal          0
   SERVICE CODE ERR    62        Restricted Card                        0
     SYSTEM ERROR      96        System Malfunction [whoop whoop!]      0
     TERM ID ERROR     03        Invalid Merchant ID                    0
      WRONG PIN        55        Incorrect PIN                          0
  xxxxxxxxxxxxxxxxxx   xx        Undefined Response                     0
--------------------------------------------------------------------------------

5.07 APPROVAL CODE

This field contains a six-character code when a transaction has been approved.
If the transaction is not approved the contents of the field should be ignored.
The approval code is input to the data capture detail transaction record.

5.08 LOCAL TRANSACTION DATE

This field contains a six-digit local date calculated (MMDDYY) by the
authorization center using the time zone differential code provided in the
authorization request message.  This date is used by the terminal as the date to
be printed on the transaction receipts and audit reports, and as the date input
to the data capture transaction detail record.  This field is only valid for
approved transactions.

5.09 AUTHORIZATION RESPONSE MESSAGE

This field is a sixteen-character field containing a response display message.
This message is used by the terminal to display the authorization results.
Table 5.06 provides the message summary.   The messages are provided with "sp"
space fill.  This field is mapped to the RESPONSE CODE, field 5.06, for all
non-AVS transactions and for all DECLINED AVS transactions.  For APPROVED AVS
transactions (response code = "00" or "85"), it is mapped to the AVS RESULT
CODE, field 5.10.

5.10 AVS RESULT CODE

This one-character field contains the address verification result code.  An
address verification result code is provided for transactions and provides an
additional indication that the card is being used by the person to which the
card was issued.  The service is only available for mail/phone order
transactions.

Table 5.06 provides a summary of the AVS Result Codes.

An ANSI X3.4 "0" is provided for all non-AVS transactions and all declined
transactions.

5.11 TRANSACTION IDENTIFIER

This numeric field will contain a transaction identifier.  The identifier will
be fifteen-digits in length if the payment service indicator value is an "A" or
it will be zero in length if the payment service indicator value is not an "A".
This value is stored in the batch detail record for terminals that capture and
is mandatory for REPS qualification.

5.12 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

5.13 VALIDATION CODE

This alphanumeric field will contain a validation code.  The code will contain a
four-character value if the payment service indicator value is an "A" or it will
be zero in length if the payment service indicator value is not an "A".  This
value is stored in the batch detail record for terminals that capture and is
mandatory for REPS qualification.

5.14 FIELD SEPARATOR

The authorization record format specifies the use of the "FS" character.

5.15 NETWORK IDENTIFICATION CODE

This one-character fixed length field contains the identification code of the
network on which the transaction was authorized.  The network ID must be printed
on the receipt.

5.16 SETTLEMENT DATE

This four-digit fixed length field contains the transaction settlement date
returned by the authorizing system (MMDD).  The settlement date must be printed
on the receipt.

5.17 SYSTEM TRACE AUDIT NUMBER

This six-character fixed length field contains a trace audit number which is
assigned by the authorizing system.  The trace audit number must be printed on
the receipt.

5.18 RETRIEVAL REFERENCE NUMBER

This twelve-character fixed length field contains the transaction retrieval
reference number returned by the authorizing system.  The reference number
should be printed on the receipt.

5.19 LOCAL TRANSACTION TIME

This six-digit fixed length field contains the transaction time returned by the
authorizing system (HHMMSS).  The time must be printed on the receipt.

6.0 CONFIRMATION RECORD DATA ELEMENT DEFINITIONS

The following subsections define the debit confirmation response record data
elements.

6.01 NETWORK IDENTIFICATION CODE

This one character fixed length field contains the identification code of the
network on which the transaction was authorized.  The network ID is printed on
the receipt.

6.02 SETTLEMENT DATE

This four-digit fixed length field contains the transaction settlement date
returned by the authorizing system.

6.03 SYSTEM TRACE AUDIT NUMBER

This six-character fixed length field contains the system trace audit number
which is assigned by the authorizing system.

7.0 CHARACTER CODE DEFINITIONS

The following subsections will define the authorization request record character
set and character sets used for track 1 and track 2 data encoded on the magnetic
stripes.

The authorization request records are generated with characters defined by ANSI
X3.4-1986.  The data stored on the cardholder's card in magnetic or optical form
must be converted to the ANSI X3.4 character set before transmission to VisaNet.

Section 7.01 provides track 1 character set definition.  Section 7.02 provides
track 2 character set definition.  Section 7.03 provides the ANSI X3.4-1986 and
ISO 646 character set definitions.  Section 7.04 provides a cross reference
between the track 1, track 2, and ANSI X3.4 character sets.  Section 7.05
describes the method for generating and checking the Mod 10 Luhn check digit for
credit card account numbers.  Section 7.06 describes the method for generating
the LRC byte for the authorization request message and for testing the card
swipe's LRC byte.  Section 7.07 provides sample data for an authorization
request and response for record format "J" testing.

The POS device/authorization must perform the following operations on track
read data before it can be used in an authorization request message.

   1. The LRC must be calculated for the data read from the track and compared
      to the LRC read from the track.  The track data is assumed to be read
      without errors when on character parity errors are detected and the
      calculated and read LRC's match.

   2. The starting sentinel, ending sentinel, and LRC are discarded.

   3. The character codes read from the magnetic stripe must be converted from
      the encoded character set to the set used for the authorization request
      message.  The characters encoded on track 1 are six-bit plus parity codes
      and the characters encoded on track 2 are four-bit plus parity codes, with
      the character set used for the request message defined as seven-bit plus
      parity codes.

All characters read from a track must be converted to the request message
character set and transmitted as part of the request.  The converted track data
can not be modified by adding or deleting non-framing characters and must be a
one-for-one representation of the characters read from the track.  [sounds like
they mean it, eh?]

7.1 TRACK 1 CHARACTER DEFINITION

Table 7.01 provides the ISO 7811-2 track 1 character encoding definitions.  This
"standards" format is a SAMPLE guideline for expected credit card track
encoding; ATM/debit cards may differ.  Actual cards may differ [not], whether
they are Visa cards or any other issuer's cards.

Each character is defined by the six-bit codes listed in Table 7.01.

Track 1 can be encoded with up to 79 characters as shown in Figure 7.01

+---------------------------------------------------------+
|SS|FC| PAN|FS|  NAME|FS| DATE| DISCRETIONARY DATA |ES|LRC|
+---------------------------------------------------------+

LEGEND:

             Field  Description                                  Length  Format
--------------------------------------------------------------------------------
                SS  Start Sentinel                                 1        %
                FC  Format Code ("B" for credit cards)             1       A/N
               PAN  Primary Account Number                      19 max     NUM
                FS  Field Separator                                1        ^
              NAME  Card Holder Name (See NOTE below)           26 max     A/N
                FS  Field Separator                                1        ^
              DATE  Expiration Date (YYMM)                         4       NUM
Discretionary Data  Option Issuer Data (See NOTE below)         variable   A/N
                ES  End Sentinel                                   1        ?
               LRC  Longitudinal Redundancy Check                  1
                                                                  ---
                    Total CAN NOT exceed 79 bytes----->           79
--------------------------------------------------------------------------------

                                  FIGURE 7.01
                          Track 1 Encoding Definition

NOTE: The CARD HOLDER NAME field can include a "/" as the surname separator
      and a "." as the title separator

      The DISCRETIONARY DATA can contain any of the printable characters from
      Table 7.01

                                   TABLE 7.01
                          Track 1 Character Definition

                       b6   0   0   1   1
BIT NUMBER             b5   0   1   0   1      (a) These character positions
-------------------------------------------        are for hardware use only
b4 b3 b2 b1    ROW/COL      0   1   2   3
-------------------------------------------    (b) These characters are for
0  0  0  0        0        SP   0  (a)  P          country use only, not for
0  0  0  1        1        (a)  1   A   Q          international use
0  0  1  0        2        (a)  2   B   R
0  0  1  1        3        (c)  3   C   S      (c) These characters are
0  1  0  0        4         $   4   D   T          reserved for added
0  1  0  1        5        (%)  5   E   U          graphic use [nifty]
0  1  1  0        6        (a)  6   F   V
0  1  1  1        7        (a)  7   G   W
1  0  0  0        8         (   8   H   X      (%) Start sentinel
1  0  0  1        9         )   9   I   Y      (/) End sentinel
1  0  1  0        A        (a) (a)  J   Z      (^) Field Separator
1  0  1  1        B        (a) (a)  K  (b)      /  Surname separator
1  1  0  0        C        (a) (a)  L  (b)      .  Title separator
1  1  0  1        D         -  (a)  M  (b)      SP Space
1  1  1  0        E         -  (a)  N  (^)      +-----------------------+
1  1  1  1        F         /  (?)  O  (a)      |PAR|MSB|B5|B4|B3|B2|LSB|
                                                +-+---+-----------------+
                                                  |   |--- Most Significant Bit
                                                  |--- Parity Bit (ODD)
                                               Read LSB First

7.02 TRACK 2 CHARACTER DEFINITION

Table 7.02 provides the ISO 7811-2 track 2 character encoding definitions.  This
"standards" format is a SAMPLE guideline for expected credit card track
encoding; ATM/debit cards may differ.  Actual cards may differ, whether they are
Visa cards or any other issuer's cards.

Each character is defined by the four-bit codes listed in Table 7.02.

Track 2 can be encoded with up to 40 characters as shown in Figure 7.02.

+--------------------------------------------------------+
|SS|    PAN   |FS| DATE|    DISCRETIONARY DATA    |ES|LRC|
+--------------------------------------------------------+

LEGEND:

             Field  Description                                  Length  Format
--------------------------------------------------------------------------------
                SS  Start Sentinel                                 1     0B hex
               PAN  Primary Account Number                      19 max     NUM
                FS  Field Separator                                1        =
Discretionary Data  Option Issuer Data (See NOTE below)         variable   A/N
                ES  End Sentinel                                   1     0F hex
               LRC  Longitudinal Redundancy Check                  1
                                                                  ---
                    Total CAN NOT exceed 40 bytes----->           40
--------------------------------------------------------------------------------

                                  FIGURE 7.02
                          Track 2 Encoding Definition

NOTE: The PAN and DATE are always numeric.  The DISCRETIONARY DATA can be
      numeric with optional field separators as specified in Table 7.02.


                                   TABLE 7.02
                             Track 2 Character Set

b4  b3  b2  b1     COL              (a) These characters are for
------------------------------          hardware use only
0   0   0   0       0      0
0   0   0   1       1      1        (B) Starting Sentinel
0   0   1   0       2      2
0   0   1   1       3      3        (D) Field Separator
0   1   0   0       4      4
0   1   0   1       5      5        (F) Ending Sentinel
0   1   1   0       6      6
0   1   1   1       7      7
1   0   0   0       8      8        +---------------------------+
1   0   0   1       9      9        | PAR | MSB | b3 | b2 | LSB |
1   0   1   0       A     (a)       +---------------------------+
1   0   1   1       B     (B)          |     |
1   1   0   0       C     (a)          |     |--- Most Significant Bit
1   1   0   1       D     (D)          |--- Parity Bit (ODD)
1   1   1   0       E     (a)
1   1   1   1       F     (F)        Read LSB first

[ tables 7.03a, 7.03b, and 7.04 deleted...
  If you really need a fucking ascii table that bad go buy a book.]

[ section 7.05 - Account Data Luhn Check deleted...
  as being unnecessary obtuse and roundabout in explaining how the check works.
  the routine written by crazed luddite and murdering thug is much clearer. ]

7.06 CALCULATING AN LRC

When creating or testing the LRC for the read of the card swipe, the
authorization request record, the debit confirmation record or the VisaNet
response record; use the following steps to calculate the LRC:

1) The value of each bit in the LRC character, excluding the parity bit, is
   defined such that the total count of ONE bits encoded in the corresponding
   bit location of all characters of the data shall be even (this is also known
   as an EXCLUSIVE OR (XOR) operation)

      For card swipes, include the start sentinel, all the data read and
      the end sentinel.

      For VisaNet protocol messages, begin with the first character past
      the STX, up to and including the ETX.

2) The LRC characters parity bit is not a parity bit for the individual parity
   bits of the data message, but it only the parity bit for the LRC character
   itself.  Calculated as an even parity bit.

[ i list a routine for calculating an LRC o a string later on in the document ]

7.07 TEST DATA FOR RECORD FORMAT "J"

The following two sections provide sample data for testing record format "J"
with the VisaNet dial system.

7.07.01 TEST DATA FOR A FORMAT "J" AUTHORIZATION REQUEST

Table 7.07a provides a set of test data for record format "J" authorization
request.

                                  TABLE 7.07a
                        Test Data For Record Format "J"

 Test Data      Byte #   Length   Format   Field Name
--------------------------------------------------------------------------------
     J            1         1       A/N    Record Format
 0, 2, or 4       2         1       A/N    Application Type
     .            3         1       A/N    Message Delimiter
   401205        4-9        6       A/N    Acquirer BIN
123456789012    10-21       12      NUM    Merchant Number
    0001     *  22-25       4       NUM    Store Number
    0001     *  26-29       4       NUM    Terminal Number
    5999        30-33       4       NUM    Merchant Category Code
    840         34-36       3       NUM    Merchant Country Code
   94546        37-41       5       A/N    Merchant City Code
    108         42-44       3       NUM    Time Zone Differential
    54          45-46       2       A/N    Authorization Transaction Code
  12345678      47-54       8       NUM    Terminal Identification Number
     Y           55         1       A/N    Payment Service Indicator
    0001     *  56-59       4       NUM    Transaction Sequence Number
     @           60         1       A/N    Cardholder Identification Code
D, H, T, or X    61         1       A/N    Account Data Source
 Track or                                  Customer Data Field
Manual Data
    "FS"        N.A.        1       "FS"   Field Separator
  0000123       N.A.      0 to 43   A/N    Transaction Amount
    "FS"        N.A.        1       "FS"   Field Separator
     ER         N.A.      0 or 2    A/N    Device Code/Industry code
    "FS"        N.A.        1       "FS"   Field Separator
                N.A.      0 or 6    NUM    Issuing/Receiving Institution ID
    "FS"        N.A.        1       "FS"   Field Separator
    000         N.A.      3 to 12   NUM    Secondary Amount (Cashback)
    "FS"        N.A.        1       "FS"   Field Separator
--------------------------------------------------------------------------------

NOTE:* Denotes fields that are returned in the response message

7.07.2 RESPONSE MESSAGE FOR TEST DATA

Table 7.07b provides the response message for the test data provided in section
7.07.1.

                                  TABLE 7.07b
               Response Message For Test Data - Record Format "J"

 Test Data      Byte #   Length   Format   Field Name
--------------------------------------------------------------------------------
A, Y, N, or   *   1        1       A/N     Payment Service Indicator
 "space"
   0001       *  2-5       4       NUM     Store Number
   0001       *  6-9       4       NUM     Terminal Number
    5         *   1        1       A/N     Authorization Source Code
   0001       * 11-14      4       NUM     Transaction Sequence Number
    00        * 15-16      2       A/N     Response Code
  12AB45      * 17-22      6       A/N     Approval Code
  111992      * 23-28      6       NUM     Transaction Date (MMDDYY)
AP ______       29-44      16      A/N     Authorization Response Message
0, Sp, or "FS"   45        1       A/N     AVS Result Code
              *Variable  0 or 15   NUM     Transaction Identifier
    "FS"                           "FS"    Field Separator
              *Variable  0 or 4    A/N     Validation Code
    "FS"                           "FS"    Field Separator
--------------------------------------------------------------------------------
NOTE: * Move to data capture record for VisaNet Central Data Capture (CDC)
--------------------------------------------------------------------------------

                                [ section two ]
                              [ finding visanet ]

finding visanet isn't hard, but it can be tedious.  visanet rents time off of
compuserve and X.25 networks.  the compuserve nodes used are not the same
as their information service, cis.  to identify a visanet dialup after
connecting, watch for three enq characters and a three second span to hangup.
if you've scanned out a moderate portion of your area code, you probably have a
few dialups.  one idea is to write a short program to dial all the connects you
have marked as garbage or worthless [ you did keep em, right? ]  and wait
for the proper sequence.  X.25 connections should work similarly, but i don't
know for sure.  read the section on visanet usage for other dialup sources.

                                [ section three ]
                        [ visanet link level protocol ]

messages to/from visanet have a standard format:

    stx - message - etx - lrc

the message portion is the record formats covered in section one.  lrc values
are calculated starting with the first byte of message, going up to and
including the etx character.  heres an algorithm that calculates the lrc for a
string. note: in order to work with the visanet protocols, append etx to the
string before calling this function.

unsigned char func_makelrc(char *buff)
{
   int i;
   char ch, *p;

   ch = 0;
   p = buff;

   for(;;)  {
      ch = (ch^(*p));
      p++;
      if(!(*p))
         break;
   }

   return ch;
}

for a single authorization exchange, the easiest kind of transaction, the
sequence goes like this:

host   enq                   stx-response-etx-lrc   eot
term      stx-request-etx-lrc                    ack
                                                          <disconnect>

matching this sequence with test record formats from section one, 7.07, heres
an ascii representation of a transaction.  control characters denoted in <>'s.
[of course, you wouldn't really have a carriage return in middle of a message.
duh. ]  this transaction would be for card number 4444111122223333 with an
expiration date of 04/96.  the purchase amount is $1.23.  visanet responds with
an approval code of 12ab45.

host: <enq>

term: <stx>J0.401205123456789012000100015999840945461085412345678Y0001@H444411
      1122223333<fs>0496<fs>0000123<fs>ER<fs><fs>000<fs><etx><lrc>

host: <stx>Y00010001500010012AB45111992APPROVAL 12AB45123456789012345<fs>
      ABCD<fs><etx><lrc>

term: <ack>

host: <eot>

authorizing multiple transactions during one connect session is only slightly
more complicated.  the etx character on all messages sent to visanet are changed
to etb and the application type is changed from '0' to '2' [section one 4.02].
instead of responding after a transaction with eot, visanet instead polls the
terminal again with enq.  this continues until the terminal either changes back
to the single transaction format or issues an eot to the host.

heres a short list of all control characters used:

stx: start-of-text, first message framing character signaling message start
etx: end-of-text, the frame ending character the last message of a sequence
eot: end-of-transmission, used to end an exchange and signal disconnect
enq: enquiry, an invitation to transmit a message or retransmit last item
ack: affirmative acknowledgment, follows correct reception of message
nak: negative acknowledgment, used to indicate that the message was not
     understood or was received with errors
syn: delay character, wait thirty seconds
etb: end-of-block, the end framing character used to signal the end of a message
     within a multiple message sequence

other quick notes: visanet sometimes sends ack before stx on responses
                   lrc characters can hold any value, such as stx, nak, etc
                   visanet can say goodbye at any time by sending eot
                   people can get very anal about error flow diagrams

                                [ section four ]
                    [ half the story; central data capture ]

a full transaction requires two steps, one of which is described in this
document: getting the initial authorization.  an authorization does basically
nothing to a person's account.  oh, you could shut somebody's account down for
a day or two by requesting a twenty thousand dollar authorization, but no other
ill effects would result.  central data capture, the second and final step in a
transaction, needs information from both the authorization request and
response, which is used to generate additional data records.  these records are
then sent to visanet by the merchant in a group, usually at the end of each day.

                                [ section five ]
                            [ common applications ]

access to visanet can be implemented in a number of ways: directly on a pos
terminal, indirectly via a lan, in a hardware specific device, or any
permutation possible to perform the necessary procedures.  card swipers commonly
seen at malls are low tech, leased at around fifty dollars per month, per
terminal.  they have limited capacity, but are useful in that all of the
information necessary for transactions is self contained.  dr delam and maldoror
found this out, and were delighted to play the role of visanet in fooling the
little device.  close scrutiny of section one reveals atm formats, phone order
procedures, and new services such as direct debit from checking/savings and
checks by phone.  start noticing the stickers for telecheck and visa atm cards,
and you're starting to get the picture.

                               [ section seven ]
                              [ brave new world ]

could it be?  yes, expiration dates really don't matter....
this article written to thank previous Phrack writers...
please thank me appropriately...
800#s exist...
other services exist... mastercard runs one...
never underestimate the power of asking nicely...
numerous other formats are available... see section one, 3.0 for hints...
never whistle while you're pissing...
