TheJerm Best Software + Tutorial For...

  • Thread Author
MSR206,MSR606 tutorial + Software

Credit Card , Skimming Skimmer
You Can copy ID Card, Credit card , Bank card , member card , Vip card

[Image: the_jerm]

-= Click Links For Download =-
You do not have permission to view link Log in or register now.
You do not have permission to view link Log in or register now.

You do not have permission to view link Log in or register now.

You do not have permission to view link Log in or register now.

You do not have permission to view link Log in or register now.
Oct 14, 2023
1.61 04-24-13

- Fixed bug that caused the program to not remember the track settings and caused it to default to ISO each time the program was started.

- Fixed bug that caused the program to crash on some computers that use a different format for the current date than "M(M)/D(D)/YYYY". I replaced the date function I was using with one that should extract the month, day and year correctly regardless of the computer's date format. (Much thanks to Iceroot for helping me track down this bug!)

1.6 04-05-13

- Changed "Date of Birth" back so you can enter "0" before one digit numbers in the "MM" and "DD" fields instead of it automatically changing "0" to "1". The reason I had it that way was to prevent entering invalid month and day numbers because the "Age" field is updated when any part of the DOB changes but a few people complained about it so I changed it back and made the program interpret a "0" as "1" for calculating the age.

- Added "Exit" to the "File" dropdown menu. Not sure why I never added that before...

- Added ability to use custom script files for each state's License/ID encoding.

1.5 03-13-13

- Fixed small bug on "License/ID" tab. The "Clear" button wasn't clearing the "DMV#" and "DMV Photo Date" fields.

- Added "Import Data" button to "License/ID" tab. If you have AAMVA format ID tracks on the "Actions" tab this will read the data and fill in all the fields on the "License/ID" tab.

1.45 03-06-13

- Added "Age" field on "License/ID" tab. Now you can enter the age you want and the birth year will be changed automatically. Or, if you enter a birth year, the age will be shown.

- Last state chosen on "License/ID" tab is remembered instead of defaulting to CA each time.

- Added "DMV#" and "DMV Photo Date" fields for CA ID's

- Track 3 encoding for CA now starts with "!!" instead of "13" and DMV#, DMV Photo Date and random 11 character "security string" are now included at the end of the track.

1.4 01-01-13

- Form can now be resized and maximized.

- Added "Batch Mode". You can now read, write or erase several cards in a row without having to click a button each time.

- Added "Bank Card" tab. When you read a bank card it displays the customer name, account number, expiration date, and bank name (if prefix is in database), and also checks the validity of the account number using the Mod 10 formula.

1.3 08-25-12

- Completely rewrote reading/writing routines to use only raw data mode. All byte encoding/decoding is now done by the program. This allows for other settings for bits per character and parity, etc. besides the ISO format. This should fix the problem that people were having trying to write alphabetic characters to track 3 for AAMVA format.

- Added "Track Settings" display box to "Actions" tab.

- Added new item on Settings tab to adjust the character set, parity type, and start and end sentinels used for each track. I also included three presets for the ISO, AAMVA and Old CA DMV formats.

- Removed "Reconstruct" checkbox. The program now automatically sends any tracks it finds any errors on to the "Reconstruct" tab.

- Removed "=" from the end of track 2 when encoding a license/ID for California.

1.2 08-17-12

- Added new feature which helps restore tracks that have been damaged and are unreadable. I tested it on five different cards that had unreadable tracks and was able to retrieve at least 95% of the data on each.

- Changed text in HEX box so that one-digit numbers have a "0" added before them so all numbers are now two digits.

1.11 08-16-12

- Now supports COM1 through COM16. (Thanks to JediMasterC for the suggestion)
Oct 14, 2023
- Fixed bug that caused program to crash on startup if computer does not have a COM1 port. Now checks all 4 ports at startup to see if they exist. If program is run for the first time or an invalid port is chosen in setup, program automatically chooses lowest valid port. Progam also now checks for MSR206 at startup.

- Automatically checks MSR206 model number and grays out track numbers that aren't supported. You can still write in the unsupported tracks' textboxes but when writing to a card, text for those tracks will not be sent to the MSR206 (MSR206 gives an error when you try to write data to an unsupported track).

- Added a few states and fixed a few state abbreviations that were wrong. (When I first entered the states I had to enter the state abbreviations from memory and guessed wrong on a few.)

- Fixed formatting error on track 2 when generating license/ID tracks. AAMVA document incorrectly stated that when an expiration code is used (77, 88, or 99) it should replace the expiration month. The correct format puts the expiration code in place of the birth month and the birth month in place of the expiration month.

