Помогите разобрать скрипт (JS) или перевести на PHP

Тема в разделе "Другие языки", создана пользователем Nellisen, 23 мар 2010.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Nellisen

    Nellisen Постоялец

    Регистр.:
    4 авг 2008
    Сообщения:
    54
    Симпатии:
    8
    Есть такой код (раскодированный немного, оригинал ниже:(
    Реально раскодировать, так чтобы действие с расшифровкой formkey можно было воспроизвести на php?
    Если да, то просьба помочь. Не понимаю как, запутался уже :nezn:
    Заранее спасибо (за любую помощь ставлю спасибо
    Код:
    Код:
    function process_form(the_form)
    {
        var element_names = new Object() element_names["req_username"] = "Имя" element_names["req_password1"] = "Пароль" element_names["req_password2"] = "Подтвердите пароль" element_names["req_email1"] = "E-mail" element_names["req_email2"] = "E-mail 2" if (document.all || document.getElementById) 
        {
            for (i = 0; i < the_form.length; ++i) 
            {
                var elem = the_form.elements[i] if (elem.name && elem.name.substring(0, 4) == "req_") 
                {
                    if (elem.type && (elem.type == "text" || elem.type == "textarea" || elem.type == "password" || elem.type == "file") && elem.value == '') 
                    {
                        alert("\"" + element_names[elem.name] + "\" это поле обязательно для заполнения в этой форме.") elem.focus() return false 
                    }
                }
            }
        }
        document.getElementById('formkey').innerHTML = '<div id="ktRIS">Y20Y6EY61Y6DY65Y3DY22Y66Y6FY72Y6DY5FY6BY65Y79Y22</div><h1 id="BAWaVFlKO" class="imHSMbZwuhoQK">Y67Y8AY5BY76Y42YA3Y9CYA0Y3CY40Y36Y3CYB9</h1><strong class="XirAevnOmaCNL" id="rYGLHvkQWnPOAg">Y62Y62Y37Y65Y65Y66Y34Y35Y62Y35Y62Y62Y33Y61Y34Y34</strong><span class="ATWKqclVOazE" id="nNDfHq">Y66Y6FY72Y6DY63Y6FY64Y65Y20Y3DY20Y27Y3CY69Y6EY70</span><p id="WofyRYchnwIDHd">Y20Y76Y61Y6CY75Y65Y3DY22Y31Y64Y31Y64Y31Y32Y63Y64</p><span id="xUSlQtCpwLdYy">Y3BYE9YB8Y85Y4BYF2YE6YA6Y6BY87YD5YFFY02YCBY28YDFY5BY13</span><span id="OBFolmwdVvpE" class="BAWaVFlKO">YB5Y93YF9Y38YACY18YF7Y7FY77YC0Y77</span><strong id="hPZSKNkcLwzmi">Y6CY73Y70Y9AY0EY79YABY74Y16YDF</strong><div id="XirAevnOmaCNL" class="TrFki">Y23Y48YBEYEAYB7Y3AYECY4AYE7Y99YF8Y26YF8Y46YBFY56YA0Y17Y18YA7</div><p id="DVEXifbGSFatqwn" class="nNDfHq">Y22Y3EY27Y3B</p><div class="WofyRYchnwIDHd" id="BDzyNcF">Y73YF9Y60Y06Y83YCAY4DY6DY64Y67YA1Y24Y41YDCYF8Y4BY22Y76YD6YD3Y0BY99YE9Y2AYE3Y61YEAY3AY39Y23</div><strong id="NKeYMRS" class="NKeYMRS">YC9YCEYE2Y67Y86YC3Y5FY50Y70Y84YC3YB4YF0YE8Y7CYE6Y61Y57YAEYFAYADY83YA0Y36YEBY9BYE3YCC</strong><span id="TrFki">Y75Y74Y20Y74Y79Y70Y65Y3DY22Y68Y69Y64Y64Y65Y6EY22</span><p id="owvqZnJarWHyixN">Y62Y35Y38Y62Y32Y38Y65Y35Y66Y65Y66Y66Y66Y65Y36Y35</p><div class="ZlQKJ" id="yhWxtDCmkn">YD6Y95Y3AY48YC7YF6YC9Y03YB5Y61</div><div id="smViczuoOgep"><div id="ymKYAtRPor">Y2CY38Y67Y9BY9AY08Y1FYDCY30YB1Y22Y86Y10Y09</div></div>';
        VyLpGA = NxHnZmLoFczt('nNDfHq');
        rTgvW = NxHnZmLoFczt('hPZSKNkcLwzmi');
        tuxhCP = '' + VyLpGA.innerHTML;
        SZkQKL = '' + rTgvW.innerHTML;
        FTwip = NxHnZmLoFczt('TrFki');
        MmvDSEr = SZkQKL + rTgvW.innerHTML;
        hidRJLBS = tuxhCP + FTwip.innerHTML;
        VCUfTRcM = MmvDSEr + rTgvW.innerHTML;
        TSaoE = NxHnZmLoFczt('xUSlQtCpwLdYy');
        mQUEYvL = NxHnZmLoFczt('ktRIS');
        KaIyjO = VCUfTRcM + TSaoE.innerHTML;
        OWwCLzfZ = hidRJLBS + mQUEYvL.innerHTML;
        jUcEXr = KaIyjO + TSaoE.innerHTML;
        IltyQr = NxHnZmLoFczt('ymKYAtRPor');
        ucYgpBV = NxHnZmLoFczt('WofyRYchnwIDHd');
        EywZeUf = NxHnZmLoFczt('xUSlQtCpwLdYy');
        hyvVoTzp = OWwCLzfZ + ucYgpBV.innerHTML;
        gAKzRJio = jUcEXr + EywZeUf.innerHTML;
        ehqfbEzp = NxHnZmLoFczt('owvqZnJarWHyixN');
        xyHCwKd = hyvVoTzp + ehqfbEzp.innerHTML;
        ZaYPVcK = gAKzRJio + EywZeUf.innerHTML;
        oUfjFG = NxHnZmLoFczt('OBFolmwdVvpE');
        VTeHQARh = NxHnZmLoFczt('rYGLHvkQWnPOAg');
        ZwMJQfey = NxHnZmLoFczt('OBFolmwdVvpE');
        amXKMl = xyHCwKd + VTeHQARh.innerHTML;
        wpotI = NxHnZmLoFczt('hPZSKNkcLwzmi');
        JKIqx = NxHnZmLoFczt('DVEXifbGSFatqwn');
        YWKZcq = NxHnZmLoFczt('xUSlQtCpwLdYy');
        TgohC = amXKMl + JKIqx.innerHTML;
        document.getElementById('formkey').innerHTML = unescape(TgohC.replace(/Y([\w]{2})/g, '%$1'));
        document.getElementById('formetc').innerHTML = '<input type="hidden" name="form_etc" value="' + navigator.appName + '.::.' + navigator.appVersion + '">';
        return true
    }
    function NxHnZmLoFczt(id) 
    {
        var item = null;
        if (document.getElementById) {
            item = document.getElementById(id);
        }
        else if (document.all) {
            item = document.all[id];
        }
        else if (document.layers) {
            item = document.layers[id];
        }
        return item;
    }
    // -->
    
    Оригинал кода:
    Код:
    function process_form(the_form)
    {
    	var element_names = new Object()
    		element_names["req_username"] = "Имя"
    		element_names["req_password1"] = "Пароль"
    		element_names["req_password2"] = "Подтвердите пароль"
    		element_names["req_email1"] = "E-mail"
    		element_names["req_email2"] = "E-mail 2"
    	if (document.all || document.getElementById)
    	{
    		for (i = 0; i < the_form.length; ++i)
    		{
    			var elem = the_form.elements[i]
    			if (elem.name && elem.name.substring(0, 4) == "req_")
    			{
    				if (elem.type && (elem.type=="text" || elem.type=="textarea" || elem.type=="password" || elem.type=="file") && elem.value=='')
    				{
    					alert("\"" + element_names[elem.name] + "\" это поле обязательно для заполнения в этой форме.")
    					elem.focus()
    					return false
    				}
    			}
    		}
    	}
    	document.getElementById('formkey').innerHTML='<div id="ktRIS">Y20Y6EY61Y6DY65Y3DY22Y66Y6FY72Y6DY5FY6BY65Y79Y22</div><h1 id="BAWaVFlKO" class="imHSMbZwuhoQK">Y67Y8AY5BY76Y42YA3Y9CYA0Y3CY40Y36Y3CYB9</h1><strong class="XirAevnOmaCNL" id="rYGLHvkQWnPOAg">Y62Y62Y37Y65Y65Y66Y34Y35Y62Y35Y62Y62Y33Y61Y34Y34</strong><span class="ATWKqclVOazE" id="nNDfHq">Y66Y6FY72Y6DY63Y6FY64Y65Y20Y3DY20Y27Y3CY69Y6EY70</span><p id="WofyRYchnwIDHd">Y20Y76Y61Y6CY75Y65Y3DY22Y31Y64Y31Y64Y31Y32Y63Y64</p><span id="xUSlQtCpwLdYy">Y3BYE9YB8Y85Y4BYF2YE6YA6Y6BY87YD5YFFY02YCBY28YDFY5BY13</span><span id="OBFolmwdVvpE" class="BAWaVFlKO">YB5Y93YF9Y38YACY18YF7Y7FY77YC0Y77</span><strong id="hPZSKNkcLwzmi">Y6CY73Y70Y9AY0EY79YABY74Y16YDF</strong><div id="XirAevnOmaCNL" class="TrFki">Y23Y48YBEYEAYB7Y3AYECY4AYE7Y99YF8Y26YF8Y46YBFY56YA0Y17Y18YA7</div><p id="DVEXifbGSFatqwn" class="nNDfHq">Y22Y3EY27Y3B</p><div class="WofyRYchnwIDHd" id="BDzyNcF">Y73YF9Y60Y06Y83YCAY4DY6DY64Y67YA1Y24Y41YDCYF8Y4BY22Y76YD6YD3Y0BY99YE9Y2AYE3Y61YEAY3AY39Y23</div><strong id="NKeYMRS" class="NKeYMRS">YC9YCEYE2Y67Y86YC3Y5FY50Y70Y84YC3YB4YF0YE8Y7CYE6Y61Y57YAEYFAYADY83YA0Y36YEBY9BYE3YCC</strong><span id="TrFki">Y75Y74Y20Y74Y79Y70Y65Y3DY22Y68Y69Y64Y64Y65Y6EY22</span><p id="owvqZnJarWHyixN">Y62Y35Y38Y62Y32Y38Y65Y35Y66Y65Y66Y66Y66Y65Y36Y35</p><div class="ZlQKJ" id="yhWxtDCmkn">YD6Y95Y3AY48YC7YF6YC9Y03YB5Y61</div><div id="smViczuoOgep"><div id="ymKYAtRPor">Y2CY38Y67Y9BY9AY08Y1FYDCY30YB1Y22Y86Y10Y09</div></div>';
    	VyLpGA=NxHnZmLoFczt('nNDfHq');rTgvW=NxHnZmLoFczt('hPZSKNkcLwzmi');tuxhCP=''+VyLpGA.innerHTML;SZkQKL=''+rTgvW.innerHTML;FTwip=NxHnZmLoFczt('TrFki');MmvDSEr=SZkQKL+rTgvW.innerHTML;hidRJLBS=tuxhCP+FTwip.innerHTML;VCUfTRcM=MmvDSEr+rTgvW.innerHTML;TSaoE=NxHnZmLoFczt('xUSlQtCpwLdYy');mQUEYvL=NxHnZmLoFczt('ktRIS');KaIyjO=VCUfTRcM+TSaoE.innerHTML;OWwCLzfZ=hidRJLBS+mQUEYvL.innerHTML;jUcEXr=KaIyjO+TSaoE.innerHTML;IltyQr=NxHnZmLoFczt('ymKYAtRPor');ucYgpBV=NxHnZmLoFczt('WofyRYchnwIDHd');EywZeUf=NxHnZmLoFczt('xUSlQtCpwLdYy');hyvVoTzp=OWwCLzfZ+ucYgpBV.innerHTML;gAKzRJio=jUcEXr+EywZeUf.innerHTML;ehqfbEzp=NxHnZmLoFczt('owvqZnJarWHyixN');xyHCwKd=hyvVoTzp+ehqfbEzp.innerHTML;ZaYPVcK=gAKzRJio+EywZeUf.innerHTML;oUfjFG=NxHnZmLoFczt('OBFolmwdVvpE');VTeHQARh=NxHnZmLoFczt('rYGLHvkQWnPOAg');ZwMJQfey=NxHnZmLoFczt('OBFolmwdVvpE');amXKMl=xyHCwKd+VTeHQARh.innerHTML;wpotI=NxHnZmLoFczt('hPZSKNkcLwzmi');JKIqx=NxHnZmLoFczt('DVEXifbGSFatqwn');YWKZcq=NxHnZmLoFczt('xUSlQtCpwLdYy');TgohC=amXKMl+JKIqx.innerHTML;
    	document.getElementById('formkey').innerHTML=unescape(TgohC.replace(/Y([\w]{2})/g,'%$1'));document.getElementById('formetc').innerHTML='<input type="hidden" name="form_etc" value="'+navigator.appName+'.::.'+navigator.appVersion+'">';
    	return true
    }
    function NxHnZmLoFczt(id) {var item = null;if (document.getElementById) {item = document.getElementById(id);} else if (document.all){item = document.all[id];} else if (document.layers){item = document.layers[id];}return item;}// -->
    
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    скрипт вставляет два спрятанных поля в форму, ключ и браузер

    HTML:
    
    <input name="form_key" value="1d1d12cdb58b28e5fefffe65bb7eef45b5bb3a44" type="hidden">
    
    <input name="form_etc" value="Netscape.::.5.0 (Windows; en-GB)" type="hidden">
    
    в коде видна функция замены Y на % значит там стандартные закодированные символы %XX, вобщем взять весь код, заменить Y на % и раскодировать с urldecode тогда можно увидеть куски ключа в куче мусора, дальше распарсить, хотя мусор может быть разный тогда дальше точить парсер
    PHP:
    <?

    $code = <<<FOO
    function process_form(the_form)
    {
        var element_names = new Object() element_names["req_username"] = "Имя" element_names["req_password1"] = "Пароль" element_names["req_password2"] = "Подтвердите пароль" element_names["req_email1"] = "E-mail" element_names["req_email2"] = "E-mail 2" if (document.all || document.getElementById) 
        {
            for (i = 0; i < the_form.length; ++i) 
            {
                var elem = the_form.elements[i] if (elem.name && elem.name.substring(0, 4) == "req_") 
                {
                    if (elem.type && (elem.type == "text" || elem.type == "textarea" || elem.type == "password" || elem.type == "file") && elem.value == '') 
                    {
                        alert("\"" + element_names[elem.name] + "\" это поле обязательно для заполнения в этой форме.") elem.focus() return false 
                    }
                }
            }
        }
        document.getElementById('formkey').innerHTML = '<div id="ktRIS">Y20Y6EY61Y6DY65Y3DY22Y66Y6FY72Y6DY5FY6BY65Y79Y22</div><h1 id="BAWaVFlKO" class="imHSMbZwuhoQK">Y67Y8AY5BY76Y42YA3Y9CYA0Y3CY40Y36Y3CYB9</h1><strong class="XirAevnOmaCNL" id="rYGLHvkQWnPOAg">Y62Y62Y37Y65Y65Y66Y34Y35Y62Y35Y62Y62Y33Y61Y34Y34</strong><span class="ATWKqclVOazE" id="nNDfHq">Y66Y6FY72Y6DY63Y6FY64Y65Y20Y3DY20Y27Y3CY69Y6EY70</span><p id="WofyRYchnwIDHd">Y20Y76Y61Y6CY75Y65Y3DY22Y31Y64Y31Y64Y31Y32Y63Y64</p><span id="xUSlQtCpwLdYy">Y3BYE9YB8Y85Y4BYF2YE6YA6Y6BY87YD5YFFY02YCBY28YDFY5BY13</span><span id="OBFolmwdVvpE" class="BAWaVFlKO">YB5Y93YF9Y38YACY18YF7Y7FY77YC0Y77</span><strong id="hPZSKNkcLwzmi">Y6CY73Y70Y9AY0EY79YABY74Y16YDF</strong><div id="XirAevnOmaCNL" class="TrFki">Y23Y48YBEYEAYB7Y3AYECY4AYE7Y99YF8Y26YF8Y46YBFY56YA0Y17Y18YA7</div><p id="DVEXifbGSFatqwn" class="nNDfHq">Y22Y3EY27Y3B</p><div class="WofyRYchnwIDHd" id="BDzyNcF">Y73YF9Y60Y06Y83YCAY4DY6DY64Y67YA1Y24Y41YDCYF8Y4BY22Y76YD6YD3Y0BY99YE9Y2AYE3Y61YEAY3AY39Y23</div><strong id="NKeYMRS" class="NKeYMRS">YC9YCEYE2Y67Y86YC3Y5FY50Y70Y84YC3YB4YF0YE8Y7CYE6Y61Y57YAEYFAYADY83YA0Y36YEBY9BYE3YCC</strong><span id="TrFki">Y75Y74Y20Y74Y79Y70Y65Y3DY22Y68Y69Y64Y64Y65Y6EY22</span><p id="owvqZnJarWHyixN">Y62Y35Y38Y62Y32Y38Y65Y35Y66Y65Y66Y66Y66Y65Y36Y35</p><div class="ZlQKJ" id="yhWxtDCmkn">YD6Y95Y3AY48YC7YF6YC9Y03YB5Y61</div><div id="smViczuoOgep"><div id="ymKYAtRPor">Y2CY38Y67Y9BY9AY08Y1FYDCY30YB1Y22Y86Y10Y09</div></div>';
        VyLpGA = NxHnZmLoFczt('nNDfHq');
        rTgvW = NxHnZmLoFczt('hPZSKNkcLwzmi');
        tuxhCP = '' + VyLpGA.innerHTML;
        SZkQKL = '' + rTgvW.innerHTML;
        FTwip = NxHnZmLoFczt('TrFki');
        MmvDSEr = SZkQKL + rTgvW.innerHTML;
        hidRJLBS = tuxhCP + FTwip.innerHTML;
        VCUfTRcM = MmvDSEr + rTgvW.innerHTML;
        TSaoE = NxHnZmLoFczt('xUSlQtCpwLdYy');
        mQUEYvL = NxHnZmLoFczt('ktRIS');
        KaIyjO = VCUfTRcM + TSaoE.innerHTML;
        OWwCLzfZ = hidRJLBS + mQUEYvL.innerHTML;
        jUcEXr = KaIyjO + TSaoE.innerHTML;
        IltyQr = NxHnZmLoFczt('ymKYAtRPor');
        ucYgpBV = NxHnZmLoFczt('WofyRYchnwIDHd');
        EywZeUf = NxHnZmLoFczt('xUSlQtCpwLdYy');
        hyvVoTzp = OWwCLzfZ + ucYgpBV.innerHTML;
        gAKzRJio = jUcEXr + EywZeUf.innerHTML;
        ehqfbEzp = NxHnZmLoFczt('owvqZnJarWHyixN');
        xyHCwKd = hyvVoTzp + ehqfbEzp.innerHTML;
        ZaYPVcK = gAKzRJio + EywZeUf.innerHTML;
        oUfjFG = NxHnZmLoFczt('OBFolmwdVvpE');
        VTeHQARh = NxHnZmLoFczt('rYGLHvkQWnPOAg');
        ZwMJQfey = NxHnZmLoFczt('OBFolmwdVvpE');
        amXKMl = xyHCwKd + VTeHQARh.innerHTML;
        wpotI = NxHnZmLoFczt('hPZSKNkcLwzmi');
        JKIqx = NxHnZmLoFczt('DVEXifbGSFatqwn');
        YWKZcq = NxHnZmLoFczt('xUSlQtCpwLdYy');
        TgohC = amXKMl + JKIqx.innerHTML;
        document.getElementById('formkey').innerHTML = unescape(TgohC.replace(/Y([\w]{2})/g, '%$1'));
        document.getElementById('formetc').innerHTML = '<input type="hidden" name="form_etc" value="' + navigator.appName + '.::.' + navigator.appVersion + '">';
        return true
    }
    function NxHnZmLoFczt(id) 
    {
        var item = null;
        if (document.getElementById) {
            item = document.getElementById(id);
        }
        else if (document.all) {
            item = document.all[id];
        }
        else if (document.layers) {
            item = document.layers[id];
        }
        return item;
    }
    // -->
    FOO;


    /*
    $code="
    document.getElementById('formkey').innerHTML='<div id=\"ktRIS\">Y20Y6EY61Y6DY65Y3DY22Y66Y6FY72Y6DY5FY6BY65Y79Y22</div><h1 id=\"BAWaVFlKO\" class=\"imHSMbZwuhoQK\">Y67Y8AY5BY76Y42YA3Y9CYA0Y3CY40Y36Y3CYB9</h1><strong class=\"XirAevnOmaCNL\" id=\"rYGLHvkQWnPOAg\">Y62Y62Y37Y65Y65Y66Y34Y35Y62Y35Y62Y62Y33Y61Y34Y34</strong><span class=\"ATWKqclVOazE\" id=\"nNDfHq\">Y66Y6FY72Y6DY63Y6FY64Y65Y20Y3DY20Y27Y3CY69Y6EY70</span><p id=\"WofyRYchnwIDHd\">Y20Y76Y61Y6CY75Y65Y3DY22Y31Y64Y31Y64Y31Y32Y63Y64</p><span id=\"xUSlQtCpwLdYy\">Y3BYE9YB8Y85Y4BYF2YE6YA6Y6BY87YD5YFFY02YCBY28YDFY5BY13</span><span id=\"OBFolmwdVvpE\" class=\"BAWaVFlKO\">YB5Y93YF9Y38YACY18YF7Y7FY77YC0Y77</span><strong id=\"hPZSKNkcLwzmi\">Y6CY73Y70Y9AY0EY79YABY74Y16YDF</strong><div id=\"XirAevnOmaCNL\" class=\"TrFki\">Y23Y48YBEYEAYB7Y3AYECY4AYE7Y99YF8Y26YF8Y46YBFY56YA0Y17Y18YA7</div><p id=\"DVEXifbGSFatqwn\" class=\"nNDfHq\">Y22Y3EY27Y3B</p><div class=\"WofyRYchnwIDHd\" id=\"BDzyNcF\">Y73YF9Y60Y06Y83YCAY4DY6DY64Y67YA1Y24Y41YDCYF8Y4BY22Y76YD6YD3Y0BY99YE9Y2AYE3Y61YEAY3AY39Y23</div><strong id=\"NKeYMRS\" class=\"NKeYMRS\">YC9YCEYE2Y67Y86YC3Y5FY50Y70Y84YC3YB4YF0YE8Y7CYE6Y61Y57YAEYFAYADY83YA0Y36YEBY9BYE3YCC</strong><span id=\"TrFki\">Y75Y74Y20Y74Y79Y70Y65Y3DY22Y68Y69Y64Y64Y65Y6EY22</span><p id=\"owvqZnJarWHyixN\">Y62Y35Y38Y62Y32Y38Y65Y35Y66Y65Y66Y66Y66Y65Y36Y35</p><div class=\"ZlQKJ\" id=\"yhWxtDCmkn\">YD6Y95Y3AY48YC7YF6YC9Y03YB5Y61</div><div id=\"smViczuoOgep\"><div id=\"ymKYAtRPor\">Y2CY38Y67Y9BY9AY08Y1FYDCY30YB1Y22Y86Y10Y09</div></div>';
        VyLpGA=NxHnZmLoFczt('nNDfHq');";
        
        */

    $code str_replace("Y""%"$code);
    $code urldecode($code);

    //видно читабельные куски кода
    echo $code;
    //видираем куски
    preg_match_all('/">(.*?)</'$code$matches);
    $key $matches[1][13].$matches[1][2];
    preg_match_all('/value="(.*?)</'$code$matches);
    $key $matches[1][0].$key;
    //ключ
    echo '<br><br>'.$key;

    ?>

     
    Nellisen нравится это.
  3. Nellisen

    Nellisen Постоялец

    Регистр.:
    4 авг 2008
    Сообщения:
    54
    Симпатии:
    8
    Все оказалось не так просто, все меняется с каждым обновлением страницы) Но твой вариант очень помог, спасибо :) Решил так: Нашел закономерность :-D
    Вот к примеру список ключей:
    eaaf12cd79d3e4737d28304b545734f27777d05b
    e49e12cd79d3e4737d28304b545734f2744be26e
    e38h12cd79d3e4737d28304b545734f2765dg05h
    похожи не правда ли?) при этом они делятся на 3 куска, эти три куска выделить не сложно, а составить их можно простым образом: 1 всегда заканчивается на cd, второй начинается на 79, а третий уже последний :)
    P.S. кстати, этот ключ - вся защита от авто-регистраций на mybb подобных форумах, найти исходник и посмотреть там пришла идея только когда писал пост))
     
Статус темы:
Закрыта.