Bitcoin Forum
May 12, 2024, 12:41:04 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Процедура логина на BTC-e.com  (Read 4372 times)
akledirs (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100


View Profile
May 22, 2016, 01:32:12 PM
 #1

Ребятушки, хочу одну утилитку написать, учусь кодингу заодно на практике, требуется запилить вход на биржу 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;
        }
Подскажите советом, весь мозг уже сломал
1715474464
Hero Member
*
Offline Offline

Posts: 1715474464

View Profile Personal Message (Offline)

Ignore
1715474464
Reply with quote  #2

1715474464
Report to moderator
1715474464
Hero Member
*
Offline Offline

Posts: 1715474464

View Profile Personal Message (Offline)

Ignore
1715474464
Reply with quote  #2

1715474464
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
tloze
Full Member
***
Offline Offline

Activity: 189
Merit: 100


View Profile
May 24, 2016, 02:38:57 PM
 #2

а что за функция md5, в JavaScript вроде нет встроенной функции md5..
akledirs (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100


View Profile
May 24, 2016, 06:21:17 PM
 #3

Честно говоря с JS до сих пор сталкиваться не приходилось, был уверен, что это просто стандартная функция. Но в коде этого https://btc-e.com/js/core12.min.js файла, я ссылок на другие функции с md5 не увидел.
shotev
Member
**
Offline Offline

Activity: 98
Merit: 10


View Profile
May 24, 2016, 07:22:35 PM
 #4

а что за функция md5, в JavaScript вроде нет встроенной функции md5..
Тот же вопрос в js нет md5 мб просто название или что? вообще я прочел партянку даже особо не понял что нужно)
tloze
Full Member
***
Offline Offline

Activity: 189
Merit: 100


View Profile
May 24, 2016, 09:25:37 PM
 #5

Честно говоря с JS до сих пор сталкиваться не приходилось, был уверен, что это просто стандартная функция. Но в коде этого https://btc-e.com/js/core12.min.js файла, я ссылок на другие функции с md5 не увидел.

да она вызывается из  jquery1.js который подгружается раньше, а вообще твою задачу не проще будет решить через официальное API биржи?
просто так как ты сейчас хочешь сделать может перестать работать после любого изменения, это как бы не совсем честный метод Smiley
akledirs (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100


View Profile
May 25, 2016, 09:29:56 AM
 #6

Увы, метод API не позволяет решить задачу.
shotev, мне нужно залогиниться на сайте. Но решение задачки у меня не соответствует решению задачки браузером при одинаковых данных.
tloze, хм, чтож буду копать этот файл вечерком, может разберусь что к чему
uservalera
Hero Member
*****
Offline Offline

Activity: 868
Merit: 500



View Profile
June 30, 2016, 02:49:41 PM
 #7

Quote
Увы, метод API не позволяет решить задачу.

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

А через WebBrowser (компонент - вкладка коммон контрол (визуал студио)) не получается?
akledirs (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100


View Profile
July 21, 2016, 12:11:13 PM
 #8

Quote
Увы, метод API не позволяет решить задачу.

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

А через WebBrowser (компонент - вкладка коммон контрол (визуал студио)) не получается?
Точно, надо будет и ЯД прикрутить)
Но изначально замысел был другой.
Через webBrowser логинится с вылезанием ошибок скриптов, но в профиль заходится. Но возникает другая проблема - webBrowser самые нужные куки и не отдаёт. bID, SESSID, __cfduid отсутствуют.
Поискал - это нормально для webBrowser'а - в целях какой-то безопасности определенные куки не отдаются.
ON
Hero Member
*****
Offline Offline

Activity: 684
Merit: 506



View Profile
July 23, 2016, 03:42:42 PM
 #9

Выложишь в общий доступ, когда сделаешь? В эту ветку?
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!