- First Release

Setting It Up

Before you can use the program you need to make sure it knows what com port your MSR206 is connected to. If the program doesn't find your MSR206 on startup click on the "Settings" tab. Under "Com Port" there is a dropdown box with COM1 through COM16. Choose the port your MSR206 is connected to and then press the "Set Port" button to open that port. The program will then send a command to see if your MSR206 is on that port. If you chose the right port and everything is connected properly the status bar at the bottom of the window will say "MSR206 FOUND ON COM?" where "?" is the number of your com port.

If you choose a port number that doesn't exist on your computer it will say, "INVALID COM PORT". If the port exists but the MSR206 can't be found you will get the message, "NO RESPONSE ON COM?". Make sure all your cable connections are secure and try testing other com ports.

"Actions" Tab

Now that the program can communicate with your MSR206 you're ready to start using it.

* Status Bar

The status bar is located at the bottom of the window and will give you messages about the functions you use. Its color will give you an idea of the nature of the message. A green bar is for normal messages like indicating when a function completed successfully or displaying information that you requested. A yellow bar means that you started a read, write, or erase function and it's waiting for you to either swipe a card through or abort. A red bar generally indicates an error, like a read error or invalid card swipe. The exception to this color scheme is the LED test under "Settings" which uses the color of the bar to represent the colors of the LED lights on the MSR206.

* Coercivity

Coercivity means the ease with which something can be changed. There are two types of magstripe: high coercivity and low coercivity. Lo-co stripes are sometimes brown in color and can be altered with a relatively weak magnet. These stripes are very susceptible to being erased by magnets or even by being placed against the magstripe of another card. Hi-co stripes are much more difficult to erase but also require a much stronger magnet to write to. Before writing to a card make sure you know what type of magstripe it has. If the coercivity is set wrong you will get a write error. If you don't know what type of magstripe it is, try both settings; one of them should work. Use the "LoCo" and "HiCo" buttons to set the coercivity of the MSR206. Use the "Check" button to see which setting it's currently on. The coercivity setting does not matter when reading a magstripe, only when writing to it.

* Track Settings

This box displays the current settings for each track as three groups of four characters each. The characters, in order, represent the character set (4-bit or 6-bit), parity type (Odd, Even, or None), start sentinel and end sentinel. If the current settings match a known format (ISO, AAMVA, or OLD CA) the format name will be displayed on the next line.

* Read Card

Press this button and you will be asked to swipe a card through. If you decide not to read a card you can press the "Abort" button. Remember that when you read a card it will replace all the data currently in the textboxes, so make sure first that you don't need the current data. When you read a card it will display the data on all three tracks in the three track textboxes. But if there are any errors in a track it will not be displayed, so the track data is also shown unparsed in the ASCII box and a raw dump of the data stream received from the MSR206 is displayed in HEX format. Also, any tracks that have errors are automatically sent to the "Reconstruct" tab which should allow you to recover at least most of the data. If your track settings don't match the format of the track you're trying to read you will get an error, even if there's nothing wrong with the track. The track must be read with the exact same settings it was written with. So make sure your track settings are correct.
Oct 14, 2023
* Write Card

This button works similarly to the "Read Card" button. Before writing to a card you need to make sure you're on the right coercivity setting (see Coercivity) or you'll get a write error. Also, make sure your track settings are correct before writing. If you have any characters that are not in the character set chosen for any track you'll get an "INVALID CHARACTER" error.

* Erase Tracks

Check the checkboxes of the tracks you want to erase, then press the "Erase" button and swipe your card. Make sure you're on the right coercivity setting.

* Batch Mode

If either "Single" or "Serial" is selected the "Read", "Write" and "Erase" commands will operate in batch mode. While in this mode a command will automatically keep repeating until you click "Abort". This is useful when you want to perform the same function on several cards in a row because you won't need to click the button for each card. In Single mode, the command is done repeatedly to the same slot. This is useful if you just want to see the data on multiple cards or if you want to write the same data to multiple cards. The Serial mode automatically goes to the next slot after each read or write. This allows you to read several cards and put the data from each into a seperate slot. Or, when writing in serial mode, you can easily write a batch of cards with different data on each card. "Erase" works the same way in Single and Serial mode.

* ASCII and HEX Textboxes

The ASCII box displays all the track data unparsed, including the sentinels, checksum, and errors. Characters with parity errors are displayed as "¤". The HEX box displays the raw data received from the MSR206 in HEX format. Each two-digit HEX code represents one byte.

* Reset MSR

This button will send a command to the MSR206 to reset it to its initial ready state. It will abort any command currently in process.

