mosc 9.x

brett05

DZSatien Occasionnel
Inscrit
31/10/07
Messages
72
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:
merci brett05 pour les infos, mais a tu essayé en pratique , ça marche pas pour moi , si t'as une idée precise, merci ;)
 
Retour
Haut