Merci Merci:  3
Likes Likes:  0
Dislikes Dislikes:  0
Affiche les résultats de 1 à 2 sur 2

Sujet : mosc 9.x


  1. #1
    DZSatien Confirmé
    Inscrit
    Oct 2007
    Âge
    37
    Messages
    72
    Remerciement / J'aime

    mosc 9.x

    Tout le monde sait que les v9.1 françaises existent pour la diffusion TNT et TVoDSL.

    En Espagne, nous savons qu'il existe des v9 qui fonctionnent pour le contrôle d'accès dit Carmaguedon appelé aussi Seca3 qui est du seca2 tunellé/encapsulé dans du Nagra2.

    Ci-dessous les ATR des différentes v9.x :

    Espagnole v9.0 : ATR= 3B F7 11 00 01 4096 30 32 09 0E 6C B6 D6
    Française TNT v9.1 : ATR= 3B F7 11 00 01 40 96 70 71 19 0E 6C B6 D6
    Française NeufTel. v9.0 :ATR= 3B F7 11 00 01 40 96 70 71 09 0E 6C B6 D6
    Française Canalsatdsl 7.6 : ATR= 3B F7 11 00 01 40 96 70 70 67 0E 6C B6 D6


    On sait que les v9.0 espagnoles ont été vraisemblablement dumpées de l'autre côté des Pyrénées et il est fort à parier que les v9.0 espagnole utilisent le même micro que les v9.x françaises donc il serait bien de se pencher sur les données qui ont été publiées concernant les possibilités de dumper ces cartes notamment en VCC !

    Je tiens à préciser que les v9.x françaises sont des cartes pure Seca Médiaguard v1+ (Seca2) et non du Seca 3 espagnol pour preuve, les ECMs ne se ressemblent pas du tout.

    ECMs pour v9.0 Seca3 espagnoles :


    Code:
    C1 3C 01 0E 57 07 55 41 01 86 00 08 54 A1 7B 2D 82 D6 EA 84 4D D8 9F FE 9C B5 76 B2 81 84 A5 AE 77 C7 0D FB 8E 37 23 66 30 34 1F 7F 33 AA 05 1D 0C 51 20 6B DB 69 0A C5 C7 62 E2 A3 C8 92 B0 C7 04 B7 4F 98 23 3C 7C 0B A4 D9 B2 53 39 90 37 70 16 9D F3 B7 90 08 A7 AC FB 93 6A 2DAbsence de la table de hash
    Absence de P3 et P4
    LEN atypique # Seca2


    ECMs pour v9.x Seca2 françaises :


    Code:
    Header:C1 3C 01 BE 73
    3C 10 01 C7 6D 16 6D FC 63 85 56 18 E2 B1 18 2C 40 8C 4F CE CD 9E 4D 3C A9 54 5E F6 8D F5 29 89 3F 77 13 EC CE 60 9D 27 02 DE 48 69 B5 98 8B F6 56 5B 3D C1 94 BB F2 9E C5 C7 10 BF 3D D4 6A 76 3B 1C 4A 46 77 53 DB BC A5 38 EB 2B 2A AD B0 DD 58 2E 96 5A 30 29 93 8B A3 80 52 66 ED 2D E4 48 62 09 76 B4 D6 94 37 C3 F3 F4 22 8F C3 76 9C 4E B1 5C F9 BF
    Status:90 00
    Comme vous pouvez le constater, dans l'ECM française, les fondamentaux Seca2 sont restés. Utilisation de la table de hash Bx octet de poids fort de P2, clef 0E octet de poids faible P2 avec un changement en ce qui concerne la longueur de la trame qui est égale à 73 (hex) soit 115 (dec) et non plus 3C (hex) soit 60 (dec) comme en Seca2. P3 (10) et P4 (01) pour l'appel RSA sont toujours en place.

    Les providers Seca2 v9.x français sont les suivants :

    Sur les cartes pour la TNT

    ID 0156 CANAL+
    ID 0157 CANALSAT
    ID 0158 SPARE A
    ID 0159 SPARE B
    ID 015A CANALSAT2

    Sur les cartes pour la TVoDSL Neuf Telecom

    ID 0140 9TELECOM1
    ID 0141 9TELECOM2
    ID 0142 9TELECOM3
    ID 0143 9TELECOM4
    ID 0144 9TELECOM5
    ID 0145 9TELECOM6

    Sur les cartes pour la TVoDSL CANALSATDSL (v7.6 à l'image des cartes MCT et TopUpTv. Celles-ci sont dumpables comme les v7.1a, v7.1b avec des pts de glitch différents)

    ID 00A8 CANALSATDSL
    ID 00A9 CANAL+
    ID 00AA SPAREDSL

    Moyens d'attaquer les v9.x françaises.

    Les Espagnols ont vraisemblablement fait évoluer leur unlooper. Les modifications à porter sont les suivantes :


    Code:
    Inside VQ44
    Outside PLCC44



    39 38 37 36 35 34 33 32 31 30 29
    33 32 31 30 29 28 27 26 25 24 23
    40 34 22
    41 35 21 27
    42 36 20 26
    43 37 19 25
    44 38 18 24
    01 39 17 23
    02 40 16 22
    03 41 15 21
    04 42 14 20
    05 43 13 19
    06 44 12 18
    01 02 03 04 05 06 07 08 09 10 11
    07 08 09 10 11 12 13 14 15 16 17


    (CPLD)
    VQ44 PLCC44 KT Components

    At Clock 2 8 5 - 7474 Xtal - Atmel
    Clock On/Off 7 13 13 - 7474 6 - 74HC53 (Mul Vcc U7) Glitch Enable
    Clock/4 3 9 9 - 7474 9 - 74HC53 (Mul Clk U6) Clk/4
    Vcc Glitch 6 12 1 - 7400 Glitch On
    100 MHz 43 5L'U1 Mod en VCC est un nouveau mod base sur l'U1 commercial et il permet de faire des glitches VCC mais retire la possibilité de faire des glitches CLK.

    Dans le cas du U1 Mod Vcc le circuit de CLK est pris en charge par la CPLD et dans le cas du KT Mod , T911 , et TE-43 le circuit le prend en charge par le 74HC00 ( Portes NAND ) mais au final, le résultat est le même, la possibilité de faire des Glitches de Vcc.

    Dans le cas des modèles antérieurs, la précision des glitches était aux alentours de 54 nseg , plus petite valeur de Glitch possible.

    Avantage de l'U1 Mod Vcc :

    Une précision théorique de 5 nseg dans le Glitch On qui en pratique était aux alentours de 10 nseg et il s'agit de la durée minimale pour faire un Glitch. Vous imaginez qu'avec ce degré de précision, on peut faire pas mal de chosesas, programmation de la CPLD à d'autres niveaux et durée du signal de Glitch.

    Les scripts de tests VCC


    Code:
    ' Script de Test pour carte seca.
    ' Il est nécessaire de l'exécuter avec le KT Mod de Penga et No1b4me.
    ' Certaines parties du script sont des copier/coller d'autres scripts,
    ' merci aux créateurs de ce script donc.
    ' Le reste du code a été implémenté par
    ' Zyxel ;)

    '************************************************* ***********************************************
    'Déclaration des variables globales
    '************************************************* ***********************************************
    Option Explicit
    Dim DecVcc
    Dim GPRLen,GPRLen0,GPPLen
    Dim GPR(300)
    Dim i,j
    Dim ByteATR
    Dim GetATR
    Dim Delay
    Dim DelayI
    Dim INS
    Dim INSII
    Dim MsgPrompt
    Dim MenuChoice
    Dim ok
    Dim temp
    Dim tempII
    Dim rep
    Dim Cont
    Dim chkINS
    Dim VccLimitUP
    Dim VccLimitDW
    Const ScriptName=" Test V9 Beta Glitcher "
    Const ScriptVer= " Version v2.0 "
    Sc.Print "---------------------------------------------------------" & vbcr
    Sc.Print "--------------- Fichier: Test V9 Beta Glitcher.xvb ------" & vbcr
    Sc.Print "--------------- Script Beta de Test ---------------------" & vbcr
    Sc.Print "--------------- Version : v2.0 --------------------------" & vbcr
    Sc.Print "--------------- Date : 12-08-05 -------------------------" & vbcr
    Sc.Print "--------------- By Zyxel --------------------------------" & vbcr & vbcr

    Sc.Print "----------------- Mise à jour des paramètres Winexplorer --------------------" & vbcr & vbcr
    Wx.BaudRate=115200
    Wx.ResetBaudRate=115200
    Wx.ResetDelay=200
    Wx.ByteDelay=0
    Wx.RxByteTimeout=300
    Wx.Parity=0
    Wx.StopBits=0
    Wx.FlushBeforeWrite=1
    Wx.FlushEchoByte=0
    Wx.DTRControl=0
    Wx.RTSControl=1
    Wx.ResetMode=2
    Wx.IgnoreTimeouts=1
    Wx.ResetAfterTimeout=0
    Wx.ResetLine=1
    Wx.LogTransactions=0
    Wx.DisplayUSW=0
    Wx.DisplayFuse=0
    Wx.ByteConvention=1

    '************************************************* ***********************************************
    'Routine principale
    '************************************************* ***********************************************
    Sub Main()

    Sc.Verbose = 1
    If Sc.Version < 5.0 Then
    ErrorString = "Version v5.0 de Winexplorer minimum nécessaire pour exécuter ce script"
    Sc.MsgBox ErrorString, vbCritical
    Err.Raise 1050, , ErrorString
    End If
    Sc.Print vbcr & "Date: " & Date()& " Time: " & Time () & vbcr
    Do
    MsgPrompt="Test V9 Beta Glitcher"
    MenuChoice=Sc.ButtonBox(MsgPrompt,vbDefaultButton1 +vbInformation,Date()& ScriptName + ScriptVer + " Menu : ","Lecture de l'ATR","Glitch VCC","Exit")
    Select Case MenuChoice
    Case 1: ReadATR()
    Case 2: Glitch_VCC()
    End Select
    Sc.Write("020200")
    Sc.Delay(100)
    If Sc.BytesInBuffer > 1 then
    Sc.Read(&h02)
    End if
    Sc.Write("A0")
    Loop Until MenuChoice=3
    End Sub
    '************************************************* ***********************************************
    'Routine de glitch VCC
    '************************************************* ***********************************************
    Sub Glitch_VCC()
    MsgPrompt="Modulo de Glitch de Vcc"
    MenuChoice=Sc.ButtonBox(MsgPrompt,vbDefaultButton1 +vbInformation," Menu : ","Glitch C10E","Glitch C11200","Glitch C11201","Glitch ATR","Retour")
    Select Case MenuChoice
    Case 1:
    INS="C10E000038"
    Delay=&h0110
    DelayI=&h0650
    rep=2
    chkINS=0
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchPacket()
    Case 2:
    INS="C112000038"
    Delay=&h0110
    DelayI=&h0650
    rep=2
    chkINS=1
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchPacket()
    Case 3:

    INS="C112010038"
    Delay=&h0110
    DelayI=&h0650
    rep=2
    chkINS=1
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchPacket()
    Case 4:
    Delay=&h0030
    DelayI=&h0150
    rep=2
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchATR()
    Case 5:
    Call Main()
    End Select
    Call Main()
    End Sub
    '************************************************* ***********************************************
    'Routine ATR
    '************************************************* ***********************************************
    Sub ReadATR()
    Sc.Verbose=0
    Sc.Write("A1")
    sc.delay(100)
    GetATR = False

    Do While GetATR=False
    Sc.Write("07 10 0e 06 01 03 8F 00")
    Sc.Delay(80)
    Sc.Read(2)
    GPPLen = Sc.GetByte(0)
    GPRLen = Sc.GetByte(1)
    If GPRLen >0 Then Sc.Read (GPRLen)
    i=0
    Do While (GPRLen >i)
    GPR(i)= Sc.GetByte(i)
    i=i+1
    Loop
    Sc.Print vbcr
    For i=0 to GPRLen-1
    Sc.Print (HexInv(GPR(i),2) & " ")
    Next
    if GPRLen>&h01 then
    ByteATR= Sc.GetByte(1)
    end if

    If (ByteATR = 16 ) Then
    GetATR = True
    Sc.Print (": 16 Octets de l'ATR" & vbcr & vbcr)
    Else
    GetATR = False
    End If
    Loop
    End Sub
    '************************************************* ***********************************************
    'Routine Glitch Packet VCC
    '************************************************* ***********************************************
    Sub GlitchPacket()
    Dim GlitchType
    Dim Vcc
    Dim a
    Dim b
    Dim c
    Dim DelayII
    Dim DelayIII
    dim j
    DelayIII=Delay
    Vcc=VccLimitUp
    Cont = 1
    DelayII=&H000A

    Do Until Int(Cont)=Int(rep)

    Sc.Verbose=0
    a=b=c=""
    GetATR=False

    Do Until GetATR=True
    Sc.Write("07 10 0e 06 01 03 8F 00")
    Sc.Delay(80)
    Sc.Read(2)
    GPPLen = Sc.GetByte(0)
    GPRLen = Sc.GetByte(1)
    if GPRLen>0 then
    Sc.Read(GPRLen)
    end if
    If (GPRLen = 16 ) Then
    GetATR = True
    Else
    GetATR = False
    End If
    Loop


    GlitchType=INT(RND*&h06)+&h04
    DecVcc=((Vcc*5)/255)
    sc.flush()
    Sc.Write("B0" & Hexstring(Vcc,2))
    sc.delay(20)
    Sc.Write("10 10 0E 03 A4" & SendSeca(INS) & " 80 20" & HexString(Delay,4)& Hexstring(GlitchType,2)& "60 3A")
    GPRLen=0
    sc.delay 250
    i=0
    j=0
    while (Sc.BytesInBuffer >0 and i< 1024)
    GPRLen0=Sc.BytesInBuffer
    GPRLen=GPRLen+GPRLen0
    If GPRLen0>0 Then Sc.Read(GPRLen0)
    j=j+1
    Do While (GPRLen0>i)
    GPR(i)=Sc.GetByte(i)
    i=i+1
    Loop
    wend
    Sc.Print vbcr
    For i=2 to GPRLen-1
    Sc.Print (HexInv(GPR(i),2) & " ")
    Next

    if GPRLen>&h03 then
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & vbcr & "Vcc Appliquée : " & Hexstring(Vcc,2) & " Decimal : " & DecVcc & " Type de Glitch : " & Hexstring(Glitchtype,2) & " Delay : &h20" & Hexstring(Delay,4)& vbcr & vbcr & "INS envoyée : " & INS & " Cycle actuel: " & Cont & " Cycle maximum: " & Rep & Vbcr & vbcr )
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    end if

    if chkins=False then
    if GPRLen>&h30 then
    a=SC.GetByte(11)
    b=SC.GetByte(12)
    c=SC.GetByte(13)
    if a <>&h00 or b <>&h00 or c <>&h00 then
    ok=msgbox("Glitchée",vbinformation,"Test V9 Beta Glitcher")
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & "----------------------------------------- Glitchée ------------------------------------------" & vbcr)
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    end if
    end if
    end if

    if chkins=True then
    if GPRLen>&h30 then
    a=SC.GetByte(29)
    b=SC.GetByte(30)
    c=SC.GetByte(31)
    if a <>&h00 or b <>&h00 or c <>&h00 then
    ok=msgbox("Glitchée",vbinformation,"Test V9 Beta Glitcher")
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & "----------------------------------------- Glitchée ------------------------------------------" & vbcr)
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    end if
    end if
    end if


    If Hexstring(Delay,4)=Hexstring(DelayI,4) then
    Delay=DelayIII
    Cont = Cont+1
    end if
    If Hexstring(Vcc,2)=Hexstring(VccLimitDw,2) then
    Vcc=VccLimitUp
    Delay=Delay +&h02
    end if
    Vcc=Vcc-&h01


    Loop
    ok=Sc.MsgBox("Fin", vbInformation,"Test V9 Beta Glitcher")

    End Sub
    '************************************************* ***********************************************
    'Routine Glitch ATR VCC
    '************************************************* ***********************************************
    Sub GlitchATR()
    Dim GlitchType
    Dim Vcc
    Dim a
    Dim b
    Dim c
    Dim DelayII
    Dim DelayIII
    dim j
    DelayIII=Delay
    Vcc=VccLimitUp
    Cont = 1
    DelayII=&H000A

    Do Until Int(Cont)=Int(rep)

    Sc.Verbose=0

    GlitchType=INT(RND*&h06)+&h04
    DecVcc=((Vcc*5)/255)
    sc.flush()
    Sc.Write("B0" & Hexstring(Vcc,2))
    sc.delay(20)
    Sc.Write("0B 10 0E 06 01 03 20" & HexString(Delay,4)& Hexstring(GlitchType,2)& "60 3A")
    GPRLen=0
    sc.delay 120
    i=0
    j=0
    while (Sc.BytesInBuffer >0 and i< 1024)
    GPRLen0=Sc.BytesInBuffer
    GPRLen=GPRLen+GPRLen0
    If GPRLen0>0 Then Sc.Read(GPRLen0)
    j=j+1
    Do While (GPRLen0>i)
    GPR(i)=Sc.GetByte(i)
    i=i+1
    Loop
    wend
    Sc.Print vbcr
    For i=2 to GPRLen-1
    Sc.Print (HexInv(GPR(i),2) & " ")
    Next

    if GPRLen>&h03 then
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & vbcr & "Vcc Appliquée : " & Hexstring(Vcc,2) & " Decimal : " & DecVcc & " Type de Glitch : " & Hexstring(Glitchtype,2) & " Delay : &h20" & Hexstring(Delay,4)& vbcr & vbcr & "INS envoyée : " & INS & " Cycle actuel: " & Cont & " Cycles maximum: " & Rep & Vbcr & vbcr )
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    end if

    If Hexstring(Delay,4)=Hexstring(DelayI,4) then
    Delay=DelayIII
    Cont = Cont+1
    end if
    If Hexstring(Vcc,2)=Hexstring(VccLimitDw,2) then
    Vcc=VccLimitUp
    Delay=Delay +&h02
    end if
    Vcc=Vcc-&h01

    Loop
    ok=Sc.MsgBox("Finalisé", vbInformation,"Test V9 Beta Glitcher")

    End Sub
    '************************************************* ***********************************************
    'Fonction HexString : Convertit un nombre en héxadécimal.Format : Hexstring(Number,Len)
    '************************************************* ***********************************************
    'Format : Hexstring(Number,Len)
    '************************************************* ***********************************************
    Function HexString(Number,Length)
    Dim RetVal
    Dim CurLen
    RetVal=hex(Number)
    CurLen=Len(RetVal)
    If CurLen<Length Then
    RetVal=String(Length-CurLen,"0") & RetVal
    End If
    HexString=RetVal
    End Function
    '************************************************* ***********************************************
    'Fonction Send Seca : Envoir de l'INS au format SECA. Conversion Directe. Inverti les données.
    '************************************************* ***********************************************
    'Format : SendSeca(INStruction)
    '************************************************* ***********************************************
    Function SendSeca(INS)
    dim i
    SendSeca=""
    for i=0 to len(INS)/2-1
    SendSeca=SendSeca & HexInv("&h" & mid(INS,2*i+1,2),2)
    next
    End Function
    '************************************************* ************************************************** ******************
    'Fonction HexInv : Inverti les octets.Utilité:passer de la conversion inverse ( Nagra ) à la conversion directe (Seca) des données.
    '************************************************* ************************************************** *******************
    'Format : HexInv(Number o Byte , Len)
    '************************************************* ************************************************** ****************
    Function HexInv(Number,Length)
    Dim CurLen
    Dim NumLow
    Dim NumHigh
    dim Number1
    dim Retvalue
    NumLow=Int(Number/16)
    NumHigh=Number-NumLow*16
    Select Case NumHigh
    Case 0 NumHigh=15
    Case 1 NumHigh=7
    Case 2 NumHigh=11
    Case 4 NumHigh=13
    Case 6 NumHigh=9
    Case 7 NumHigh=1
    Case 8 NumHigh=14
    Case 9 NumHigh=6
    Case 11 NumHigh=2
    Case 13 NumHigh=4
    Case 14 NumHigh=8
    Case 15 NumHigh=0
    End Select
    Select Case NumLow
    Case 0 NumLow=15
    Case 1 NumLow=7
    Case 2 NumLow=11
    Case 4 NumLow=13
    Case 6 NumLow=9
    Case 7 NumLow=1
    Case 8 NumLow=14
    Case 9 NumLow=6
    Case 11 NumLow=2
    Case 13 NumLow=4
    Case 14 NumLow=8
    Case 15 NumLow=0
    End Select
    Number1=NumHigh*16+NumLow
    RetValue=Hex(Number1)
    CurLen=Len(RetValue)
    If CurLen<Length Then
    RetValue=String(Length-CurLen,"0") & RetValue
    End If
    HexInv=RetValue
    End FunctionCode:
    ' Script de Test pour carte seca.
    ' Il est nécessaire de l'exécuter avec le KT Mod de Penga et No1b4me.
    ' Certaines parties du script sont des copier/coller d'autres scripts,
    ' merci aux créateurs de ce script donc.
    ' Le reste du code a été implémenté par
    ' Zyxel ;)

    '************************************************* ***********************************************
    'Déclaration des variables globales
    '************************************************* ***********************************************
    Option Explicit
    Dim DecVcc
    Dim GPRLen,GPRLen0,GPPLen
    Dim GPR(300)
    Dim i,j
    Dim ByteATR
    Dim GetATR
    Dim Delay
    Dim DelayI
    Dim INS
    Dim MsgPrompt
    Dim MenuChoice
    Dim ok
    Dim Temp,TempII
    Dim rep
    Dim Cont
    Dim chkINS
    Dim VccLimitUP
    Dim VccLimitDW
    Const ScriptName=" Test V9 Beta Glitcher "
    Const ScriptVer= " Version v2.1 "
    Sc.Print "---------------------------------------------------------" & vbcr
    Sc.Print "--------------- Fichier: Test V9 Beta Glitcher.xvb ------" & vbcr
    Sc.Print "--------------- Script Beta de Test ---------------------" & vbcr
    Sc.Print "--------------- Version : v2.1 --------------------------" & vbcr
    Sc.Print "--------------- Date : 12-08-05 -------------------------" & vbcr
    Sc.Print "--------------- By Zyxel --------------------------------" & vbcr & vbcr

    Sc.Print "----------------- Settings Winexplorer Actualisés --------------------" & vbcr & vbcr
    Wx.BaudRate=115200
    Wx.ResetBaudRate=115200
    Wx.ResetDelay=200
    Wx.ByteDelay=0
    Wx.RxByteTimeout=300
    Wx.Parity=0
    Wx.StopBits=0
    Wx.FlushBeforeWrite=1
    Wx.FlushEchoByte=0
    Wx.DTRControl=0
    Wx.RTSControl=1
    Wx.ResetMode=2
    Wx.IgnoreTimeouts=1
    Wx.ResetAfterTimeout=0
    Wx.ResetLine=1
    Wx.LogTransactions=0
    Wx.DisplayUSW=0
    Wx.DisplayFuse=0
    Wx.ByteConvention=1

    '************************************************* ***********************************************
    'Routine Main Principal
    '************************************************* ***********************************************
    Sub Main()

    Sc.Verbose = 1
    If Sc.Version < 5.0 Then
    ErrorString = "Version de Winexplorer 5.0 nécessaire"
    Sc.MsgBox ErrorString, vbCritical
    Err.Raise 1050, , ErrorString
    End If
    Sc.Print vbcr & "Date: " & Date()& " Time: " & Time () & vbcr
    Do
    MsgPrompt="Test V9 Beta Glitcher"
    MenuChoice=Sc.ButtonBox(MsgPrompt,vbDefaultButton1 +vbInformation,ScriptName + ScriptVer + " Menu : ","Read ATR","Glitch VCC","Exit")
    Select Case MenuChoice
    Case 1: ReadATR()
    Case 2: Glitch_VCC()
    End Select
    Sc.Write("020200")
    Sc.Delay(100)
    If Sc.BytesInBuffer > 1 then
    Sc.Read(&h02)
    End if
    Sc.Write("A0")
    Loop Until MenuChoice=3
    End Sub
    '************************************************* ***********************************************
    'Rutina Glitch VCC
    '************************************************* ***********************************************
    Sub Glitch_VCC()
    MsgPrompt="Module de Glitch de Vcc"
    MenuChoice=Sc.ButtonBox(MsgPrompt,vbDefaultButton1 +vbInformation," Menu : ","Glitch C10E","Glitch C11200","Glitch C11201","Glitch ATR","Volver")
    Select Case MenuChoice
    Case 1:
    INS="C10E000038"
    Temp=Sc.InputBox("Introduit Delay Minimum(2 Octets).Exemple : 0100","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte.Exemple: 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    Delay="&H" & Temp
    end if
    Temp=Sc.InputBox("Introduction Delay Maximum (2 octets).Exemple : 0450","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte.Exemple: 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    DelayI="&H" & Temp
    end if
    rep=2
    chkINS=0
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchPacket()
    Case 2:
    INS="C112000038"
    Temp=Sc.InputBox("Introduction Delay Minimum (2 octets).Exemple : 0100","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte.Exemple: 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    Delay="&H" & Temp
    end if
    Temp=Sc.InputBox("Introduction Delay Maximum(2 Octets).Exemple : 0450","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte.Exemple 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    DelayI="&H" & Temp
    end if
    rep=2
    chkINS=1
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchPacket()
    Case 3:
    INS="C112010038"
    Temp=Sc.InputBox("Introduction Delay Minimum(2 Octets).Exemple : 0100","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte.Exemple: 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    Delay="&H" & Temp
    end if
    Temp=Sc.InputBox("Introduction Delay Maximum(2 Octets).Exemple : 0450","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte.Exemple: 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    DelayI="&H" & Temp
    end if
    rep=2
    chkINS=1
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchPacket()
    Case 4:
    Temp=Sc.InputBox("Introduction Delay Minimum(2 Octets).Exemple : 0100","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte.Exemple : 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    Delay="&H" & Temp
    end if
    Temp=Sc.InputBox("Introduction Delay Maximum (2 Octets).Exemple : 0450","Test V9 Beta Glitcher")
    TempII=Len(Temp)
    if TempII<> 4 then
    ok=msgbox("Longueur incorrecte. Exemple: 0EAD",vbinformation,"Test V9 Beta Glitcher")
    exit sub
    else
    DelayI="&H" & Temp
    end if
    rep=2
    VccLimitUP=&h90
    VccLimitDW=&h20
    Call GlitchATR()
    Case 5:
    Call Main()
    End Select
    Call Main()
    End Sub
    '************************************************* ***********************************************
    'Rutina ATR
    '************************************************* ***********************************************
    Sub ReadATR()
    Sc.Verbose=0
    Sc.Write("A1")
    sc.delay(100)
    GetATR = False

    Do While GetATR=False
    Sc.Write("07 10 0e 06 01 03 8F 00")
    Sc.Delay(80)
    Sc.Read(2)
    GPPLen = Sc.GetByte(0)
    GPRLen = Sc.GetByte(1)
    If GPRLen >0 Then Sc.Read (GPRLen)
    i=0
    Do While (GPRLen >i)
    GPR(i)= Sc.GetByte(i)
    i=i+1
    Loop
    Sc.Print vbcr
    For i=0 to GPRLen-1
    Sc.Print (HexInv(GPR(i),2) & " ")
    Next
    if GPRLen>&h01 then
    ByteATR= Sc.GetByte(1)
    end if

    If (ByteATR = 16 ) Then
    GetATR = True
    Sc.Print (": 16 Bytes del ATR" & vbcr & vbcr)
    Else
    GetATR = False
    End If
    Loop
    End Sub
    '************************************************* ***********************************************
    'Routine Glitch Packet VCC
    '************************************************* ***********************************************
    Sub GlitchPacket()
    Dim GlitchType
    Dim Vcc
    Dim a
    Dim b
    Dim c
    Dim DelayII
    Dim DelayIII
    dim j
    DelayIII=Delay
    Vcc=VccLimitUp
    Cont = 1
    DelayII=&H000A

    Do Until Int(Cont)=Int(rep)

    Sc.Verbose=0
    a=b=c=""
    GetATR=False

    Do Until GetATR=True
    Sc.Write("07 10 0e 06 01 03 8F 00")
    Sc.Delay(80)
    Sc.Read(2)
    GPPLen = Sc.GetByte(0)
    GPRLen = Sc.GetByte(1)
    if GPRLen>0 then
    Sc.Read(GPRLen)
    end if
    If (GPRLen = 16 ) Then
    GetATR = True
    Else
    GetATR = False
    End If
    Loop


    GlitchType=INT(RND*&h06)+&h04
    DecVcc=((Vcc*5)/255)
    sc.flush()
    Sc.Write("B0" & Hexstring(Vcc,2))
    sc.delay(20)
    Sc.Write("10 10 0E 03 A4" & SendSeca(INS) & " 80 20" & HexString(Delay,4)& Hexstring(GlitchType,2)& "60 3A")
    GPRLen=0
    sc.delay 250
    i=0
    j=0
    while (Sc.BytesInBuffer >0 and i< 1024)
    GPRLen0=Sc.BytesInBuffer
    GPRLen=GPRLen+GPRLen0
    If GPRLen0>0 Then Sc.Read(GPRLen0)
    j=j+1
    Do While (GPRLen0>i)
    GPR(i)=Sc.GetByte(i)
    i=i+1
    Loop
    wend
    Sc.Print vbcr
    For i=2 to GPRLen-1
    Sc.Print (HexInv(GPR(i),2) & " ")
    Next

    if GPRLen>&h03 then
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & vbcr & "Vcc Appliqué : " & Hexstring(Vcc,2) & " Décimal : " & DecVcc & " Type de Glitch : " & Hexstring(Glitchtype,2) & " Delay : &h20" & Hexstring(Delay,4)& vbcr & vbcr & "INS envoyée : " & INS & " Boucle actuelle : " & Cont & " Boucles max: " & Rep & Vbcr & vbcr )
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    end if

    if chkins=False then
    if GPRLen>&h30 then
    a=SC.GetByte(11)
    b=SC.GetByte(12)
    c=SC.GetByte(13)
    if a <>&h00 or b <>&h00 or c <>&h00 then
    ok=msgbox("Glitched",vbinformation,"Test V9 Beta Glitcher")
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & "----------------------------------------- Glitched ------------------------------------------" & vbcr)
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    end if
    end if
    end if

    if chkins=True then
    if GPRLen>&h30 then
    a=SC.GetByte(29)
    b=SC.GetByte(30)
    c=SC.GetByte(31)
    if a <>&h00 or b <>&h00 or c <>&h00 then
    ok=msgbox("Glitched",vbinformation,"Test V9 Beta Glitcher")
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & "----------------------------------------- Glitched ------------------------------------------" & vbcr)
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------" & vbcr)
    end if
    end if
    end if


    If Hexstring(Delay,4)=Hexstring(DelayI,4) then
    Delay=DelayIII
    Cont = Cont+1
    end if
    If Hexstring(Vcc,2)=Hexstring(VccLimitDw,2) then
    Vcc=VccLimitUp
    Delay=Delay +&h02
    end if
    Vcc=Vcc-&h01


    Loop
    ok=Sc.MsgBox("Finalisé", vbInformation,"Test V9 Beta Glitcher")

    End Sub
    '************************************************* ***********************************************
    'Rutina Glitch ATR VCC
    '************************************************* ***********************************************
    Sub GlitchATR()
    Dim GlitchType
    Dim Vcc
    Dim a
    Dim b
    Dim c
    Dim DelayII
    Dim DelayIII
    dim j
    DelayIII=Delay
    Vcc=VccLimitUp
    Cont = 1
    DelayII=&H000A

    Do Until Int(Cont)=Int(rep)

    Sc.Verbose=0

    GlitchType=INT(RND*&h06)+&h04
    DecVcc=((Vcc*5)/255)
    sc.flush()
    Sc.Write("B0" & Hexstring(Vcc,2))
    sc.delay(20)
    Sc.Write("0B 10 0E 06 01 03 20" & HexString(Delay,4)& Hexstring(GlitchType,2)& "60 3A")
    GPRLen=0
    sc.delay 120
    i=0
    j=0
    while (Sc.BytesInBuffer >0 and i< 1024)
    GPRLen0=Sc.BytesInBuffer
    GPRLen=GPRLen+GPRLen0
    If GPRLen0>0 Then Sc.Read(GPRLen0)
    j=j+1
    Do While (GPRLen0>i)
    GPR(i)=Sc.GetByte(i)
    i=i+1
    Loop
    wend
    Sc.Print vbcr
    For i=2 to GPRLen-1
    Sc.Print (HexInv(GPR(i),2) & " ")
    Next

    if GPRLen>&h03 then
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    Sc.Print(vbcr & vbcr & "Vcc Aplicada : " & Hexstring(Vcc,2) & " Decimal : " & DecVcc & " Tipo de Glitch : " & Hexstring(Glitchtype,2) & " Delay : &h20" & Hexstring(Delay,4)& vbcr & vbcr & "Enviada INS : " & INS & " Ronda Actual: " & Cont & " Maximas Rondas: " & Rep & Vbcr & vbcr )
    Sc.Print (vbcr & "--------------------------------------------------------------------------------------------------------------" & vbcr)
    end if

    If Hexstring(Delay,4)=Hexstring(DelayI,4) then
    Delay=DelayIII
    Cont = Cont+1
    end if
    If Hexstring(Vcc,2)=Hexstring(VccLimitDw,2) then
    Vcc=VccLimitUp
    Delay=Delay +&h02
    end if
    Vcc=Vcc-&h01

    Loop
    ok=Sc.MsgBox("Finalizado", vbInformation,"Test V9 Beta Glitcher")

    End Sub
    '************************************************* ***********************************************
    'Funcion HexString : Convierte un Number en Hexadecimal.Formato : Hexstring(Number,Len)
    '************************************************* ***********************************************
    'Formato : Hexstring(Number,Len)
    '************************************************* ***********************************************
    Function HexString(Number,Length)
    Dim RetVal
    Dim CurLen
    RetVal=hex(Number)
    CurLen=Len(RetVal)
    If CurLen<Length Then
    RetVal=String(Length-CurLen,"0") & RetVal
    End If
    HexString=RetVal
    End Function
    '************************************************* ***********************************************
    'Funcion Send Seca : Envia INS en formato Seca. Conveccion Directa. Invierte los datos.
    '************************************************* ***********************************************
    'Formato : SendSeca(INStruccion)
    '************************************************* ***********************************************
    Function SendSeca(INS)
    dim i
    SendSeca=""
    for i=0 to len(INS)/2-1
    SendSeca=SendSeca & HexInv("&h" & mid(INS,2*i+1,2),2)
    next
    End Function
    '************************************************* ************************************************** ******************
    'Funcion HexInv : Invierte los Bytes.Utilidad:Pasar de Conveccion Inversa ( Nagra ) a Directa (Seca) los datos.
    '************************************************* ************************************************** *******************
    'Formato : HexInv(Number o Byte , Len)
    '************************************************* ************************************************** ****************
    Function HexInv(Number,Length)
    Dim CurLen
    Dim NumLow
    Dim NumHigh
    dim Number1
    dim Retvalue
    NumLow=Int(Number/16)
    NumHigh=Number-NumLow*16
    Select Case NumHigh
    Case 0 NumHigh=15
    Case 1 NumHigh=7
    Case 2 NumHigh=11
    Case 4 NumHigh=13
    Case 6 NumHigh=9
    Case 7 NumHigh=1
    Case 8 NumHigh=14
    Case 9 NumHigh=6
    Case 11 NumHigh=2
    Case 13 NumHigh=4
    Case 14 NumHigh=8
    Case 15 NumHigh=0
    End Select
    Select Case NumLow
    Case 0 NumLow=15
    Case 1 NumLow=7
    Case 2 NumLow=11
    Case 4 NumLow=13
    Case 6 NumLow=9
    Case 7 NumLow=1
    Case 8 NumLow=14
    Case 9 NumLow=6
    Case 11 NumLow=2
    Case 13 NumLow=4
    Case 14 NumLow=8
    Case 15 NumLow=0
    End Select
    Number1=NumHigh*16+NumLow
    RetValue=Hex(Number1)
    CurLen=Len(RetValue)
    If CurLen<Length Then
    RetValue=String(Length-CurLen,"0") & RetValue
    End If
    HexInv=RetValue
    End FunctionA+

    --------------------------------------------------------------------------------
    Dernière édition par brett05; 23-02-2008 à 20:12

  2. Merci philipp, soleildemo, z3ro0 disent merci

  3. #2
    Nouveau Avatar de simba1805
    Inscrit
    Jul 2008
    Lieu
    a la maison
    Messages
    46
    Récepteur
    123456
    TV
    lg 42
    Remerciement / J'aime
    merci brett05 pour les infos, mais a tu essayé en pratique , ça marche pas pour moi , si t'as une idée precise, merci ;)

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas modifier vos messages
  •  
Nous contacter | DZSat | Archives | Haut de page