* Abort

This button is used to abort a read, write, or erase command.

* Slot Controls

The program can hold in memory up to 1,000 different sets of track data, or dumps, each in its own "slot". This allows you to easily switch between different dumps without having to load a file or swipe a card each time. It also makes reading or writing batches possible. The lowest numbered slot is 1 and it is always there. The highest possible slot number is 1,000.
You can see a list of all available slots and select one from the dropdown box. The "+" and "-" buttons let you move forward or backwards through the slots
one by one. The "Add" buttons lets you add new slots, either 1 or 10 at a time. The program starts up with only one slot by default. The "Del" button will let you delete a slot. When you delete a slot the data from all higher numbered slots will be automatically moved one back. For example, if you have 5 slots and you delete slot 3, the data from 4 will be moved to 3, the data from 5 will be moved to 4, and slot 5 will be removed from the list.

"Settings" Tab

* Com Port

This was already covered under "Setting It Up". Choose your com port and press "Set Port".

* Leading Zeros

This is to set the number of zeros written at the beginning of each track before the actual data starts. The zeros serve as a kind of header for the magstripe reader to prepare it for reading the data that is to follow. The "Defaults" button fills the textboxes with the standard values; 61 for tracks 1 and 3, and 22 for track 2. "Set" sends a command to the MSR206 to change these values to the numbers you specify in the boxes and "Check Current Settings" displays the values that the MSR206 is currently set to.

* Set Track 2 Density

Use this to set the density of the data to be written to track 2; 75 bits per inch or 210 bits per inch. The standard is 75BPI.

* MSR206 MSR606 Information

Click "Model Number" to find out which model number of MSR206 you have and also which tracks are supported. "Firmware Version" will tell you the version of the internal software the MSR206 is running.

* Track Settings

These settings determine how data will be encoded/decoded for each track. There are two character sets: 4 bits per character set (16 characters) which contains only numbers and a few symbols, and a 6-bit set (64 characters) which has the entire alphabet, numbers, symbols and punctuation. There are three parity settings: Odd, Even and None. If you choose odd or even, each character will have an extra bit added to it. The extra bit's value is determined by what is needed to make the total number of 1's in the byte odd or even, depending on the parity type. For example, if your byte was "101110" and you chose odd parity, the parity bit added would be "1" because that would make a total of five 1's, which is an odd number. The start and end sentinels are the characters used to mark the start and end of each track. The three "Card Types" buttons automatically set all the track settings to those formats.
Oct 14, 2023
* LED Test

This is pretty self-explanatory. Use these buttons to test all the lights on the MSR206.

* Batch File Format

This lets you configure the program to read your batch text files. The "Example" box shows you how your text files should be formatted so they can be read correctly.

"License/ID" Tab

Fill in all the information of your license or ID and click the "Generate Tracks" button and it will build three tracks and put them in the track boxes on the "Actions" tab so you can write them to a card. The "Import Data" button does the opposite. It will pick out ID data from the track boxes on the "Actions" tab and fill in all the personal information fields on the "License/ID" tab.

All the information for encoding license/ID tracks was obtained from the "AAMVA National Standard for the Driver License/Identification Card" document.

I didn't include every state on my list. I only put down the states that I have the Issuer Identification Number (IIN) for. That's a six digit number that starts with "636" that identifies the state and is the first entry on track 2. I'm not sure if all the states I included even follow the AAMVA standard.

Since I only had the AAMVA document to go by I can't guarantee that the encodings will be 100% accurate. As I get more scans of real ID's I'll be able to determine the format better and I'll make improvements to the program.

"Bank Card" Tab

When you read a bank card the program automatically gathers and formats all the available data and displays it in the text fields on the "Bank Card" tab. Customer name, account number and expiration date are read directly from the tracks. If the account number prefix matches any of the prefixes in the included database file ("bins.txt") the bank name will also be displayed. The account number is also run through the "Mod 10" formula to see if it's a valid number. The "Check Bank & Mod 10" button lets you check a manually typed in account number for the bank name and validity.

"Reconstruct" Tab

This feature is useful for recovering some or all of the data from damaged magstripes. When you read a card, all tracks that have errors are automatically sent to this tab.

* Track

Use these buttons to select which track you want to display and edit. When you select a track number the "Bits Per Character" button currently chosen for that track will automatically be selected and there will be a number of gray textboxes below equal to the number of bits per character. Each textbox should fill with a different variation of the track data and they should all be about the same length. Look at each textbox and try to determine where the valid data is. It may all be in one box or it may be spread out between two or more boxes depending on the type of damage to the magstripe. You can copy the valid data from the gray textboxes and paste it into the white textbox at the bottom and then copy it from there back to the textbox for that track on the "Actions" tab.

