Используйте методы JavaScripts на C # - PullRequest
0 голосов
/ 24 декабря 2009

Я загружаю веб-страницу и разбираю код javascript, в котором есть хеш-код и функция декодирования java ... пожалуйста, я хочу вызвать метод декодирования javascript из программы на C # ...

На веб-странице я:

window.decoded_hashes = {};
window.decodehash = function(hash) {
  window.dec_hash(hash);
  return window.decoded_hashes[hash];
window.dec_hash = function(hash) {
  (function(__){window.decoded_hashes[hash] = _(__,8,_____(__)-12)+_(__,0,5);})((function(__){____='';for(___=0;___<_____(__);++___)____+=______(__,_____(__)-___-1);return window[_______(88,11,-13)]?__:____;})((function(__){____=window[_______(103,-2)]?'':'____';for(___=0;___<_____(__);++___)____+=(function(__){return __>111?(121-__):_______(__);})(__.charCodeAt(___));return ____;})((function(__){_______=function(){var _='',__=0,___=arguments;for(var ____=0;____<___.length;++____)_+=String.fromCharCode(__+=___[____]);return _;};______=function(__,___){return __.charAt(___);};_____=function(__){return __.length;};____=(_=function(_,__,___){____='';(___=___?___:(_____(_)-__));for(;___;--___)____+=(function(_,__){return ______(_,__)})(_,__++);return ____;})(__,3,3);____+=_(__,0,2)+_(__,8);return ____;})(hash))));
}


window.wall_post_hash = decodehash('tsucuqtyqvedvvpruuqasavdpwdcxafcystrdfvsyd');

И я должен отправить декодированный хеш на сервер ... хэш в () - dinamic

Как сделать проще? Я нашел Rhino и IKVM, но еще не понял ...

Дайте мне совет, пожалуйста ...

Извините за мой английский;)

1 Ответ

0 голосов
/ 24 декабря 2009

Вы можете включить Microsoft.JScript в ваши ссылки на проекты.

Посмотрите пример из Рика Страла о том, как вы можете использовать Eval для получения ваших результатов.

Вот реализация, которую мне удалось отработать после некоторой отладки и изменений. Он возвращает тот же результат, что и ваш пример. Одна из проблем заключается в том, что .Net, похоже, не работает с переменной «arguments» функции. Поэтому я добавил 5 переменных в эту функцию, чтобы она заработала. Кажется, самое большее, что передается 3.

package Pack
{
    class JSEval
    {        
        public function MyEval(inputhash : String) : String
        {
            var ___ = 0;
            var _= '';
            var ____ = '';
            var _______;
            var ______;
            var _____;


            var ____ = (_ = function(_, __, ___) {
                ____ = '';
                (___ = ___ ? ___ : (_____(_) - __));
                for (; ___; --___) ____ += (function(_, __) {
                    return ______(_, __)
                })(_, __++);
                return ____;
            })                

            var mywin = new Object();
            mywin.decoded_hashes = {};
            mywin.dec_hash = function(hash) {
            (function(__) {
                mywin.decoded_hashes[hash] = _(__, 8, _____(__) - 12) + _(__, 0, 5);
            })((function(__) {
                var ____ = '';
                for (___ = 0; ___ < _____(__); ++___) ____ += ______(__, _____(__) - ___ - 1);
                return mywin[_______(88, 11, -13)] ? __ : ____;
            })((function(input) {
                var res = mywin[_______(103, -2)] ? '' : '____';

                for (var i = 0; i < _____(input); ++i) res += (function(input) {
                    return input > 111 ? (121 - input) : _______(input);
                })(input.charCodeAt(i));                
                return res;
            })((function(__) {
                _______ = function(a,b,c,d,e) {                    
                    var arguments = new Array();
                    if( a != undefined )
                        arguments.push(a);
                    if( b != undefined )
                        arguments.push(b);
                    if( c != undefined )
                        arguments.push(c);
                    if( d != undefined )
                        arguments.push(d);
                    if( e != undefined )
                        arguments.push(e);
                    var _ = '';
                    var __ = 0;
                    for (var i = 0; i < arguments.length; ++i) _ += String.fromCharCode(__ += arguments[i]);
                    return _;
                };
                ______ = function(__, ___) {
                    return __.charAt(___);
                };
                _____ = function(__) {
                    return __.length;
                };
                ____ = (_ = function(_, __, ___) {
                    ____ = '';
                    (___ = ___ ? ___ : (_____(_) - __));
                    for (; ___; --___) ____ += (function(_, __) {
                        return ______(_, __)
                    })(_, __++);
                    return ____;
                })(__, 3, 3);

                ____ += _(__, 0, 2) + _(__, 8);
                return ____;
            })(hash))));
        }
        mywin.decodehash = function(hash) {
            mywin.dec_hash(hash);
            return mywin.decoded_hashes[hash];
        }


        return mywin.decodehash(inputhash);                
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...