NOTE this is a copyrighted explanantion - please do not post copies (either in part or in whole) on other forums. Otherwise you will spoil it for all!!!
Now follows some basic info on how the RH/XV system works, put here for educational value, and worked out through observation and reading of unencrypted files.
XV/RH are broadcast unencrypted and use UK digital teletext (MHEG) to mask the services so that a PIN is required to view. With the right equipment, usually a PC DTT card, it is possible to read the MHEG stream and extract the numbers used to create a Viewer ID from a PIN, and thus be able to recreate a PIN for any Viewer ID (the number on the screen)
This post is NOT about how to obtain the files, nor how to enter any numbers in any "keygen" or other program
----
How the system works. The MHG tells the box to create a 4 digit PIN (using a RND function), and then using numbers in the file converts this to another 4-digit code which is the middle of the viewerID, its these Active Digits I will show you how to use to recreate a PIN. The 7 digit ViewerID is simply two date digits (a week number 0..3 and day number 0..6) followed by the 4 active digits, and finally a checksum.
The values used are from the vcg.mhg file and are labelled "internal reference 21" to "internal reference 31" (I'll call them ref21 .. ref31 for ease.
ref21 & ref 22 contain the first two digits of the ViewerID (so called month and week digits)
ref23 contains the algorithm instruction. Prior to June 1st this has always been a 3 digit number comprising of 1-3 e.g. 211, 321, or 133, but recently we have seen 4-digit numbers starting (e.g. 1231). This relates to the following three (or four) internal references. e.g. ref24, ref25, ref26. The remaing internal references currentlly have no effect.
Now to the meaning of numbers in ref23
A "1" states that it will be a 9 digit code where the numbers 0123456789 appear but once. This will be referred to a as a Look-up Table (or LUT) . There are 10 numbers in 1234567890, and so the LUT is completed by adding the missing digit to the end (making a 10-digit LUT)
A "2" states that it will be a 4 digit code where the numbers 1234 each appear only once. This describes the PIN Order when referring to the Active Digits of the VID.
A "3" states that it will be a 4 digit code that is used to manipulate (shift to the right) the LUT along.
Each number is done in turn and you can easily work it out on paper - thats where the fun is and I urge you to do it yourselves.
As an example take 1st June's codes
23 = 123
24 = 674508923
25 = 1243
26 = 1795
First the "1" (and use ref24)
We create a LUT by reordering ref24 into 01234... order (we do both rows to keep it the same e.g. look-up 5 then 4 on both sides - you'll get 3 then 2)
0123456789 => 4978230156
6745089231 => 0123456789
Next the "2" (and use ref25)
A "2" in ref23 dictates that a pin rotate is to be used. So if you have a VID of 0112341 instead of 1234 relating directly to 1234 of the PIN the digits need to be swopped, so the "2" may relate to the first, 2nd, 3rd or 4th pin digit. The number in the file vcg.mhg is not the pin order, to get that you need to do a reverse look-up
For example 10th May ref23 was 211, and ref24 was 4132, so we use this to find the pin order.
4132 => 1 2 3 4
1234 => 2 4 3 1
(SAME process as for LUT!!)
So for our example this is 1243
1243 => 1 2 3 4
1234 => 1 2 4 3
So ion this case it ends up the same number! Usually not the case
Next the "3" (and ref26)
This is a four digiti number saying how to shift right the LUT for each pin digit
4978230156 (shift 1)
4978230156 (shift 7)
4978230156 (shift 9)
4978230156 (shift 5)
Don't forget the pin order 1243 above. May as well do this now (so 1795 becomes 1759 - AND the numbers we look-up at the end is 1243)
0123456789 ======== 0123456789
============ = =============
4978230156 (shift 1) => 6497823015
4978230156 (shift 7) => 8230156497
4978230156 (shift 5) => 3015649782
4978230156 (shift 9) => 9782301564
So what of our viewerID 0012340?
read 1 off the 1st row = 4
read 2 off the 2nd row = 3
read 4 off the 3rd row = 6
read 3 off the 4th row = 2
Can you read off 0024680? Should be 9181
Do you understand?
Create tables from
23 = 123
24 = 210459876
25 = 1324
26 = 2074
and check
0112341 = 5802
0124681 = 2533
++++++++++++++++++++++++++++++++++++++
PLEASE DONT POST HERE ASKING FOR SOFTWARE OR SOLUTIONS TO ANY ONE CURRENT VIEWERID
++++++++++++++++++++++++++++++++++++++
Further examples are given in the posts below
Now follows some basic info on how the RH/XV system works, put here for educational value, and worked out through observation and reading of unencrypted files.
XV/RH are broadcast unencrypted and use UK digital teletext (MHEG) to mask the services so that a PIN is required to view. With the right equipment, usually a PC DTT card, it is possible to read the MHEG stream and extract the numbers used to create a Viewer ID from a PIN, and thus be able to recreate a PIN for any Viewer ID (the number on the screen)
This post is NOT about how to obtain the files, nor how to enter any numbers in any "keygen" or other program
----
How the system works. The MHG tells the box to create a 4 digit PIN (using a RND function), and then using numbers in the file converts this to another 4-digit code which is the middle of the viewerID, its these Active Digits I will show you how to use to recreate a PIN. The 7 digit ViewerID is simply two date digits (a week number 0..3 and day number 0..6) followed by the 4 active digits, and finally a checksum.
The values used are from the vcg.mhg file and are labelled "internal reference 21" to "internal reference 31" (I'll call them ref21 .. ref31 for ease.
ref21 & ref 22 contain the first two digits of the ViewerID (so called month and week digits)
ref23 contains the algorithm instruction. Prior to June 1st this has always been a 3 digit number comprising of 1-3 e.g. 211, 321, or 133, but recently we have seen 4-digit numbers starting (e.g. 1231). This relates to the following three (or four) internal references. e.g. ref24, ref25, ref26. The remaing internal references currentlly have no effect.
Now to the meaning of numbers in ref23
A "1" states that it will be a 9 digit code where the numbers 0123456789 appear but once. This will be referred to a as a Look-up Table (or LUT) . There are 10 numbers in 1234567890, and so the LUT is completed by adding the missing digit to the end (making a 10-digit LUT)
A "2" states that it will be a 4 digit code where the numbers 1234 each appear only once. This describes the PIN Order when referring to the Active Digits of the VID.
A "3" states that it will be a 4 digit code that is used to manipulate (shift to the right) the LUT along.
Each number is done in turn and you can easily work it out on paper - thats where the fun is and I urge you to do it yourselves.
As an example take 1st June's codes
23 = 123
24 = 674508923
25 = 1243
26 = 1795
First the "1" (and use ref24)
We create a LUT by reordering ref24 into 01234... order (we do both rows to keep it the same e.g. look-up 5 then 4 on both sides - you'll get 3 then 2)
0123456789 => 4978230156
6745089231 => 0123456789
Next the "2" (and use ref25)
A "2" in ref23 dictates that a pin rotate is to be used. So if you have a VID of 0112341 instead of 1234 relating directly to 1234 of the PIN the digits need to be swopped, so the "2" may relate to the first, 2nd, 3rd or 4th pin digit. The number in the file vcg.mhg is not the pin order, to get that you need to do a reverse look-up
For example 10th May ref23 was 211, and ref24 was 4132, so we use this to find the pin order.
4132 => 1 2 3 4
1234 => 2 4 3 1
(SAME process as for LUT!!)
So for our example this is 1243
1243 => 1 2 3 4
1234 => 1 2 4 3
So ion this case it ends up the same number! Usually not the case
Next the "3" (and ref26)
This is a four digiti number saying how to shift right the LUT for each pin digit
4978230156 (shift 1)
4978230156 (shift 7)
4978230156 (shift 9)
4978230156 (shift 5)
Don't forget the pin order 1243 above. May as well do this now (so 1795 becomes 1759 - AND the numbers we look-up at the end is 1243)
0123456789 ======== 0123456789
============ = =============
4978230156 (shift 1) => 6497823015
4978230156 (shift 7) => 8230156497
4978230156 (shift 5) => 3015649782
4978230156 (shift 9) => 9782301564
So what of our viewerID 0012340?
read 1 off the 1st row = 4
read 2 off the 2nd row = 3
read 4 off the 3rd row = 6
read 3 off the 4th row = 2
Can you read off 0024680? Should be 9181
Do you understand?
Create tables from
23 = 123
24 = 210459876
25 = 1324
26 = 2074
and check
0112341 = 5802
0124681 = 2533
++++++++++++++++++++++++++++++++++++++
PLEASE DONT POST HERE ASKING FOR SOFTWARE OR SOLUTIONS TO ANY ONE CURRENT VIEWERID
++++++++++++++++++++++++++++++++++++++
Further examples are given in the posts below