I'll try to explain the idea behind this function and how it works. First, when you read a card, the program tells the MSR206 to send back only a raw binary dump of the tracks; no formatting is done to it at all. Then the program itself formats the binary data by dividing groups of bits into separate bytes. The MSR206 has four settings for the number of bits used to represent each character: 4, 5, 6 and 7. There are actually only two different character sets: a 4 bits per character set (16 characters) which contains only numbers and a few symbols, and a 6-bit set (64 characters) which has the entire alphabet, numbers, symbols and punctuation. The 5 and 7 bit sets are just the 4 and 6 bit sets with a parity bit added to each byte for error detection.

When a magstripe is damaged some of the bits become unreadable. So if your original data was: "111111 000000 101010 111000" and two of the bits got damaged, so it's now: "111111 000??0 101010 111000" the MSR206 may interpret the numbers following the damaged bits as if they were the missing bits and now everything is shifted over two bits like this: "111111 000010 101011 1000..." and every byte after the damaged spot is incorrect. If you add two bits to the beginning of the data it will shift all the bits after the damaged spot back into the right place so they can be read correctly, but now all the bits before the damaged spot are shifted out of place.

There's no way for the computer to determine which bits are shifted out of place because it doesn't know where the damage is and doesn't have the intelligence to identify the valid data. So, the program displays all possible variations of the tracks, each one shifted one bit more than the previous, and relies on the user to distinguish the valid data from the garbage and reconstruct the track.

* Bits Per Character

These buttons let you select how the binary data is divided into bytes, from 4 bits per byte to 7. If you can't find anything that looks like valid data try changing the number of bits per character and see if anything shows up.
Oct 14, 2023
* Copy

This button copies the text in the white textbox to the corresponding track's textbox on the "Actions" tab.

State License/ID Format Scripts

Each state must have its own custom script file in order to be able to encode license/ID tracks for that state. When the program is loaded it finds all the "*.idf" files that are in the same directory as the program and adds all the state names to the "State" dropdown menu on the "License/ID" tab for you to choose from. These instructions should allow you to be able to create or modify your own license/ID format scripts. It helps if you refer to the included California script as you're reading about the commands so you can see exactly how they're implemented. I used capitalization in my CA script to make it easier to read but none of the commands are case-sensitive so capitalization is not necessary. The scripts are regular text files but their file extension must be ".idf".

Command: state abbreviation
Example: %CA
Description: The first line of the script file must always contain the "%" sign followed by the two letter state abbreviation. The program reads this text and adds it to the "State" dropdown menu. If your script doesn't start with this line it won't be available in the program.

Command: track
Example: :track1
Description: Each track must be started off with ":track#", where "#" is the number of the track. All the data that follows up to the next "track" command applies to that track.

Command: # (field designator)
Example: #4
Description: Each track is broken down into several fields. Each field has a different name to identify it and can have different properties. Every field must be identified by the "#" sign followed by a number. The number determines the field's position in the track in relation to the other fields. The first field must be "#1".

Command: ## (subfield designator)
Example: ##2
Description: A field can be made up of multiple subfields. For example, the "NAME" field can contain three subfields for "LAST", "FIRST" and "MIDDLE". Each subfield must be identified by "##" followed by a number. The first subfield of any field must be "##1".

The properties of each field or subfield are set by using several commands which are placed on the lines following the "#" or "##" line. Each command must be preceded by a "*" and be on its own line. Most commands are followed by an "=" sign and then the parameters for that command. The order the commands are listed is not important. Following is a list of all the valid commands and their functions:

Command: name
Example: *name = CITY
Description: All fields and subfields must be given a name. All the standard ID fields such as NAME, ADDRESS, DOB, etc. have preset names that you must use so the program can recognize them and associate them with the proper fields on the "License/ID" tab. Any additional field not recognized by the program can be given any name you want as long as it's different from the preset names. Following are all the names of the preset fields and subfields:

Oct 14, 2023
Command: trackmaxlen
Example: *trackmaxlen = 82
Description: This command sets the maximum number of characters allowed for the track. If the length of the track goes over this amount it will be truncated.

Command: fixedlen
Example: *fixedlen = 8
Description: If this command is used the field length will contain a fixed number of characters that you specify. If the data to be used for this field contains fewer characters than the field's fixed length, spaces will be added to make it the correct length.

Command: vmax
Example: *vmax = 29
Description: This command is for variable length fields. The field can be of any length as long as the number of characters is less than or equal to the "vmax" value. When this command is used, you must also use the "fieldsep" command in order to mark the end of the field.

