Всем привет. Есть такая программа , которая кодирует Windows Script:
В
Есть программа для декодирования, там и исходник на С есть.
Небыло ли на Autoit такого?
Пытался портировать скрипт на .vbs
Но где то накосячил. Может у кого получится портировать?
Вот чего я "напортировал"
PS Щас справляюсь с помощью скрипта на .vbs, но хочется без него)
ТуТ подробности
Код:
Wscript.Echo("Привет, Script Encoder!")
'**Start Encode**
Wscript.Echo("Привет ещё раз, Script Encoder!")
Код:
Wscript.Echo("Привет, Script Encoder!")
'**Start Encode**#@~^NwAAAA==@#@&d1DbwYc214WvJПривет~ещёPразBPj^MkwD~2 mW9n."r#@#@&XgsAAA==^#~@
Есть программа для декодирования, там и исходник на С есть.
Небыло ли на Autoit такого?
Пытался портировать скрипт на .vbs
Option Explicit
Dim oArgs, NomFichier
NomFichier = ""
Set oArgs = WScript.Arguments
Select Case oArgs.Count
Case 0
NomFichier = ""
Case 1
If Instr(oArgs(0), "?")=0 Then
NomFichier = oArgs(0)
End If
Case Else
WScript.Echo "Слишком много параметров."
End Select
Set oArgs = Nothing
If NomFichier <> "" Then
Dim fso
Dim a
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
If fso.FileExists(NomFichier) Then
Dim fic,contenu
Set fic = fspenTextFile(NomFichier, 1)
Contenu = fic.readAll
fic.close
Set fic = Nothing
Const TagInit = "#@~^"
Const TagFin = "==^#~@"
Dim DebutCode, FinCode
Do
FinCode = 0
DebutCode = Instr(Contenu, TagInit)
If DebutCode > 0 Then
If (Instr(DebutCode, Contenu, "==") - DebutCode) = 10 Then
FinCode = Instr(DebutCode , Contenu, TagFin)
If FinCode > 0 Then
Contenu = Left(Contenu, DebutCode - 1) & _
Decode(Mid(Contenu, DebutCode + 12, FinCode - DebutCode - 12 - 6)) & _
Mid(Contenu, FinCode + 6)
End If
End If
End If
Loop Until FinCode = 0
Set a = fso.CreateTextFile(NomFichier & ".txt", 1)
a.WriteLine Contenu
a.Close
Else
WScript.Echo Nomfichier & " не найден."
End If
Set fso = Nothing
Else
WScript.Echo "Укажите имя файла."
WScript.Echo "Использование: " & wscript.fullname & " " & WScript.ScriptFullName & " "
End If
'========================================================================================
Function Decode(Chaine)
Dim se, i, c, j, index, ChaineTemp
Dim tDecode(127)
Const Combinaison = "1231232332321323132311233213233211323231311231321323112331123132"
Set se = WSCript.CreateObject("Scripting.Encoder")
For i=9 to 127
tDecode(i) = "JLA"
Next
For i=9 to 127
ChaineTemp = Mid(se.EncodeScriptFile(".vbs", string(3,i), 0, ""), 13, 3)
For j=1 to 3
c = Asc(Mid(ChaineTemp,j,1))
tDecode(c) = Left(tDecode(c), j-1) & chr(i) & Mid(tDecode(c), j+1)
Next
Next
tDecode(42) = Left(tDecode(42), 1) & ")" & Right(tDecode(42), 1)
Set se = Nothing
Chaine = Replace(Replace(Chaine,"@&",chr(10)),"@#",chr(13))
Chaine = Replace(Replace(Chaine,"@*",">"),"@!","<")
Chaine = Replace(Chaine,"@$","@")
index = -1
For i=1 to Len(Chaine)
c=asc(Mid(Chaine,i,1))
If c < 128 Then index=index+1
If (c=9) or ((c>31) and (c<128)) Then
If (c<>60) and (c<>62) and (c<>64) Then
Chaine = Left(Chaine,i-1) & _
Mid(tDecode(c), Mid(Combinaison, (index mod 64)+1, 1), 1) & _
Mid(Chaine, i+1)
End If
End If
Next
Decode = Chaine
End Function
Dim oArgs, NomFichier
NomFichier = ""
Set oArgs = WScript.Arguments
Select Case oArgs.Count
Case 0
NomFichier = ""
Case 1
If Instr(oArgs(0), "?")=0 Then
NomFichier = oArgs(0)
End If
Case Else
WScript.Echo "Слишком много параметров."
End Select
Set oArgs = Nothing
If NomFichier <> "" Then
Dim fso
Dim a
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
If fso.FileExists(NomFichier) Then
Dim fic,contenu
Set fic = fspenTextFile(NomFichier, 1)
Contenu = fic.readAll
fic.close
Set fic = Nothing
Const TagInit = "#@~^"
Const TagFin = "==^#~@"
Dim DebutCode, FinCode
Do
FinCode = 0
DebutCode = Instr(Contenu, TagInit)
If DebutCode > 0 Then
If (Instr(DebutCode, Contenu, "==") - DebutCode) = 10 Then
FinCode = Instr(DebutCode , Contenu, TagFin)
If FinCode > 0 Then
Contenu = Left(Contenu, DebutCode - 1) & _
Decode(Mid(Contenu, DebutCode + 12, FinCode - DebutCode - 12 - 6)) & _
Mid(Contenu, FinCode + 6)
End If
End If
End If
Loop Until FinCode = 0
Set a = fso.CreateTextFile(NomFichier & ".txt", 1)
a.WriteLine Contenu
a.Close
Else
WScript.Echo Nomfichier & " не найден."
End If
Set fso = Nothing
Else
WScript.Echo "Укажите имя файла."
WScript.Echo "Использование: " & wscript.fullname & " " & WScript.ScriptFullName & " "
End If
'========================================================================================
Function Decode(Chaine)
Dim se, i, c, j, index, ChaineTemp
Dim tDecode(127)
Const Combinaison = "1231232332321323132311233213233211323231311231321323112331123132"
Set se = WSCript.CreateObject("Scripting.Encoder")
For i=9 to 127
tDecode(i) = "JLA"
Next
For i=9 to 127
ChaineTemp = Mid(se.EncodeScriptFile(".vbs", string(3,i), 0, ""), 13, 3)
For j=1 to 3
c = Asc(Mid(ChaineTemp,j,1))
tDecode(c) = Left(tDecode(c), j-1) & chr(i) & Mid(tDecode(c), j+1)
Next
Next
tDecode(42) = Left(tDecode(42), 1) & ")" & Right(tDecode(42), 1)
Set se = Nothing
Chaine = Replace(Replace(Chaine,"@&",chr(10)),"@#",chr(13))
Chaine = Replace(Replace(Chaine,"@*",">"),"@!","<")
Chaine = Replace(Chaine,"@$","@")
index = -1
For i=1 to Len(Chaine)
c=asc(Mid(Chaine,i,1))
If c < 128 Then index=index+1
If (c=9) or ((c>31) and (c<128)) Then
If (c<>60) and (c<>62) and (c<>64) Then
Chaine = Left(Chaine,i-1) & _
Mid(tDecode(c), Mid(Combinaison, (index mod 64)+1, 1), 1) & _
Mid(Chaine, i+1)
End If
End If
Next
Decode = Chaine
End Function
Вот чего я "напортировал"
Код:
$Contenu = FileRead('code.vbe');Закодированый файл
$TagInit = "#@~^"
$TagFin = "==^#~@"
do
$FinCode = 0
$DebutCode = StringInstr($Contenu, $TagInit)
$FinCode = StringInstr($DebutCode , $Contenu, $TagFin)
$Contenu = StringLeft($Contenu, $DebutCode - 1) & Decode(StringMid($Contenu, $DebutCode + 12, $FinCode - $DebutCode - 12 - 6)) & StringMid($Contenu, $FinCode + 6)
Until $FinCode = 0
ConsoleWrite($Contenu&@LF)
Func Decode($Chaine)
Dim $tDecode[127]
$Combinaison = "1231232332321323132311233213233211323231311231321323112331123132"
$se = ObjCreate("Scripting.Encoder")
For $i=8 to 126
$tDecode[$i] = "JLA"
Next
For $i=9 to 127
$ChaineTemp = StringMid($se.EncodeScriptFile(".vbs", _string(3,$i), 0, ""), 13, 3)
For $j=1 to 3
$c = Asc(StringMid($ChaineTemp,$j,1))
$tDecode[$c-1] = StringLeft($tDecode[$c-1], $j-1) & chr($i) & StringMid($tDecode[$c-1], $j+1)
Next
Next
$tDecode[42] = StringLeft($tDecode[42], 1) & ")" & StringRight($tDecode[42], 1)
$Chaine = StringReplace(StringReplace($Chaine,"@&",chr(10)),"@#",chr(13))
$Chaine = StringReplace(StringReplace($Chaine,"@*",">"),"@!","<")
$Chaine = StringReplace($Chaine,"@$","@")
$index = -1
For $i=1 to StringLen($Chaine)
$c=asc(StringMid($Chaine,$i,1))
If $c < 128 Then $index=$index+1
If ($c=9) or (($c>31) and ($c<128)) Then
If ($c<>60) and ($c<>62) and ($c<>64) Then
$Chaine = StringLeft($Chaine,$i-1) & _
StringMid($tDecode[$c-1], StringMid($Combinaison, ('index mod 64')+1, 1), 1) & _
StringMid($Chaine, $i+1)
EndIf
EndIf
Next
Return $Chaine
EndFunc
Func _string($num,$str)
if StringIsInt($str) then $str=chr($str)
$string=''
for $i=0 to $num
$string&=$str
Next
Return $string
EndFunc
PS Щас справляюсь с помощью скрипта на .vbs, но хочется без него)
ТуТ подробности