Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] Problème Set
Auteur Message
Répondre en citant
Message [R] Problème Set 
En ce moment j'essaie de créer un batch qui peut crypter et décrypter n'importe quel fichier (à l'aide d'une clef).
J'y suis presque arriver mais un dernier problème se pose :

-- Lorsque qu'il y a un "!" dans la chaîne à crypter, il est supprimer de la chaîne de caractère; avec ce code :

Code:
set "$a=!$a:%%A=%%B!"


C'est la même chose pour le caractère "^".
Et lorsque que des caractères sont entre deux "!", ils sont totalement supprimés eux aussi.

-- Et deuxième problème, le set fait pas la différence entre les majs et les mins :

Code:

set "$a=Ee"
set "$a=!$a:E=Y!"
set "$a=!$a:e=z!"

echo !$a!

(Voyez le problème par vous même)

Donc jsp si c'est possible à réglé mais sa m'aiderai vraiment.
Ou alors si vous avez une méthode de cryptage alternative en batch, sa pourrait m'aider aussi !



Dernière édition par Bad-Code le Jeu 7 Juin 2018 - 18:33; édité 2 fois

______________________________________________________
We're just an accident. We're just bad code. - Root
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] Problème Set 
Salut,

Tu as pleins d'exemple sympas voir très originaux sur le fofo pour t'aider Wink

Sinon pense à "échapper" tes caractères spéciaux avec un ^ (double ^^ pour ^).
A savoir aussi que c'est assez basique le batch pur pour le cryptage, mais avec de bonnes idées tu peux t'amuser !

On est tous passé par cet exercice Laughing Laughing

Code:

@echo off
mode con cols=80 lines=5 &color 0A
title Cryptage LUCIFER  ^| By STRYK ^|  stryk@live.fr
:: mailto: stryk@live.fr
setlocal enabledelayedexpansion enableextensions

:MAIN
cls
set CHAR=
set VAL=
set NB_L=
set SIZE=
set BIN_MOD=
set MAX=

echo [1] _ Chiffrer
echo [2] _ D‚chiffrer
echo [3] _ Quitter
echo.
set SELECT=UNDEF
set /p SELECT=Choix \\:
if %SELECT%==1 goto :ON_CRYPT
if %SELECT%==2 goto :OFF_CRYPT
if %SELECT%==3 (
    cls
   echo Bye-Bye
   @ping localhost -n 2 >nul
   exit
   )

cls
echo Choix invalide, patientez svp ...
@ping localhost -n 3 >nul
goto :MAIN

:ON_CRYPT
cls
set /p TEXT_OK=Texte_Clair   \\:

call :TRANS_1 "%TEXT_OK: =_%"

for /l %%A in (0,1,4) do (
   for /l %%B in (%%A,5,%SIZE%) do (
       set BIN_MOD=!BIN_MOD!!CHAR:~%%B,1!
      )
   )

set VAL=
set CHAR=

call :TRANS_2

echo Texte Chiffr‚ \\:!CHAR!

goto :RETRY

:OFF_CRYPT
cls
set /p TEXT_KO=Texte_Chiffr‚ \\:

call :TRANS_1 "%TEXT_KO%"

for /l %%A in (0,1,%NB_C%) do (
   for /l %%B in (%%A,%NB_L%,%SIZE%) do (
       set BIN_MOD=!BIN_MOD!!CHAR:~%%B,1!
      )
   )

set VAL=
set CHAR=

call :TRANS_2

echo Texte_Clair   \\:!CHAR:_= !

goto :RETRY

:TRAD_BIN
if /i !VAL!==a set CHAR=!CHAR!00001
if /i !VAL!==b set CHAR=!CHAR!00010
if /i !VAL!==c set CHAR=!CHAR!00011
if /i !VAL!==d set CHAR=!CHAR!00100
if /i !VAL!==e set CHAR=!CHAR!00101
if /i !VAL!==f set CHAR=!CHAR!00110
if /i !VAL!==g set CHAR=!CHAR!00111
if /i !VAL!==h set CHAR=!CHAR!01000
if /i !VAL!==i set CHAR=!CHAR!01001
if /i !VAL!==j set CHAR=!CHAR!01010
if /i !VAL!==k set CHAR=!CHAR!01011
if /i !VAL!==l set CHAR=!CHAR!01100
if /i !VAL!==m set CHAR=!CHAR!01101
if /i !VAL!==n set CHAR=!CHAR!01110
if /i !VAL!==o set CHAR=!CHAR!01111
if /i !VAL!==p set CHAR=!CHAR!10000
if /i !VAL!==q set CHAR=!CHAR!10001
if /i !VAL!==r set CHAR=!CHAR!10010
if /i !VAL!==s set CHAR=!CHAR!10011
if /i !VAL!==t set CHAR=!CHAR!10100
if /i !VAL!==u set CHAR=!CHAR!10101
if /i !VAL!==v set CHAR=!CHAR!10110
if /i !VAL!==w set CHAR=!CHAR!10111
if /i !VAL!==x set CHAR=!CHAR!11000
if /i !VAL!==y set CHAR=!CHAR!11001
if /i !VAL!==z set CHAR=!CHAR!11010
if /i !VAL!==_ set CHAR=!CHAR!11011
if /i !VAL!==5 set CHAR=!CHAR!11100
if /i !VAL!==6 set CHAR=!CHAR!11101
if /i !VAL!==7 set CHAR=!CHAR!11111
if /i !VAL!==8 set CHAR=!CHAR!11110
if /i !VAL!==4 set CHAR=!CHAR!00000
goto :EOF