Command: fieldsep
Example: *fieldsep = ^
Description: This command must be used whenver you use the "vmax" command. Enter the character that will be used to mark the end of the variable length field. If the number of characters in the variable length field is equal to the field's maximum allowed length no field separator will be added. For example, for a variable length field with a maximum length of 8 characters and "^" as the field separator, "CAR" would be changed to "CAR^", "GASOLINE" would be left as "GASOLINE" and "AUTOMOBILE" would be truncated to "AUTOMOBI".

Command: subfieldsep
Example: *subfieldsep = $
Description: This sets the character to be used to separate the subfields of a field. For example, the "ADDRESS" field contains the subfields "ADDRESS1" and "ADDRESS2". If you set the subfield separator character for "ADDRESS1" to "$" that character will be placed directly in between the two subfields. You must include the "subfieldsep" command in each subfield that needs to be separated from the next one. The last subfield of a field doesn't require a subfield separator because there is no subfield after it that it needs to be separated from. If the field that the subfields are under contains a "fieldsep" command, the field separator character will be added immediately after the last subfield.

Command: text
Example: *text = "636014"
Description: If a field contains text that never changes you can use the "text" command. For example, the Issuer Identification Number (IIN) for any state is always the same number and written to the same spot at the start of track 2. To set California's IIN, you would use this command in the first field on track 2:

*text = "636014"

Only the text inside the quotation marks is used. The quotation marks are used to identify the start and end of the text. If you want to include the quotation marks symbol in your text use the "~" character instead and the program will convert it.

Command: optional
Example: *optional
Description: All fields are assumed to be mandatory by default. If you want a field to be optional you must include the "*optional" command. If no data is entered into a field that has been set to optional the program will disregard the whole field and not include it when encoding. So variable length fields, including the field separator character, will be excluded and even fixed length fields will be excluded as well.

Also, if a subfield that has been set to optional contains no data the subfield separator character will not be placed after the previous subfield. For example, let's say the "NAME" field contains the subfields "LAST", "FIRST" and "MIDDLE" and the subfield separator for the first two subfields is set to "$". If you enter "ADAMS" and "JOHN" as the last and first names, but do not enter a middle name, and the "MIDDLE" subfield is set to optional, the program will format it like this: "ADAMS$JOHN". However, if "MIDDLE" was not set to optional the program would format it like this: "ADAMS$JOHN$".

Command: overflow
Example: *overflow = OVERFLOW1
Description: Sometimes a field will have a maximum length but if the data excedes that maximum there is an overflow area on another part of the track which can hold the extra characters. To use this command you must include the name of the field where the extra characters should be sent. For example, let's say you name field 2 on track 2 "LICNUM" and set the maximum length to 13 characters. Also, you include the command "*overflow = OVERFLOW1" in field 2. Then, you go on to add fields 3 - 5 to your script. When you get to field 6 you type the command "*name = OVERFLOW1". Since that matches the name you chose in the "overflow" command the program knows to put all the extra characters in field 6. So, if your license number is "1234567890987654321", field 2 will have "1234567890987" and field 6 will have "654321".

Oct 14, 2023
Command: expcodedefault
Example: *expcodedefault = 99
Description: Some license formats use a special two digit code to describe a certain expiration date scheme. The codes are 77, 88 and 99. For example, California uses code 99 and replaces the birth month on track 2 with that number. If your license format uses one of these codes you must include the "expcodedefault" command somewhere in your script. The valid choices are "77", "88", "99" and "none". You can set the value to "none" if you want but it's not necessary. If you do not include this command in your script the value will be set to "none" by default.

Command: expcode
Example: *expcode
Description: If you used the "expcodedefault" command to set the expiration code to anything besides "none" you can use this command to tell the program where to place it. If you place the "expcode" command in a field that normally contains other data, such as "DOBMONTH", it will override and replace any text that would otherwise have been in that field. For example, California's format replaces the birth month field with code 99. So, in the "DOBMONTH" field you'd have to include the "expcode" command. If the expiration code is set to "none" the "expcode" command does nothing.

Command: rndchr
Example: *rndchr = 11
Description: Use this command to include randomly generated characters. For example, California has an 11 character security string at the end of track 3 so to add a fake security string you would use the command "*rndchr = 11". If you use this command on track 2 the random characters will consist only of the digits 0 - 9.

Command: remark statement
Example: 'this is a remark statement
Description: Anywhere in the script the program finds a "'" character it will ignore it and all text after it on that line. You can use this to write helpful notes.

That's it. Enjoy!