Tam Sürümünü Görmek İçin : Şifrelenmiş sayfa çözmek
Bir Javascript ya da html sayfası şifrelenebiliyordu sanırım, peki bunu çözebilirmiyiz?
nasıl şifrelendiğini bilmeden, nasıl çözüleceğini bilmem nasıl bileceğiz. html kod şifreli ise explorer nasıl görüntülüyor onu? şu işi biraz daha açsana, konuyla ilgili bir şey bilmiyorum ve merâk ettim şimdi.
Html kodlarının şifrelendiğini duymuştum ama hiç ilgilenmemiştim bir ara sana dosyayı göndereyim görürsün.
Bu şifreleme HTML sayfasına bir JS içerletip yapılan şifrelemeye benzeyen şey mi?
Valla daha önce bir iki sitede görmüştüm acaip bir şekilde karmakarışık hale getiriliyor kodlar. Bahsettiğim .js ise aşağıda ekte ve bu normal olarak çalışıyor sayfada.
vayyy... herhalde kodu js ile açabilecekleri şekilde js içine gömüyorlar (bir değişken) sonra onu yine js ile oluşturdukları algoritma ile açıyorlar. iyi bir js'ci algoritmayı çözer. ama helâl valla, sırf html kodu gizlemek için yapılan şu işe bakın. js ile document.write yazarak filân yazdırıyor olmalılar bütün kodu. değer mi bilmem.
escape() metoduyla şifrelenmiş html kodlarını(ki bu aslında bir şifreleme sayılmaz) unescape() metoduyla eski haline getirebilirsiniz...
Ayrıca Şahin'in belirttiği js dosyasını daha yeni çektim; bu akşam biraz inceleyip yarın sabah tüm püf noktalarını buraya yazarım...
Kaynak kodları görünen algoritmalar kesinlikle çözülebilen algoritmalardır...
Valla unescape yapabilirsen fixman bu jsyi büyük sevaba girersin :)
Valla ben denedim ama bu çok farklı fixman. Çözemedim.
Çözebildiğim kısmı bu oldu :)
eval(unescape('k=unescape("%0D%0A");k2= mrj(tm);document.write(k2);function mrj(s) {var un="";l=s.length;oh=Math.round(l/2);for(i=0;i<=oh;i++){a=s.charAt(i);b=s.charAt(i+oh);c=a+b;un=u n+c;};P=un.substr(0,l);P=P.replace(/`/g,"'");P=P.replace(/@@/g,"\\");f = /qg/g;P=P.replace(f,k);return P;};'));
<form>
Type something:<input name="data" width="70" size="70">
<br>
<input type="button" onclick="data2.value=escape(data.value)" value="Escape">
<input type="button" onclick="data2.value=unescape(data.value)" value="unEscape">
<br>
Get your results:<input name="data2" width="70" size="70">
</form>
Belki lazım olur unescape için kullanılacak form.
con_simit
31/03/2003, 23:14
0. Selam
1. Aslında sorulan nedir anlayamadım.
1.1 Gördüğümü yazayım belki işe yarar. Şöyle bir script var:<script>
dl = document.layers;
da = document.all;
ge = document.getElementById;
ws = window.sidebar;
var msg='';function nem(){return true};
window.onerror = nem;var o42;
//---------------------------------------------------------------------------//
// //
// LITEFUNCTIONS.js //
// Version 1.2
// //
//---------------------------------------------------------------------------//
// //
// These are the functions which are necessary for TextArea Rich to operate //
// Each functions is shown below with a description of it's process. //
// //
// If you require any help installing TextArea Rich or have any questions, //
// please visit http://www.textarearich.com/forum/ and post us a question. //
// //
//---------------------------------------------------------------------------//
// //
// Many Thanks for purchasing TextArea Rich, //
// Kind Regards, //
// The TextArea Rich Team //
// //
//---------------------------------------------------------------------------//
<!--htmlgstart -->
//---------------------------------------------------------------------
//function name: doImage
//added: pre 27/11/02
//desc: open the image window
//---------------------------------------------------------------------
function doImage()
{
iView.focus();
imageWin = window.open('insert_image.htm','','width=500,heigh t=430,scrollbars=yes,resizable=yes,titlebar=1');
}
//---------------------------------------------------------------------
//function name: Init
//added: 19/10/02
//desc: init is called when the body is loaded. This will draw the editor
// buttons and set the table borders.
//---------------------------------------------------------------------
function Init()
{
iView.document.designMode = 'On';
viewMode = 1;
// Show all controls
controls_basic.style.display = 'inline';
controls_wysiwyg1.style.display = 'inline';
view_source.style.display = 'none';
view_source_mode.style.display = 'none';
view_wysiwyg.style.display = 'inline';
view_wysiwyg_mode.style.display = 'inline';
}
//---------------------------------------------------------------------
//function name: isSelected
//added: 19/10/02
//desc: check that there is a selection. this can be text or an image (control)
//---------------------------------------------------------------------
function isSelected() {
if ((iView.document.selection.type == "Text") || (iView.document.selection.type == "Control")) {
return true;
} else {
alert("Please highlight the text before pressing this button!");
return false;
}
}
//---------------------------------------------------------------------
//function name: cancel save
//added: 21/10/02
//desc: not used in the editor, but can be used.
// assign the function to a button, and when pressed it will open a dialoge box
// asking if the user is sure they want to exit without saving.
//---------------------------------------------------------------------
function cancelSave() {
var agree=confirm("Are you sure you want to cancel without saving changes?");
if (agree)
return true;
else
return true;
}
//---------------------------------------------------------------------
//function name: save
//added: 21/10/02
//desc: takes the contents of the Editor window and saves
// the data in a hidden field in the form called "content"
//---------------------------------------------------------------------
function savedocument()
{
document.saveform.content.value = iView.document.documentElement.outerHTML;
}
//---------------------------------------------------------------------
//function name: MOUSE OVER / MOUSE OUT class styles
//added: 15/10/02
//desc: init is called when the body is loaded. This will draw the editor
// buttons and set the table borders.
//---------------------------------------------------------------------
function selOn_dis(ctrl)
{
ctrl.style.borderBottom = "buttonshadow solid 1px";
ctrl.style.borderLeft = "buttonhighlight solid 1px";
ctrl.style.borderRight = "buttonshadow solid 1px";
ctrl.style.borderTop = "buttonhighlight solid 1px";
}
function selOn_tab(ctrl)
{
ctrl.style.cursor = 'hand';
}
function selOn(ctrl)
{
ctrl.style.borderColor = '#EE9332';
ctrl.style.cursor = 'hand';
ctrl.style.backgroundColor = '#E2C3A4';
}
function selOff(ctrl)
{
ctrl.style.backgroundColor = '#F0E1CA';
ctrl.style.borderColor = '#F0E1CA';
}
function selDown(ctrl)
{
ctrl.style.borderBottom = "buttonhighlight solid 1px";
ctrl.style.borderLeft = "buttonshadow solid 1px";
ctrl.style.borderRight = "buttonhighlight solid 1px";
ctrl.style.borderTop = "buttonshadow solid 1px";
}
function selUp(ctrl)
{
ctrl.style.backgroundColor = '#E2C3A4';
ctrl = null;
}
//---------------------------------------------------------------------
// BEGIN STANDARD MSHTML CONTROLS
//---------------------------------------------------------------------
// pass the code like:
// onClick="cmdExec('undo','null')"
function cmdExec(cmd,opt) {
iView.focus();
iView.document.execCommand(cmd,"",opt);
}
//---------------------------------------------------------------------
//function name: doForeCol
//added: 25/10/02
//desc: opens a popup window with selection of colours to choose from
// once choice is made, popup closes and forecolor is added
//---------------------------------------------------------------------
function doForeCol(val)
{
if (isSelected())
{
window.open('editor/files/pick_forecol.htm','popuppage','width=500,height=50 0,top=100,left=100');
if (val != null)
{
iView.document.execCommand('forecolor', false, val);
}
}
}
//---------------------------------------------------------------------
//function name: doBackCol
//added: 25/10/02
//desc: opens a popup window with selection of colours to choose from
// once choice is made, popup closes and forecolor is added
//---------------------------------------------------------------------
function doBackCol(val)
{
if (isSelected())
{
window.open('editor/files/pick_backcol.htm','popuppage','width=500,height=50 0,top=100,left=100');
if (val != null)
{
iView.document.execCommand('backcolor', false, val);
}
}
}
//------------------------------------- -------------------------------
//function name: doLink
//added: 15/11/02
//desc: opens a link pop up box. If selection is already a link, the
// default values are loaded. otherwise they are left blank.
//---------------------------------------------------------------------
function doLink()
{
if (isSelected()) {
window.open('editor/files/insert_link.htm','popuppage','width=420,height=350 ,top=100,left=100');
}
}
//---------------------------------------------------------------------
//function name: doFont
//added: 25/10/02
//desc: change the font from the drop down box
//---------------------------------------------------------------------
function doFont(fName)
{
if(fName != '')
iView.document.execCommand('fontname', false, fName);
}
//---------------------------------------------------------------------
//function name: doSize
//added: 25/10/02
//desc: change the size from the drop down box
//---------------------------------------------------------------------
function doSize(fSize)
{
if(fSize != '')
iView.document.execCommand('fontsize', false, fSize);
}
//---------------------------------------------------------------------
//function name: toggle
//added: 12/10/02
//desc: Toggle between SOURCE and WYSIWYG modes
//---------------------------------------------------------------------
function toggle()
{
if(viewMode == 1)
{
iHTML = iView.document.body.outerHTML;
iView.document.body.innerText = iHTML;
// Hide or show controls
controls_basic.style.display = 'inline';
controls_wysiwyg1.style.display = 'none';
view_source.style.display = 'inline';
view_source_mode.style.display = 'inline';
view_wysiwyg.style.display = 'none';
view_wysiwyg_mode.style.display = 'none';
//get the current font/face values
fontFamily = iView.document.body.style.fontFamily
fontSize = iView.document.body.style.fontSize
text = iView.document.body.text
bgColor = iView.document.body.bgColor
background = iView.document.body.background
//change the font to editor code
iView.document.body.style.fontFamily = "Courier"
iView.document.body.style.fontSize = "10pt"
iView.document.body.text = '#333366';
iView.document.body.bgColor = '#ffffff';
iView.document.body.background = '';
iView.focus();
viewMode = 2; // Code
}
else
{
iText = iView.document.body.innerText;
iView.document.body.innerHTML = iText;
// Show all controls
controls_basic.style.display = 'inline';
controls_wysiwyg1.style.display = 'inline';
view_source.style.display = 'none';
view_source_mode.style.display = 'none';
view_wysiwyg.style.display = 'inline';
view_wysiwyg_mode.style.display = 'inline';
iView.document.body.style.fontFamily = fontFamily;
iView.document.body.style.fontSize = fontSize;
iView.document.body.text = text;
iView.document.body.bgColor = bgColor;
iView.document.body.background = background;
iView.focus();
viewMode = 1; // WYSIWYG
}
}
//end litefunctions
<!--htmlgstop -->
2. Kolay gelsin.
con_smit benden önce davranmış... Ama yine de dün akşam hazırladığım tutorial'ı yazayım :
JavaScript şifrelemek için gomik bir yöntem... Emin olun bunu ve buna benzer algoritmaları hepiniz çözebilirsiniz...
Başlıyoruz :
Şahin'in yayınladığı script dosyası burada :
http://www21.brinkster.com/kemalersin/fxscode/4ceviz/encode/encoding_script.txt
Şifrelenmiş metin ne kadar karmaşık ve uzun olsa da, şifreleme algoritması bir o kadar basit ve kısa!
Dosyadaki "tm" değişkenine aktarılan ve en alt satırdaki "eval(unescape())" işlemine kadar yayılmış olan metne şifre çözme işlemi uygulandığında bunun bir java script kodu olduğunu görüyoruz :
http://www21.brinkster.com/kemalersin/fxscode/4ceviz/encode/decoding_script.txt
Şifreyi çözen algoritmada yine Şahin'in script dosyasının en alt kısmına gizlenmiş :
eval(unescape('%6B%3D%75%6E%........'));
Burada ilk bakışta kafanızı karıştıran karakterler aslında escape() işleminden geçirilmiş bir fonksiyon. unescape() metoduyla fonksiyon eski haline getirilerek eval() metoduyla çalıştırılıyor. Bu fonksiyona aşağıdaki bağlantıya tıklayarak ulaşabilirsiniz :
http://www21.brinkster.com/kemalersin/fxscode/4ceviz/encode/decoder_function.txt
Az öncede bahsettiğim gibi bu, şifreyi çözmeye yarayan algoritma. Bu fonksiyon kullanılarak şifrelenen metinleri sayfanızda yazdırabilirsiniz. Nihayet bu scriptte de yine bir java script yazdırılıyor.
Eğer şifre çözme algoritması elinizdeyse şifreleme algoritmasını ya da en azından orjinal algoritmaya yakın bir algoritmayı tekrar yazabilirsiniz. Ben şifreleme fonksiyonunu oluştururken "decoder_function.txt" dosyasında verilen fonksiyonu tersine çevirdim :
http://www21.brinkster.com/kemalersin/fxscode/4ceviz/encode/decoder_script.htm
Özgün algoritmaya yaklaştığımı tahmin ediyorum.
var k=unescape("%0D%0A")
function pss(t){
var un1="",un2="",P=""
t=t.replace(/'/g,"`")
t=t.replace(/\\/g,"@@")
for(i=0;i<=t.length;i++)t=t.replace(k,"qg")
l=t.length
for(i=0;i<=l;i+=2){
un1+=t.charAt(i)
un2+=t.charAt(i+1)
}
P=un1+un2
}
Bu fonksiyonu satır satır çözümlersek :
1- k değişkenine "Enter" tuşunun değeri aktarılıyor.
2- Şifrelenecek metin, t değişkenine aktarılıyor.
3- t içindeki "'" karakterleri ` ile değiştiriliyor.
4- t içindeki "\" karakterleri @@ ile değiştiriliyor.
5- t içindeki satırbaşları qg ile değiştiriliyor.
6- l değişkenine t değişkeninin karakter sayısı aktarılıyor.
7- Sıfırdan l değişkeninin değerine kadar sürecek olan bir döngü sayaç her adımda iki arttırılacak şekilde başlatılıyor.
8- t değişkenine aktarılan metin içerisinde sıra numarası çift olan karakterler un1 değişkenine aktarılıyor.
9- t değişkenine aktarılan metin içerisinde sıra numarası tek olan karakterler un2 değişkenine aktarılıyor.
10- un1 ve un2 değişkenleri birleştirilerek yeni değer P değişkenine aktarılıyor.
İşte P değişkeninin değeri bizim şifrelenmiş metnimizdir.
Örneğin "123456" metnini şifrelediğimizi düşünelim :
123456 // Şifrelenmemiş metin
1 2 3 4 5 6
| | | | | |
| | | | | |
| -----|-----------|--------------> Karakter sıra numarası tek olanlar.
| | |
--------------------------------------> Karakter sıra numarası çift olanlar.
un1 = 135
un2 = 246
P = 135246 // Şifrelenmiş metin.
Aynı algoritma uygulandığında "fixman" "fxaimn" oluyor.
Umarım yardımcı olabilmişimdir.
Sevgiler.
Not : Srpi rln aaı!.citnkaııyzrm. :)
http://www21.brinkster.com/kemalersin/fxscode/4ceviz/encode/decoder_script.htm
adresindeki benim hazırladığım tahmini algoritmayı denemenizi tekrar öneriyorum...
Böylece bu scriptin nasıl şifrelendiğini daha iyi anlayabilirsiniz!
Kolay gelsin...
Not : Örnek olarak algoritma sayfasının(decoder_script.htm) kaynak kodlarını şifreleyebilirsiniz.
Teşekkürler fixman, akşam baya kafa patlattım con_simitin yardımıylada escape konusunu çözdüm sonunda :)
"bu.js" dosyasının kullandığı algoritmayı çözmek o kadar da zor değilmiş di mi Şahin usta?
Sevgiler dost...
:super:
Valla zor değilde zaman işte zaman en büyük problem :)
captainzap
26/03/2006, 01:02
Yeniden başlık açmak istemedim...
yıllar önce birkaç programla html i şifreleyerek çalıştırıyordum en azından direk insanlar gelip kaynak koduna bakarak siteden birşeyler yürütmüyorlardı. yalnız html i şifrelerken tabi bunun şifrelenmemiş halinide çözebilirsiniz biraz zaman harcayarak. Bildiğiniz html encoder lar var mı bunu gören siteler de var aslında mesala http://www.codehouse.com/webmaster_tools/html_encoder/
html girişim
<a href="selam.htm">link</a>
Çıktısı
<script type="text/javascript">document.write('\u003c\u0061\u0020\u0068\u0072\u00 65\u0066\u003d\u0022\u0073\u0065\u006c\u0061\u006d \u002e\u0068\u0074\u006d\u0022\u003e\u006c\u0069\u 006e\u006b\u003c\u002f\u0061\u003e')</script>
gerçi bu javascriptle şifreliyor
daha başka türleri de vardır tabi ... araştırmak lazım... bunları yapmak biraz paranoyaklık oluyor gibi :hmmm:
samurai_x
29/05/2008, 19:31
selam arkadaşlar acil lazım bir çözülmeyi bekleyen bir js dosyam var yardım edebilirseniz çok memnun olurum
eval(function(E,I,A,D,J,K,L,H){function C(A){return A<62?String.fromCharCode(A+=A<26?65:A<52?71:-4):A<63?'_':A<64?'$':C(A>>6)+C(A&63)}while(A>0)K[C(D--)]=I[--A];function N(A){return K[A]==L[A]?A:K[A]}if(''.replace(/^/,String)){var M=E.match(J),B=M[0],F=E.split(J),G=0;if(E.indexOf(F[0]))F=[''].concat(F);do{H[A++]=F[G++];H[A++]=N(B)}while(B=M[G]);H[A++]=F[G]||'';return H.join('')}return E.replace(J,N)}('N s=O c(),r=O c(),J,W=O c(),K,e=BP,BG=F,j,b,Q,a;x baslat(){s["S"]=w.$("isim1").Z;r["S"]=w.$("isim2").Z;s["R"]=D;r["R"]=D;Q=E;w.$("isimler").X.t="V";w.$("s").3=s["S"];w.$("r").3=r["S"];BF=w.$("0");L="AEI\\u0130O\\xd6U\\xdc";M(C=D;C<L.k;C++){6=w._("q");6.3=L[C];BF.8(6)}BE=w.$("5");L="BQ\\xc7DFG\\u011eHJKLMNPRS\\u015eTVYZ";M(C=D;C<L.k;C++){6=w._("q");6.3=L[C];BE.8(6)}w.$("oyunalani").X.t="Y";2()}x 2(){d((Q==E?s["S"]:r["S"])+", BM\\xfctfen bir l tutup Tamam BK\\xfc\\u011fmesine BN\\u0131klay\\p");w.$("BC").X.t="V";w.$("1").X.t="Y";w.$("l").Z="";w.$("5").BI=D;w.$("0").BI=D;j=e;7=BG;w.$("j"+((Q==E)?"F":"E")).3=j+"("+7+")";w.$("j"+((Q==E)?"E":"F")).3="";w.$("j"+((Q==E)?"E":"F")).BH="";4=w.$("BA");while(4.hasChildNodes())4.removeChild(4.lastChil d);w.$("BB").P=""}x yeniOyun(){w.$("1").X.t="V";w.$("z").X.t="V";w.$("BC").X.t="Y";w.$("puandurumu").X.t="Y";J=w.$("l").Z;J=J.replace(/C/BL,"<A href="file://\\u0130");J=J.toUpperCase();y=w.getElementsByName("a");M(H=D;H<y.k;H++)I(y[H].checked)a=y[H].Z;o=w._("tr");M(N">\\u0130");J=J.toUpperCase();y=w.getElementsByName("a");M(H=D;H<y.k;H++)I(y[H].checked)a=y[H].Z;o=w._("tr");M(N H=D;H<J.k;H++){m=w._("td");o.8(m);W[H]=m}w.$("BA").8(o);K="";b="";9()}x 9(){N H=true;M(N G=D;G<J.k;G++)I(K.u(J[G])!=-E)W[G].3=J[G];T I(J[G]!=" "){W[G].3="G";H=g}I(H&&K!=J+"B"){w.$("f").3="Kelime bulundu. v : "+(Q==E?r["S"]:s["S"]);w.$("z").X.t="Y";I(Q==E){r["R"]++;Q=F}T{s["R"]++;Q=E}w.$("h").3=s["R"];w.$("BD").3=r["R"]}}x i(H,G){I(G!="A")U=w.$(H?"0":"5").Z;T U=G;I(U=="B")n;I(b.u(U)>=D){d("BJ harfi zaten j ettiniz.");n}T I(G!="A")b+=U;I(J.u(U)>=D){K+=U;9();n}T I(H){I(7>D){7--;j--}T j-=F}T j--;I(j<D)j=D;w.$("BB").P="hangman_"+(e-j-E)+".gif";I(j<=BO)w.$("j"+((Q==E)?"F":"E")).BH="kirmizi";w.$("j"+((Q==E)?"F":"E")).3=j+"("+7+")";I(j<=D){I(Q==E){s["R"]++;Q=F}T{r["R"]++;Q=E}K=J+"B";9();w.$("f").3="Tahmin Hakk\\p\\u0131z doldu. v : "+(Q==F?s["S"]:r["S"]);w.$("z").X.t="Y";w.$("h").3=s["R"];w.$("BD").3=r["R"]}}x joker1(){d("Tutulan \\u015fey (file://\\u015fey) : "+a);i(g,"A")}','Q|X|i|0|1|2|_|$|if|asd|fvf|str|for|var|new|sr c|gfgf|puan|isim|else|harf|none|nhnh|style|block|v alue|ipucu|nhgnh|Array|alert|bgvbv|mesaj|false|pua n1|hamle|tahmin|length|kelime|tdElem|return|trElem |u0131n|option|oyuncu2|oyuncu1|display|indexOf|Kaz anan|document|function|ipucular|oyunsonu|sesliler| oyunbasi|oyunBasi|innerHTML|tabloElem|sessizler|op tionElem|sesliTahmin|appendChild|kelimeGoster|crea teElement|getElementById|harfler|resim|oyunortasi| puan2|select2|select1|mjmj|className|selectedIndex |O|d|g|l|t|3|9|BC'.split('|'),81,80,/[\w\$]+/g,{},{},[]))
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.