:TRAD_LET
if !VAL!==00001 set CHAR=!CHAR!a
if !VAL!==00010 set CHAR=!CHAR!b
if !VAL!==00011 set CHAR=!CHAR!c
if !VAL!==00100 set CHAR=!CHAR!d
if !VAL!==00101 set CHAR=!CHAR!e
if !VAL!==00110 set CHAR=!CHAR!f
if !VAL!==00111 set CHAR=!CHAR!g
if !VAL!==01000 set CHAR=!CHAR!h
if !VAL!==01001 set CHAR=!CHAR!i
if !VAL!==01010 set CHAR=!CHAR!j
if !VAL!==01011 set CHAR=!CHAR!k
if !VAL!==01100 set CHAR=!CHAR!l
if !VAL!==01101 set CHAR=!CHAR!m
if !VAL!==01110 set CHAR=!CHAR!n
if !VAL!==01111 set CHAR=!CHAR!o
if !VAL!==10000 set CHAR=!CHAR!p
if !VAL!==10001 set CHAR=!CHAR!q
if !VAL!==10010 set CHAR=!CHAR!r
if !VAL!==10011 set CHAR=!CHAR!s
if !VAL!==10100 set CHAR=!CHAR!t
if !VAL!==10101 set CHAR=!CHAR!u
if !VAL!==10110 set CHAR=!CHAR!v
if !VAL!==10111 set CHAR=!CHAR!w
if !VAL!==11000 set CHAR=!CHAR!x
if !VAL!==11001 set CHAR=!CHAR!y
if !VAL!==11010 set CHAR=!CHAR!z
if !VAL!==11011 set CHAR=!CHAR!_
if !VAL!==11100 set CHAR=!CHAR!5
if !VAL!==11101 set CHAR=!CHAR!6
if !VAL!==11111 set CHAR=!CHAR!7
if !VAL!==11110 set CHAR=!CHAR!8
if !VAL!==00000 set CHAR=!CHAR!4
goto :EOF

:TRANS_1
for /f "tokens=2 delims=[,]" %%$ in ('"%comspec% /u /c echo:%~1|more|find /n /v """') do (
    set VAL=%%$
   set /a NB_L+=1
   call :TRAD_BIN
   )

set /a NB_C=NB_L-1

for /f "tokens=1 delims=[,]" %%§ in ('"%comspec% /u /c echo:!CHAR!|more|find /n /v """') do (
   set /a SIZE=%%§-5
   )

set /a MAX=SIZE-4
goto :EOF

:TRANS_2
for /l %%C in (0,5,%MAX%) do (
    set VAL=!BIN_MOD:~%%C,5!
     call :TRAD_LET
   )
goto :EOF

:RETRY
echo.
echo Appuyez sur une touche pour retourner au menu
pause>nul
goto :MAIN





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message [R] Problème Set 
stryk a écrit:
Salut,

Tu as pleins d'exemple sympas voir très originaux sur le fofo pour t'aider Wink

Sinon pense à "échapper" tes caractères spéciaux avec un ^ (double ^^ pour ^).
A savoir aussi que c'est assez basique le batch pur pour le cryptage, mais avec de bonnes idées tu peux t'amuser !

On est tous passé par cet exercice Laughing Laughing

{{{Exemple de mon vieux code Mr. Green}}}


Ton code est excellent mais sa ne répond absolument pas à ma question..

Mon but c'est de crypter tout type de fichier (que ce soit text ou .bmp en passant par .mp4), donc des fichier qui contiennes tout type de caractère spéciaux ( > ^ ! ¤ ..).
Le problème, (j'en reviens à ma question initial) c'est que le cryptage ne fait pas la différence entre maj et min, et ne supporte pas le "!".
(et ton code ne fait pas exception à la règle).

Donc je suis toujours bloqué Rolling Eyes




______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Problème Set 
Tu ne pourras jamais crypter une image en batch Laughing
(je parle en batch pur)
C'est tout simplement impossible, un fichier image est composé de caractères non reconnu par l'interpréteur Wink
Edite une image et tu vas comprendre direct ^

Pour répondre à ta question sur maj/min, la commande IF comme d'autres commandes peuvent te servir Wink

Code:

if %TEXT%==A echo MAJUSCULE
if %TEXT%==a echo minuscule


Donc à partir de là tu peux imaginer pleins de choses pratiques:
Code:

@echo off

set /p TEXT=Tapez un mot \\:
echo Texte: %TEXT%

for /f "tokens=2 delims=[,]" %%$ in ('"%comspec% /u /c echo:%TEXT%|more|find /n /v """') do (
   echo Lettre: %%$
   for %%# in (a b c d e f g h i j k l m n o p k r s t u v w x y z) do if %%$==%%# echo minuscule
   for %%# in (A B C D E F G H I J K L M N O P K R S T U V W X Y Z) do if %%$==%%# echo MAJUSCULE
   echo.
   )

pause


N'hésites pas si tu veux plus de possibilities Wink




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message [R] Problème Set 
stryk a écrit:
Tu ne pourras jamais crypter une image en batch Laughing
(je parle en batch pur)
C'est tout simplement impossible, un fichier image est composé de caractères non reconnu par l'interpréteur Wink
Edite une image et tu vas comprendre direct ^

Haha je connais pas le mot "impossible". Cool
Je sais pertinemment que une image est composé de plein de signe chelou.
Sauf que l'interpreteur n'a pas besoin de les connaitre ! Il crypt seulement ceux qu'il connait (c'est à dire 75% des caractère) et sa suffit largement à rendre le fichier hors d'accès.
Et sa j'ai réussit à le faire, SAUF que il y a les signes qui pose encore problème, le "!" et le "^".

