Author

Topic: Процедура логина на BTC-e.com (Read 4375 times)

ON
hero member
Activity: 684
Merit: 506
Выложишь в общий доступ, когда сделаешь? В эту ветку?
full member
Activity: 157
Merit: 100
Quote
Увы, метод API не позволяет решить задачу.

Мониторинг ввода "яда" хотите сделать?

А через WebBrowser (компонент - вкладка коммон контрол (визуал студио)) не получается?
Точно, надо будет и ЯД прикрутить)
Но изначально замысел был другой.
Через webBrowser логинится с вылезанием ошибок скриптов, но в профиль заходится. Но возникает другая проблема - webBrowser самые нужные куки и не отдаёт. bID, SESSID, __cfduid отсутствуют.
Поискал - это нормально для webBrowser'а - в целях какой-то безопасности определенные куки не отдаются.
hero member
Activity: 868
Merit: 500
Quote
Увы, метод API не позволяет решить задачу.

Мониторинг ввода "яда" хотите сделать?

А через WebBrowser (компонент - вкладка коммон контрол (визуал студио)) не получается?
full member
Activity: 157
Merit: 100
Увы, метод API не позволяет решить задачу.
shotev, мне нужно залогиниться на сайте. Но решение задачки у меня не соответствует решению задачки браузером при одинаковых данных.
tloze, хм, чтож буду копать этот файл вечерком, может разберусь что к чему
full member
Activity: 189
Merit: 100
Честно говоря с JS до сих пор сталкиваться не приходилось, был уверен, что это просто стандартная функция. Но в коде этого https://btc-e.com/js/core12.min.js файла, я ссылок на другие функции с md5 не увидел.

да она вызывается из  jquery1.js который подгружается раньше, а вообще твою задачу не проще будет решить через официальное API биржи?
просто так как ты сейчас хочешь сделать может перестать работать после любого изменения, это как бы не совсем честный метод Smiley
member
Activity: 98
Merit: 10
а что за функция md5, в JavaScript вроде нет встроенной функции md5..
Тот же вопрос в js нет md5 мб просто название или что? вообще я прочел партянку даже особо не понял что нужно)
full member
Activity: 157
Merit: 100
Честно говоря с JS до сих пор сталкиваться не приходилось, был уверен, что это просто стандартная функция. Но в коде этого https://btc-e.com/js/core12.min.js файла, я ссылок на другие функции с md5 не увидел.
full member
Activity: 189
Merit: 100
а что за функция md5, в JavaScript вроде нет встроенной функции md5..
full member
Activity: 157
Merit: 100
Ребятушки, хочу одну утилитку написать, учусь кодингу заодно на практике, требуется запилить вход на биржу Btc-e.com.
Язык C#.
У сайта есть защита при логине, от перебора наверное. Отправляешь логин и пароль, он тебе в ответ криптографическую задачку вида:
Code: ("Задача")
{"success":1, "data":{"PoW":1,"work":{"target":3.1153781151209e+34,"data":"V8C55QPU0G6B768DSWZMWOD5OCJRXKYTV354KWF05K8HRAZDICFY6GGSFBME59C2"}}}
Для браузера есть код, который задачку решает:
Code: ("JS")
function getPoW(a,b){var c=0;do hash=eval("(0x"+login_md5(md5(md5(b+c)))+")"),++c;while(hash>=a);return c}
function login_md5(a){d1=a.substr(0,16);d2=a.substr(16,16);return d2+d1}
/*В качестве a, b значений для функции getPoW используются значения target и data из задачи
*/
Пишу на шарпе так, но считает почему-то неправильно:
Code: ("C#")
public int Get_PoW(string target, string data)
        {
            int nonce = 0;
            target = target.Replace(",", ".");
            BigInteger number=1, y = 0;
            //func(md5(md5(data+nonce)
            MD5 md5 = new MD5CryptoServiceProvider();
            while (number > y)
                {
                    byte[] checkSum = md5.ComputeHash(md5.ComputeHash(Encoding.UTF8.GetBytes(data+nonce.ToString())));
                    string result = BitConverter.ToString(checkSum).Replace("-", String.Empty);
                    string d1 = result.Substring(0, 16);
                    string d2 = result.Substring(16, 16);
                    string hash = d2 + d1;
                    /*
                    If value is a hexadecimal string, the TryParse(String, NumberStyles, IFormatProvider, BigInteger)
                    method interprets value as a negative number stored by using two's complement representation if its
                    first two hexadecimal digits are greater than or equal to 0x80. In other words, the method interprets
                    the highest-order bit of the first byte in value as the sign bit. To make sure that a hexadecimal string
                    is correctly interpreted as a positive number, the first digit in value must have a value of zero.
                    For example, the method interprets 0x80 as a negative value, but it interprets either 0x080 or 0x0080 as
                    a positive value.
                    */
                    if (BigInteger.Parse(hash[0].ToString(), NumberStyles.HexNumber) >= 8)
                        hash = "0" + hash;
                    number = BigInteger.Parse(hash, NumberStyles.HexNumber);
                    string number_s = number.ToString();     
                    y = BigInteger.Parse(target, NumberStyles.Float | NumberStyles.AllowExponent, CultureInfo.InvariantCulture);
                    nonce++;
                }
            return nonce;
        }
Подскажите советом, весь мозг уже сломал
Jump to: