2014-01-14 2 views
1
var b=new Array(102,50,57,101,52,55,53,54,49,57,55,97,100,55,52,99,48,56,53,100,55,97,98,53,101,101,102,100,49,49,101,54,50,97,100,48,97,101,49,52,38,104,61,50,52,61,56,55,101,99,102,110,111,51,55,78,109,114,111,57,101,54,102,51,101,38,101,56,54,56,53,53,54,54,53,51,56,102,57,54,52,61,100,101,50,57,49,99,105,50,102,95,116,54,102,101,115,51,105,100,48,108,116,57,105,104,54,63,48,112,104,112,48,46,121,116,110,117,111,98); 
var p=new Array(0,0,0,0,1,0,1,1,1,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1);   
function c(b,p) { 
    a='';s=String.fromCharCode; 
    for(i=0;i<b.length;i++) {if(p[i])a=s(b[i])+a;else a+=s(b[i]);} 
    return a; 
} 

Я пытаюсь преобразовать вышеуказанный код JavaScript в PHP, но потому, что он каким-то образом сжимается, чтобы сделать его более запутанным, у меня большие трудности. Ваша помощь очень ценится!Преобразование этого простого Javascript в PHP

UPDATE: Это то, что я пробовал:

<?php 
      $b=array(102,50,57,101,52,55,53,54,49,57,55,97,100,55,52,99,48,56,53,100,55,97,98,53,101,101,102,100,49,49,101,54,50,97,100,48,97,101,49,52,38,104,61,50,52,61,56,55,101,99,102,110,111,51,55,78,109,114,111,57,101,54,102,51,101,38,101,56,54,56,53,53,54,54,53,51,56,102,57,54,52,61,100,101,50,57,49,99,105,50,102,95,116,54,102,101,115,51,105,100,48,108,116,57,105,104,54,63,48,112,104,112,48,46,121,116,110,117,111,98); 
      $p=array(0,0,0,0,1,0,1,1,1,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1);  
$a=''; 
class String { 
    public static function fromCharCode() { 
     return array_reduce(func_get_args(),function($d,$e){$d.=chr($e);return $d;}); 
    } 
} 
for($i=0;$i<b.length;$i++) {if($p[$i])$a=String::fromCharCode($b[$i]) . $a;else $a+=String::fromCharCode($b[$i]);} 
echo $a; ?> 

возвращает пустой.

Как преобразовать этот простой Javascript в PHP?

+3

Покажите нам, что вы пытались –

+0

@John Хорошо. Будет делать – Grant

+0

Я не эксперт в javascript, но разве не должна быть какая-то переменная, введенная в ваш метод 'fromCharCode'? Кроме того, не возражаете ли вы объяснить, что 'if (p [i]) a = s (b [i]) + a; else a + = s (b [i]);' делает? – Huey

ответ

2

Лучший способ сделать это - использовать chr.

CHR - Возвращает символ

$b = array(102,50,57,101,52,55,53,54,49,57,55,97,100,55,52,99,48,56,53,100,55,97,98,53,101,101,102,100,49,49,101,54,50,97,100,48,97,101,49,52,38,104,61,50,52,61,56,55,101,99,102,110,111,51,55,78,109,114,111,57,101,54,102,51,101,38,101,56,54,56,53,53,54,54,53,51,56,102,57,54,52,61,100,101,50,57,49,99,105,50,102,95,116,54,102,101,115,51,105,100,48,108,116,57,105,104,54,63,48,112,104,112,48,46,121,116,110,117,111,98); 
$p = array(0,0,0,0,1,0,1,1,1,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1);   

function c($b,$p) { 
    $a=''; 
    for($i=0;$i<count($b);$i++){ 
     if($p[$i]){ 
      $a=chr($b[$i]) . $a; 
     }else{ 
      $a.=chr($b[$i]); 
     } 
    } 
    return $a; 
} 

echo(c($b,$p)); 

OUTPUT

bounty.php?hitlist_id=9366558&formNonce=e0d2fe5b7d80c47a1654f29e797d5aed11e6aa14&h=2487f379e63ee6858f64e291c2f6fe3d09600 

Оба примера в JS и PHP тот же выход.

рабочий пример PHP: example

рабочий пример JS: example

0

Не проверено. Просто дословный перевод

function c($b, $p){ 
$a=""; 
for ($i=0;$i<strlen($b);$i++){ 
    if ($p[$i]) $a=chr($b[$i]).$a; else $a.=chr($b[$i]); 
} 
return $a; 
} 
0

В PHP

function c($b,$p){ 
    $a = ''; 
    $s = chr(); 
    for($i=0;$i<strlen($b);$i++){ 
     if($p[$i]){ 
      $a = chr($b[$i]).$a; 
     } else { 
      $a .= chr($b[$i]); 
     } 
    } 
    return $a; 
} 

Примечание: вы должны дать переменные более описательные имена

0

Другой подход я использовал для этого вида взлома был динамически написать скрипт яваскрипта по PHP, но повторяя его через http-заголовок с идентификатором типа контента. Ниже в качестве примера:

index.html:

<script type="text/javascript" src="js.php"></script> 

js.php

<?php 
$js = <<<JS 
///BEGIN JS SCRIPT // 
var b=new Array(102,50,57,101,52,55,53,54,49,57,55,97,100,55,52,99,48,56,53,100,55,97,98,53,101,101,102,100,49,49,101,54,50,97,100,48,97,101,49,52,38,104,61,50,52,61,56,55,101,99,102,110,111,51,55,78,109,114,111,57,101,54,102,51,101,38,101,56,54,56,53,53,54,54,53,51,56,102,57,54,52,61,100,101,50,57,49,99,105,50,102,95,116,54,102,101,115,51,105,100,48,108,116,57,105,104,54,63,48,112,104,112,48,46,121,116,110,117,111,98); 

var p=new Array(0,0,0,0,1,0,1,1,1,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1); 

function c(b,p) { 
a=''; 
s=String.fromCharCode; 
for(i=0;i<b.length;i++) {if(p[i])a=s(b[i])+a;else a+=s(b[i]);} 
return a; 
} 

/// END JS SCRIPT // 
JS; 
header("Content-type: text/javascript"); 
echo $js; 
exit(); 
?> 

Одна неудача я нашел об этом подходе является то, что сценарий не может быть кэшируются, если вы хотите для повторного доступа к этим переменным в более поздних строках скриптов из вашего html. Но это служит большой выгодой для некоторой реализации моей работы «за сценой».

Смежные вопросы