stryk a écrit:

Pour répondre à ta question sur maj/min, la commande IF comme d'autres commandes peuvent te servir Wink

Code:

if %TEXT%==A echo MAJUSCULE
if %TEXT%==a echo minuscule


Wow merci je connaissais pas la commande if !!! ironie désolé Mr. Green
Mais c'est pas compatible (enfin je crois) avec ma méthode de cryptage, c'est à dire : set "$a=!$a:%%A=%%B!"

stryk a écrit:

Donc à partir de là tu peux imaginer pleins de choses pratiques:
Code:

@echo off

set /p TEXT=Tapez un mot \\:
echo Texte: %TEXT%

for /f "tokens=2 delims=[,]" %%$ in ('"%comspec% /u /c echo:%TEXT%|more|find /n /v """') do (
   echo Lettre: %%$
   for %%# in (a b c d e f g h i j k l m n o p k r s t u v w x y z) do if %%$==%%# echo minuscule
   for %%# in (A B C D E F G H I J K L M N O P K R S T U V W X Y Z) do if %%$==%%# echo MAJUSCULE
   echo.
   )

pause


N'hésites pas si tu veux plus de possibilities Wink


Pas mal, j'ai essayé de l'intégrer à mon code en vain Sad

Mais en tout cas, comme je le répète, mon code fonctionne comme il faut pour tout type de caractère, sauf ! et ^.
La preuve c'est que j'ai réussis à crypter un batch de plus de 1600 lignes (qui n'avait pas de "!") et une fois décrypté, il fonctionnait parfaitement ! Okay

Alors voici le code de cryptage :

Code:

 If "%~1"=="" (
  @echo off
  color 0C & Mode 80,3
  echo.
  echo       You must drag and drop a file over this batch script to be crypted !
  pause>nul
  exit
 )

 setlocal enabledelayedexpansion
 cd %~dp0
 
 if exist crypt.txt del /q crypt.txt
 
 for /F "tokens=*" %%A in ('more "%~1"') do (
  set "$a=%%A"
  if not "!$a!"=="" (
   for /f "tokens=1,2 delims=_" %%A in ('type clef.ini') do set "$a=!$a:%%A=%%B!"
   echo;!$a!>>crypt.txt
   set "$a="
  )
 )


Le code de décryptage :

Code:

 If "%~1"=="" (
  @echo off
  color 0C & Mode 80,3
  echo.
  echo       You must drag and drop a file over this batch script to be uncrypted !
  pause>nul
  exit
 )
 
 setlocal enabledelayedexpansion
 cd %~dp0
 
 if exist decrypt.txt del /q decrypt.txt

 for /F "tokens=*" %%A in ('more "%~1"') do (
  set "$a=%%A"
 
  set "$tot="
  for /f "tokens=* delims== eol=#" %%y in ('type clef.ini') do set "$tot=%%y !$tot!"
  for %%y in (!$tot!) do for /f "tokens=1,2 delims=_" %%j in ("%%y") do set "$a=!$a:%%k=%%j!"
 
  echo;!$a!>>decrypt.txt
 )


et la clef (qui supporte tout type/longeur de caractères sauf "_" :
Code:

a_lxhgv2
b_uunrx9
c_986tg0
d_avqnv9
e_men62z
f_ue8nvs
g_ia1zxh
h_niy5jf
i_ijuxgz
j_mw8y8a
k_7boksl
l_ni5dj7
m_atl3gp
n_waih0p
o_589fir
p_t9klzq
q_6d16il
r_xdqunr
s_jnylsb
t_orkh3o
u_7emx2d
v_nlpay8
w_xpl7yw
x_hgzkti
y_n3ubu6
z_oocmr4
A_pso5y1
B_cn3twz
C_unjw7i
D_6v4ffs
E_yrw2xv
F_8bsppi
G_d8w50a
H_3e50yo
I_nrvhez
J_5v5tbc
K_lpdeg0
L_cv56v4
M_fjg8wi
N_o0wfes
O_mdq8qb
P_18oxqp
Q_chptnj
R_7p9gtl
S_3e6va0
T_u0wfcr
U_66er0e
V_wv1du0
W_6gek5u
X_posycj
Y_8s6or1
Z_tkxpu5
0_ag5qn7
1_o8rgf0
2_oo3vek
3_zmjuk1
4_g1cqac
5_5i14ns
6_9jrtdf
7_9mdaps
8_f4pt6r
9_rwm942
/_mjsta9
._59yrx8
-_igw8ss
é_e6vu6c
è_rccbtg
à_87uo33
ù_hdfr9d
µ_szeagy
ô_ymujo6
î_f7gw1f
û_pt1zjp
â_yfvkas
ê_689e50
§_gypxbj
¨_tr61r6
£_o7l5ho
$_5zzgn4
ç_fhpmhi
#_norusr
[_xoxg2i
]_oei0w4
\_hmrc3s
@_zptdyp
°_3i80mw
+_7pblte
}_sirrz9
{_ppx299

Il faut absolument que la clef soit dans le même répartoire que les batch crypteur.cmd et décrypteur.cmd pour que sa fonctionne.

Donc on revient encore une fois à mon problème initial :
Comment différentier maj/min et comment supporté les caractère "!" "^" AVEC CE code ?

Peut-être à arriveras tu à modifier mes batchs pour régler ces soucies.




______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Problème Set 
Déjà tu peux intégrer tes tables de clefs directement dans le batch, plus pratique Wink
( je peux te faire ça ce soir si tu veux)

Ensuite, fais deux petits tests:
Code:

:: ça fonctionne:
type image.jpg >> new-image.jpg

:: ça ne fonctionne pas:
for /f "tokens=*" %%A in ('type image.jpg') do echo %%A >> new-image.jpg

Why ?




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message [R] Problème Set 
stryk a écrit:
Déjà tu peux intégrer tes tables de clefs directement dans le batch, plus pratique Wink
( je peux te faire ça ce soir si tu veux)

Ensuite, fais deux petits tests:
Code:

:: ça fonctionne:
type image.jpg >> new-image.jpg

:: ça ne fonctionne pas:
for /f "tokens=*" %%A in ('type image.jpg') do echo %%A >> new-image.jpg

Why ?


Effectivement, pour le coup je me sent vraiment débile Crying or Very sad

Pourtant j'avais tenté de crypter une table de caractères spéciaux pour voir si tout fonctionnait quand même, et sa avait parfaitement marché. Mais ils devaient de toutes évidence pas être assez spéciaux Sad

En revanche, sa marche quand il s'agit de crypter un batch ou un txt, même si mon problème [ n'est pas résolue ] (!,^,maj,min).
Mais après réflexion sa me paraît impossible à résoudre avec ma méthode actuel..

Tu disait qu'en batch pur c'est impossible de crypter des fichier image/vidéo, quel serait l'alternative (en utilisant tj un peut de batch et avec une clef) ?




______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Problème Set 
Bad-Code a écrit:

Effectivement, pour le coup je me sent vraiment débile Crying or Very sad


Mais non on est là pour apprendre et partager Wink

Tu peux utiliser cipher.exe ou 7zip qui sont scriptables Razz




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message [R] Problème Set 
Tu peux faire comme ça (à l'aide de JScript) :

Code:
@echo off
setlocal enabledelayedexpansion

(
  echo;^^!EeeeE^^!EEEeE%%j^^^^fs
  echo;EeeEEe^^!g^^^^dsdGF^^^^%%fd%%
)> "myFile.txt"

echo;Before:
type "myFile.txt"
echo;
call :replace "myFile.txt" "myFile.replace.txt" E X
echo;After:
type "myFile.replace.txt"
echo;

pause>nul&exit


:replace <FILE> <newFile> <String> <NewString>
  echo;var fso=new ActiveXObject("Scripting.FileSystemObject");var a=fso.OpenTextFile("%~1",1);var b=a.AtEndOfStream?"":a.ReadAll();a.Close();var c=fso.OpenTextFile("%~2", 2, -1);c.Write(b.replace(new RegExp("%~3", "g"),"%~4"));c.Close();> "%temp%\%~n0.js"
  cscript //nologo "%temp%\%~n0.js"
Exit /b


c'est rapide, simple, efficace Okay


Si tu veux remplacer uniquement les E en X en pure batch on peut faire comme ça mais ya le problème des caractères spéciaux :
Code:
@echo off
Setlocal EnableDelayedExpansion
set string=call :String


set a=Ee

echo;Before:
echo;!a!
echo;


%string%.Replace a E X

echo;After:
echo;!a!


pause>nul&exit
:String.Replace <VariableName> <Char> <NewChar>
  set "_="
  for /f "tokens=1* delims=[]" %%c in ('
    "%comspec% /u /c echo:"!%~1!"|more"
  ') do (
    echo;%%~c|findstr "%~2"&&set "_=!_!%~3"||set "_=!_!%%~c"
  )>nul 2>&1
  set "%~1=!_!"
Exit /b





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R] Problème Set 
Flammrock a écrit:
Tu peux faire comme ça (à l'aide de JScript) :

Code:
@echo off
setlocal enabledelayedexpansion

(
  echo;^^!EeeeE^^!EEEeE%%j^^^^fs
  echo;EeeEEe^^!g^^^^dsdGF^^^^%%fd%%
)> "myFile.txt"

echo;Before:
type "myFile.txt"
echo;
call :replace "myFile.txt" "myFile.replace.txt" E X
echo;After:
type "myFile.replace.txt"
echo;

pause>nul&exit


:replace <FILE> <newFile> <String> <NewString>
  echo;var fso=new ActiveXObject("Scripting.FileSystemObject");var a=fso.OpenTextFile("%~1",1);var b=a.AtEndOfStream?"":a.ReadAll();a.Close();var c=fso.OpenTextFile("%~2", 2, -1);c.Write(b.replace(new RegExp("%~3", "g"),"%~4"));c.Close();> "%temp%\%~n0.js"
  cscript //nologo "%temp%\%~n0.js"
Exit /b


c'est rapide, simple, efficace Okay

Ho god, sa fonctionne en plus d'être rapide.
Enfin bizzarement quand je crypt/décrypt un .bmp, le bmp est malgré tout corrompue, mais je soupsonne que ce problème vienne de la clef de chiffrage.
(le pire, c'est que pour générer la clef, j'utilise un de tes codes de ce sujet [http://batch.xoo.it/t5746-cle-de-chiffrage.htm] ce qui signifie que t'es en train de faire indirectement tout mon programme Mr. Green )

Mais l'objectif de ce sujet est en faite de :
Etape 1 - choisir la longeur des clefs de cryptage (caractères)
Etape 2 - crypter le fichier en fonction de cette clef
Etape 3 - décrypter le fichier en fonction de cette même clef (et pas d'une autre évidemment).
Et que le tout soit compatible avec n'importe quel fichier.

Pour l'étape 1, j'ai sa :
Code:

@echo off
title By Flammrock
setlocal enabledelayedexpansion
 
 set /p "nbr=Nombre de caractŠre : "
 
 echo.
 
 for %%z in (a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do (
  call :generateKey !nbr!
  echo;%%z_!key!
  echo;%%z_!key!>>clef.ini
 )

 pause>nul
 exit

:generateKey <nb>
 REM set charset=0123456789abcdefghijklmnopqrstuvwxyzéèàùµôîûâê/:.;-%§¨^£$ç#[]\^@°=+}{
 set charset=0123456789abcdefghijklmnopqrstuvwxyz
 call :length "%charset%"
 
 set key=
 for /l %%a in (0,1,%~1) do (
  set /a r=!random!%%%length%
  for %%b in ("!r!,1") do set key=!key!!charset:~%%~b!
 )
 
 goto :eof

:length <variable>

 for /f "tokens=1* delims=[]" %%a in ('"%comspec% /u /c echo:%~1|more|find /n /v """') do set /a "length=%%a-4"

goto :eof


Etape 2 : J'ai sa, une nouvelle fois grâce à toi :
Code:

setlocal enabledelayedexpansion
 
set fichier=wow.txt
echo;Before:
type "!fichier!"
echo;

for /f "tokens=1,2 delims=_" %%A in ('type clef.ini') do call :replace "!fichier!" "rendue.txt" %%A %%B

pause>nul&exit
 
 
:replace <FILE> <newFile> <String> <NewString>
  echo;var fso=new ActiveXObject("Scripting.FileSystemObject");var a=fso.OpenTextFile("%~1",1);var b=a.AtEndOfStream?"":a.ReadAll();a.Close();var c=fso.OpenTextFile("%~2", 2, -1);c.Write(b.replace(new RegExp("%~3", "g"),"%~4"));c.Close();> "%temp%\%~n0.js"
  cscript //nologo "%temp%\%~n0.js"
Exit /b

Ha mince, je viens que me rendre compte que bizzarement sa crypt QUE le dernier caractère de la clef. Shocked
Mmmh comment palier à ce problème ?

Etape 3 :
Faut déjà résoudre l'étape 2 mais après c'est simple.

Donc pour récapituler, si y a moyen de trouver comment résoudre l'étape 2, ce sujet est finis.




______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Problème Set 
Voilà : https://pastebin.com/raw/SucJyGAi (CODE COMPLET + EXEMPLE)


Voici les différentes fonctions prêtes à être utilisées :


  • %EncryptionCore%.generateKey Length Charset Output

    Cette fonction a besoin de String.length et de String.getRandomString
    Elle permet de générer une clé aléatoire sous cette forme :
    Citation:
    aygfy7eMM3QbXhhS1i4lCMc81JDboMOxqdfM5kzN21uKeFWG79FNIdpfnArkZXEGqKgr2xZgzsEhchCezFP7JFjhiMEbG18uajij3z1p3LFoL5kypn7bqVoSvlK4G1ntZdWFm7ogsf5IU0NnEjq6yL48IJoLGP6pArrPap7LeIYP4rZEq7m3HjyUYWRrfCy0gREp9SsWZigVznMhJtPgwJ5RznIxu9FOOcBKNdHvCcBUNo5Qn8wyXfRm7L5U1xNDDLxF5pxjy5J830yTmM3zdUY0IzRlfoAYfst1pbmxJBUIOmiPHRVhCFcPiy6httNDvtfE37BXVaEaG9kEXXyCzFLiCXYJDKYAGIVOLDbVHfiHz7Af1UX5KuI9hdpAvDQsQJkSkNEPWyVdK2YhWe7lDNjL2BvrcEb75XMHwpi8YivQRNWDCvW3UXrbOLKuyjf4ZbHPRARPPdzHhNQp2nVPAK7naRE9GFxeBigiSsbguUBDtNfTosChDtDV6rUL1OBuSRcgtVbX2zP4CwYRWzreThb9zEPXH355k4MhnIY62gO7sVvJzZXBLK6Ic8n30BewIJiyZeQ1QNjxs5v2CC2lAfqVF7Mrm3gFR2MnvSpO4KAdztQe29z5hrqdurJfC66Apg50ksE6o7iUiEfsyb5O8FSxemrRM1H9hq28VZFIlqK9


    Code:
    :EncryptionCore.generateKey <Length:Number> <Charset:VariableName> <Output:VariableName>
      set /a temp.len=%~1-1
      %String%.length "!%~2!" temp.n
      set /a temp.n-=1
      set %~3=
      for /l %%a in (0,1,!temp.n!) do (
       %String%.getRandomString !temp.len! %~2 EncryptionCore.temp
       set %~3=!%~3!!%~2:~%%~a,1!!EncryptionCore.temp!
      )
      set %~3=!%~3!K!temp.len!
    Exit /b




  • %EncryptionCore%.encryptFile FilePath:Input FilePath:Output

    Cette fonction a besoin de EncryptionCore.readKey qui doit être appelé avant.
    Elle utilise la clé (lu par EncryptionCore.readKey) pour encrypter un fichier.

    Exemple de Fichier encrypter :
    Citation:
    04A0UsAVzllzYncjuyIBuHrfj3zZCbSYS3dk5qzts4BItRnXooLH0B1VcLNRW1hQbHRFYREgJC4xtDJ1::::::::KHgi17POtuIDQw8Tjj4xKHgi17POtu


    Code:
    :EncryptionCore.encryptFile <FilePath:String> <FilePath:String>
      if exist "%~1" (
         set temp.key=
        for /l %%a in (0,1,!EncryptionCore.Storage._index!) do (
         for /f "tokens=1,* delims==" %%1 in ('echo;!EncryptionCore.Storage._%%a!') do (
           set temp.key=!temp.key!--%%1%%2
         )
        )
       set temp.key=!temp.key:~2!
        echo;var fso=new ActiveXObject^("Scripting.FileSystemObject"^);var key="!temp.key:"=\"!".split^('--'^);var dKey={};for^(var i=0;i^<key.length;i++^){dKey[key[i].substring^(0,1^)]=key[i].substring^(1^);}var a=fso.OpenTextFile^("%~1",1^);var b=a.AtEndOfStream?"":a.ReadAll^(^);a.Close^(^);var data="";for^(var i=0;i^<b.length;i++^){var c=b.charAt^(i^);data+=typeof dKey[c] ^^!= 'undefined' ? dKey[c]: "::"+c+"::";}var c=fso.OpenTextFile^("%~2", 2, -1^);c.Write^(data.replace^(/[\n\r]/g,''^)^);c.Close^(^);> "%temp%\%~n0.js"
        cscript //nologo "%temp%\%~n0.js"
      ) else (
        echo;"%~1" does not exist^^!
       set /p ".=Please press any key to continue.."<nul
       pause>nul
        Exit /b 1
      )
    Exit /b




  • %EncryptionCore%.decryptFile FilePath:Input FilePath:Output

    Cette fonction a besoin de EncryptionCore.readKey qui doit être appelé avant.
    Elle utilise la clé (lu par EncryptionCore.readKey) pour décrypter un fichier.

    Code:
    :EncryptionCore.decryptFile <FilePath:String> <FilePath:String>
      if exist "%~1" (
        set temp.key=
        for /l %%a in (0,1,!EncryptionCore.Storage._index!) do (
         for /f "tokens=1,* delims==" %%1 in ('echo;!EncryptionCore.Storage._%%a!') do (
           set temp.key=!temp.key!--%%1%%2
         )
        )
       set temp.key=!temp.key:~2!
        echo;var fso=new ActiveXObject^("Scripting.FileSystemObject"^);var key="!temp.key:"=\"!".split^('--'^);var dKey={};for^(var i=0;i^<key.length;i++^){dKey[key[i].substring^(1^)]=key[i].substring^(0,1^);}var a=fso.OpenTextFile^("%~1",1^);var b=^(a.AtEndOfStream?"":a.ReadAll^(^)^).replace^(/::::::::/g,'\n'^);a.Close^(^);var data="";for^(var i=0;i^<b.length;i++^){if ^(b.charAt^(i^)=="\n"^){data+="\r\n";} else {if ^(b.charAt^(i^)^^!=":"^) {var c=b.substring^(i,i+!EncryptionCore.Storage._delta!-1^);data+=typeof dKey[c] ^^!= 'undefined' ? dKey[c] : "";i+=!EncryptionCore.Storage._delta!-2;} else {data+=b.charAt^(i+2^);i+=4;}}}var c=fso.OpenTextFile^("%~2", 2, -1^);c.Write^(data^);c.Close^(^);> "%temp%\%~n0.js"
        cscript //nologo "%temp%\%~n0.js"
      ) else (
        echo;"%~1" does not exist^^!
       set /p ".=Please press any key to continue.."<nul
       pause>nul
        Exit /b 1
      )
    Exit /b




  • %EncryptionCore%.readKey Length Charset Output

    Cette fonction a besoin de String.length et de EncryptionCore.getDeltaKey
    Elle permet de lire une clé en stockant le tout dans un tableau

    Code:
    :EncryptionCore.readKey <Key:VariableName>
      %EncryptionCore%.getDeltaKey %~1 temp.delta temp.key
      %String%.length "!temp.key!" temp.n
      set temp.i=0
      for %%d in (!temp.delta!) do for /l %%i in (0,!temp.delta!,!temp.n!) do (
        set temp.token=!temp.key:~%%~i,%%~d!
       if not "!temp.token!"=="" (
         set EncryptionCore.Storage._!temp.i!=!temp.token:~,1!=!temp.token:~1!
         set /a temp.i+=1
       )
      )
      set /a temp.i-=1
      set EncryptionCore.Storage._index=!temp.i!
      set EncryptionCore.Storage._delta=!temp.delta!
    Exit /b




  • %EncryptionCore%.getDeltaKey Key Charset Output

    Cette fonction permet de récupérer la longueur des chaînes aléatoires qui codent les caractères

    Code:
    :EncryptionCore.getDeltaKey <Key:VariableName> <Output.Delta:VariableName> <Output.Key:VariableName>
      set temp.i=0
      :EC.getDelta.loop
        set /a temp.i+=1
        for %%i in ("!temp.i!") do (
          set temp.j=!%~1:~-%%~i!
          if "!temp.j:~0,1!"=="K" goto :EC.getDelta.Endloop
        )
        set temp.length=!temp.j!
        goto :EC.getDelta.loop
      :EC.getDelta.Endloop
      set /a %~2=!temp.length!+2
      for %%i in ("!temp.i!") do set %~3=!%~1:~0,-%%~i!
    Exit /b





  • %String%.getRandomString Length Output

    Cette fonction a besoin de String.length
    Elle permet de générer une chaîne aléatoire

    Code:
    :String.getRandomString <Length:Number> <Charset:VariableName> <Output:VariableName>
      %String%.length "!%~2!" String.length
      set %~3=
      for /l %%a in (0,1,%~1) do (
        set /a r=!random!%%!String.length!
        for %%b in ("!r!,1") do set %~3=!%~3!!%~2:~%%~b!
      )
    Exit /b




  • %String%.length String Output

    Cette fonction permet de compter le nombre de caractères d'une chaîne de caractères

    Code:
    :String.length <String> <Output:VariableName>
      set "s=%~1#"
      set "len=0"
      for %%P in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
        if "!s:~%%P,1!" NEQ "" (
          set /a "len+=%%P"
          set "s=!s:~%%P!"
        )
      )
      set "%~2=!len!"
    Exit /b






Citation:
Key: a2oYLQc4Sww NSZcLE2JgcbWMyyWkXZEmcq0STkvBTO7dLB7m7Kh4y0eIt prlcgXSfTG4j9kHmS7gpvOmotk7TmhyjoaPHw gZi3xPOxvEvyEjajmig0fnbIk9krpWbGrXClW6YJz2t8PAmH5gT4Ua0nynKhEnlD XDRozIbARUAMx4pbH9yqEnOpUq2VJ9fS8ma0r39jGnTPhPusCpuAWqUqdZtAAno p2qBmuuk95g9Ofhxvaf9rXXR4bzw7E5n5p5AkVx6pHQPoVMrLyPvZjnDM1Agz zqTTjWlQuANOXcD01aOsB7eCtM4aVA C223 XFenRYDhl6iJsvhR0EXHZ2NSf1shF5HEw7iREjhGqp6iE6JBDFHVhxKQDEbqcIxajDH4L9i1JNja2yTFgFVKKfOX3q N3uLJRLZN aG8lMO rIL43RDZNihyiF1QT6yOOZCgZFMnV3P yjFAahz rQzxisnqp5ahRTdjOIk67kSSlE6IKvuscxTTPtPmTuwLqU66SeSWjKsIVqMQMGenFV5W3gmDIBZTsCXkdUZUj7YrHYl8kR9aQmUFZqZy5TsV8j 0p73qr90G8k1LPEcywpVgU2TYmaTZ A1M39AbwjtBIkm4bn7AeOWjM05H3EGZniWch6ZorxqQgSnd7uZuwj2oiJd8FazKeJ5Gth9WTdPmoB4TzK9

Message: NOXcD01aOsW6YJz2t8PAzIbARUAMx439jGnTPhPuCpuAWqUqdZNSZcLE2Jgcq0STkvBTO7NSZcLE2Jgc9krpWbGrXC3xPOxvEvyENSZcLE2JgcW6YJz2t8PAIt prlcgXSNSZcLE2JgcbH9yqEnOpUW6YJz2t8PAuk95g9OfhxCpuAWqUqdZNSZcLE2JgcTG4j9kHmS7zIbARUAMx439jGnTPhPuAAno p2qBm3xPOxvEvyEq0STkvBTO7yjoaPHw gZIt prlcgXS

Code pour décrypter le message ci-dessus



p.s. : Ceci pourrait t'intéresser : http://batch.xoo.it/t6014-EncryptionCore-Projet-de-programme-d-enchiffrage-…



Dernière édition par Flammrock le Jeu 7 Juin 2018 - 19:01; édité 3 fois

______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R] Problème Set 
Flammrock a écrit:
Voilà : https://pastebin.com/raw/SucJyGAi (CODE COMPLET + EXEMPLE)


Voici les différentes fonctions prêtes à être utilisées :

  • {{{EncryptionCore.generateKey (Public)}}}

    [/hide]
  • {{{EncryptionCore.encryptFile (Public)}}}

    [/hide]
  • {{{EncryptionCore.decryptFile (Public)}}}

    [/hide]
  • {{{EncryptionCore.readKey (Public)}}}

    [/hide]
  • {{{EncryptionCore.getDeltaKey (Private)}}}

    [/hide]

  • {{{String.getRandomString (Private)}}}

    [/hide]
  • {{{String.length (Private)}}}

    [/hide]



Citation:
Key: a2oYLQc4Sww NSZcLE2JgcbWMyyWkXZEmcq0STkvBTO7dLB7m7Kh4y0eIt prlcgXSfTG4j9kHmS7gpvOmotk7TmhyjoaPHw gZi3xPOxvEvyEjajmig0fnbIk9krpWbGrXClW6YJz2t8PAmH5gT4Ua0nynKhEnlD XDRozIbARUAMx4pbH9yqEnOpUq2VJ9fS8ma0r39jGnTPhPusCpuAWqUqdZtAAno p2qBmuuk95g9Ofhxvaf9rXXR4bzw7E5n5p5AkVx6pHQPoVMrLyPvZjnDM1Agz zqTTjWlQuANOXcD01aOsB7eCtM4aVA C223 XFenRYDhl6iJsvhR0EXHZ2NSf1shF5HEw7iREjhGqp6iE6JBDFHVhxKQDEbqcIxajDH4L9i1JNja2yTFgFVKKfOX3q N3uLJRLZN aG8lMO rIL43RDZNihyiF1QT6yOOZCgZFMnV3P yjFAahz rQzxisnqp5ahRTdjOIk67kSSlE6IKvuscxTTPtPmTuwLqU66SeSWjKsIVqMQMGenFV5W3gmDIBZTsCXkdUZUj7YrHYl8kR9aQmUFZqZy5TsV8j 0p73qr90G8k1LPEcywpVgU2TYmaTZ A1M39AbwjtBIkm4bn7AeOWjM05H3EGZniWch6ZorxqQgSnd7uZuwj2oiJd8FazKeJ5Gth9WTdPmoB4TzK9

Message: NOXcD01aOsW6YJz2t8PAzIbARUAMx439jGnTPhPuCpuAWqUqdZNSZcLE2Jgcq0STkvBTO7NSZcLE2Jgc9krpWbGrXC3xPOxvEvyENSZcLE2JgcW6YJz2t8PAIt prlcgXSNSZcLE2JgcbH9yqEnOpUW6YJz2t8PAuk95g9OfhxCpuAWqUqdZNSZcLE2JgcTG4j9kHmS7zIbARUAMx439jGnTPhPuAAno p2qBm3xPOxvEvyEq0STkvBTO7yjoaPHw gZIt prlcgXS

{{{Code pour décrypter le message ci-dessus}}}



p.s. : Ceci pourrait t'intéresser : http://batch.xoo.it/t6014-EncryptionCore-Projet-de-programme-d-enchiffrage-…


Wow comme à chaque fois c'est excellent, effectivement t'es plus que fortiche.
En revanche, j'ai une question, dans le programme (pastebin), elle va ou la clef qui est générer, j'ai l'impression que c'est toujours la même (ou alors je suis con et j'ai pas capté un truc xD)

Par contre, le scrypt que t'a donné pour décrypter le message ne marche pas, sa me met cette érreur :
Citation:

\AppData\Local\Temp\s.js(1, 1283) Erreur de compilation Microsoft J
Script: Erreur de syntaxe

Le fichier spécifié est introuvable.

Ce qui fait que j'ai dut adapté le scrypt principal (pastebin) pour décripter le message, la preuve que j'ai quand même un peu compris comment sa fonctionne ;p

Mais sinon, merci, j'ai enfin put avoir ce que je voulais au niveau de cryptage et c'est parfait, sujet résolue.




______________________________________________________
We're just an accident. We're just bad code. - Root
Répondre en citant
Message [R] Problème Set 
Bad-Code a écrit:
En revanche, j'ai une question, dans le programme (pastebin), elle va ou la clef qui est générer, j'ai l'impression que c'est toujours la même (ou alors je suis con et j'ai pas capté un truc xD)


Comme tu as pu le constater (ou pas xD), la clé est sous cette forme (Selon le charset utilisé) :
Citation:
arandomStringbrandomStringcrandomStringdrandomStringerandomStringfrandomStringgrandomStringhrandomStringirandomStringjrandomString
krandomStringlrandomStringmrandomStringnrandomStringorandomStringprandomStringqrandomStringrrandomStringsrandomStringtrandomString
urandomStringvrandomStringwrandomStringxrandomStringyrandomStringzrandomStringArandomStringBrandomStringCrandomStringDrandomString
ErandomStringFrandomStringGrandomStringHrandomStringIrandomStringJrandomStringKrandomStringLrandomStringMrandomStringNrandomString
OrandomStringPrandomStringQrandomStringRrandomStringSrandomStringTrandomStringUrandomStringVrandomStringWrandomStringXrandomString
YrandomStringZrandomString0randomString1randomString2randomString3randomString4randomString5randomString6randomString7randomString
8randomString9randomStringKDELTA


La clé est différente à chaque génération même si elles se ressemblent xDD
La clé généré se retrouve dans la variable key (dans le code pastebin) puis elle va dans un tableau lorsqu'on "lit" la clé


Bad-Code a écrit:
Par contre, le scrypt que t'a donné pour décrypter le message ne marche pas, sa me met cette érreur :

Désolé je n'avais pas vu, c'est le forum qui déforme le code à l'ajout de la colorisation syntaxique (j'ai corrigé)



Bad-Code a écrit:
Mais sinon, merci, j'ai enfin put avoir ce que je voulais au niveau de cryptage et c'est parfait, sujet résolue.

Nickel Mr. Green




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Message [R] Problème Set 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch