mql4에서 데이터를 해시하는 방법 배우기 - 페이지 3 1234567 새 코멘트 Alexandr Bryzgalov 2013.09.28 15:01 #21 Reshetov : 문제는 간접비를 계산할 수 있지만 그 이면의 이익을 볼 수 없다는 것입니다. 나는 이미 이익을 얻었고 나쁘지 않습니다. 전체 질문은 암호화에 있습니다. Alexandr Bryzgalov 2013.09.28 15:03 #22 TheXpert : 첫째, SHA256이 아니라 HMAC SHA512입니다. BTC-e에 있습니다 Yury Reshetov 2013.09.28 15:09 #23 sanyooooook : 나는 이미 이익을 얻었고 나쁘지 않습니다. 전체 질문은 암호화에 있습니다. 그러한 메시지를 보낸 후 이익을 암호화하기에는 이미 너무 늦었습니다. 결국, 사기꾼은 이미 알고 있고 곧 빛을 볼 것입니다. 그리고 그들은 오랫동안 찾을 필요가 없습니다. 지붕이없는 외곽의 집 - 거기에 sanyooooook 이 이익을 암호화합니다. Alexandr Bryzgalov 2013.09.28 15:20 #24 Reshetov : 그러한 메시지를 보낸 후 이익을 암호화하기에는 이미 너무 늦었습니다. 결국, 사기꾼은 이미 알고 있고 곧 빛을 볼 것입니다. 그리고 그들은 오랫동안 찾을 필요가 없습니다. 지붕이없는 외곽의 집 - 거기에 sanyooooook 이 이익을 암호화합니다. "우리는 회색 늑대를 두려워하지 않습니다") TheXpert 2013.09.28 16:06 #25 sanyooooook : BTC-e에 있습니다 이해했다. 그건 그렇고, 당신은 두려워합니다. 어쨌든 winepi를 사용하면 먼저 작동하는 코드를 만든 다음 mql로 번역합니다. 그러나 독립적인 프로그램인 mql로 무언가를 작성하는 것은... 요점이 무엇입니까? 날카로운 것을 원하지 않으면 파이썬을 배우십시오. 돈을 원하면 공부를 해야 한다. Alexandr Bryzgalov 2013.09.28 16:48 #26 TheXpert : 이해했다. 그건 그렇고, 당신은 두려워합니다. 어쨌든 winepi를 사용하면 먼저 작동하는 코드를 만든 다음 mql로 번역합니다. 그러나 독립적인 프로그램인 mql로 무언가를 작성하는 것은... 요점이 무엇입니까? 날카로운 것을 원하지 않으면 파이썬을 배우십시오. 돈을 원하면 공부를 해야 한다. 젠장 여기 봐: 1. API 교환에서 json 형식으로 포스트 요청 보내기 (json 블라인드는 어렵지 않습니다) 2. 이 요청에서 데이터의 일부가 해시되는데, 여기에서 문제가 발생하지만 이것도 문제가 되지는 않습니다. 알아냈습니다. 데이터) 3.이 감염은 아무것도 보내고 싶지 않습니다. 아마도 내가 게시물을 올바르게 수행하지 않는 것입니까? //+------------------------------------------------------------------+ //| POSTBTCE.mq4 | //| Copyright © 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #include <stdlib.mqh> #import "wininet.dll" #define INTERNET_OPEN_TYPE_DIRECT 0 #define INTERNET_OPEN_TYPE_PRECONFIG 1 #define INTERNET_OPEN_TYPE_PROXY 3 // Had to cut the following two defines because of silly MQL4 identifier limits #define _IGNORE_REDIRECT_TO_HTTP 0x00008000 #define _IGNORE_REDIRECT_TO_HTTPS 0x00004000 #define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 #define INTERNET_FLAG_NO_AUTO_REDIRECT 0x00200000 #define INTERNET_FLAG_NO_COOKIES 0x00080000 #define INTERNET_FLAG_RELOAD 0x80000000 #define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 #define INTERNET_FLAG_DONT_CACHE 0x04000000 #define INTERNET_FLAG_PRAGMA_NOCACHE 0x00000100 #define INTERNET_FLAG_NO_UI 0x00000200 #define HTTP_ADDREQ_FLAG_ADD 0x20000000 #define HTTP_ADDREQ_FLAG_REPLACE 0x80000000 #define INTERNET_SERVICE_HTTP 3 #define INTERNET_DEFAULT_HTTP_PORT 80 #define ICU_ESCAPE 0x80000000 #define ICU_USERNAME 0x40000000 #define ICU_NO_ENCODE 0x20000000 #define ICU_DECODE 0x10000000 #define ICU_NO_META 0x08000000 #define ICU_ENCODE_PERCENT 0x00001000 #define ICU_ENCODE_SPACES_ONLY 0x04000000 #define ICU_BROWSER_MODE 0x02000000 #define AGENT "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)" #define BUFSIZ 128 #define REQUEST_FILE "_req.txt" ////////////// PROTOTYPES bool InternetCanonicalizeUrlA( string lpszUrl, string lpszBuffer, int & lpdwBufferLength[], int dwFlags); int InternetOpenA( string sAgent, int lAccessType, string sProxyName= "" , string sProxyBypass= "" , int lFlags= 0 ); int InternetOpenUrlA( int hInternetSession, string sUrl, string sHeaders= "" , int lHeadersLength= 0 , int lFlags= 0 , int lContext= 0 ); int InternetReadFile( int hFile, string sBuffer, int lNumBytesToRead, int & lNumberOfBytesRead[]); int InternetCloseHandle( int hInet); int InternetConnectA( int handle, string host, int port, string user, string pass, int service, int flags, int context); bool HttpSendRequestA( int handle, string headers, int headersLen, int & optional[], int optionalLen); bool HttpAddRequestHeadersA( int handle, string headers, int headersLen, int modifiers); int HttpOpenRequestA( int hConnect, string lpszVerb, string lpszObjectName, string lpszVersion, string lpszReferer, string & lplpszAcceptTypes[], int dwFlags, int dwContext); #import //////// CODE bool HttpGET( string strUrl, string & strWebPage) { int hSession = InternetOpenA(AGENT, INTERNET_OPEN_TYPE_DIRECT, "0" , "0" , 0 ); int hReq = InternetOpenUrlA(hSession, strUrl, "0" , 0 , INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0 ); if (hReq == 0 ) { return ( false ); } int lReturn[] = { 1 }; string sBuffer = "" ; while (TRUE) { if (InternetReadFile(hReq, sBuffer, BUFSIZ, lReturn) <= 0 || lReturn[ 0 ] == 0 ) { break ; } strWebPage = StringConcatenate (strWebPage, StringSubstr (sBuffer, 0 , lReturn[ 0 ])); } InternetCloseHandle(hReq); InternetCloseHandle(hSession); return ( true ); } /////////// POST bool HttpPOST( string host, string script, string params[][], string filenames[][], string & strWebPage) { int hIntrn = InternetOpenA(AGENT, INTERNET_OPEN_TYPE_DIRECT, "0" , "0" , 0 ); if (hIntrn == 0 ) { return ( false ); } int hConn = InternetConnectA(hIntrn, host, INTERNET_DEFAULT_HTTP_PORT, NULL , NULL , INTERNET_SERVICE_HTTP, 0 , NULL ); if (hConn == 0 ) { return ( false ); } int dwOpenRequestFlags = // _IGNORE_REDIRECT_TO_HTTP | // _IGNORE_REDIRECT_TO_HTTPS | // INTERNET_FLAG_KEEP_CONNECTION | // INTERNET_FLAG_NO_AUTO_REDIRECT | // INTERNET_FLAG_NO_COOKIES | // INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_NO_UI | INTERNET_FLAG_RELOAD; string accept[] = { "Accept: text/*\r\n" }; int hReq = HttpOpenRequestA(hConn, "POST" , script, "HTTP/1.0" , NULL , accept, dwOpenRequestFlags, NULL ); string strBoundary = "---------------------------HOFSTADTER" ; string strContentHeader = "Content-Type: multipart/form-data; boundary=" + strBoundary; HttpAddRequestHeadersA(hReq, strContentHeader, StringLen (strContentHeader), HTTP_ADDREQ_FLAG_REPLACE); int i = 0 , idx = 0 , r = 0 , len = 0 ; string hdr = "" ; int _req = FileOpen (REQUEST_FILE, FILE_BIN | FILE_WRITE ); if (_req <= 0 ) { return ( false ); } // Add parameters to request body for (i = ArrayRange (params, 0 ) - 1 ; i >= 0 ; i--) { hdr = StringConcatenate ( "--" , strBoundary, "\r\n" , "Content-Disposition: form-data; name=\"" , params[i][ 0 ], "\"\r\n\r\n" , params[i][ 1 ], "\r\n" ); FileWriteString (_req, hdr, StringLen (hdr)); } // Add files to request body for (i = ArrayRange (filenames, 0 ) - 1 ; i >= 0 ; i--) { hdr = StringConcatenate ( "--" , strBoundary, "\r\n" , "Content-Disposition: form-data; name=\"" , filenames[i][ 0 ], "\"; filename=\"" , filenames[i][ 1 ], "\"\r\n" , "Content-Type: application/octet-stream\r\n\r\n" ); FileWriteString (_req, hdr, StringLen (hdr)); int handle = FileOpen (filenames[i][ 1 ], FILE_BIN | FILE_READ ); if (handle <= 0 ) { return ( false ); } len = FileSize (handle); for ( int b = 0 ; b < len; b++) { FileWriteInteger (_req, FileReadInteger (handle, CHAR_VALUE ), CHAR_VALUE ); } FileClose (handle); } string boundaryEnd = "\r\n--" + strBoundary + "--\r\n" ; FileWriteString (_req, boundaryEnd, StringLen (boundaryEnd)); FileClose (_req); // Re-reads saved POST data byte-to-byte from file in the pseudo-character array // we need to send with HttpSendRequestA. This is due to the fact I know no clean // way to cast strings _plus_ binary file contents to a character array in MQL. // If you know how to do it properly feel free to contact me. int request[]; _req = FileOpen (REQUEST_FILE, FILE_BIN | FILE_READ ); if (_req <= 0 ) { return ( false ); } len = FileSize (_req); ArrayResize (request, len); ArrayInitialize (request, 0 ); for (i = 0 ; i < len; i++) { request[r] |= FileReadInteger (_req, CHAR_VALUE ) << (idx * 8 ); idx = (idx + 1 ) % 4 ; if (idx == 0 ) { r++; } } FileClose (_req); if (!HttpSendRequestA(hReq, NULL , 0 , request, len)) { return ( false ); } // Read response int lReturn[] = { 1 }; string sBuffer = "" ; while (TRUE) { if (InternetReadFile(hReq, sBuffer, BUFSIZ, lReturn) <= 0 || lReturn[ 0 ] == 0 ) { break ; } strWebPage = StringConcatenate (strWebPage, StringSubstr (sBuffer, 0 , lReturn[ 0 ])); } InternetCloseHandle(hReq); InternetCloseHandle(hConn); InternetCloseHandle(hIntrn); return ( true ); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- string params[ 2 ][ 2 ]; params[ 0 ][ 0 ] = "key1" ; params[ 0 ][ 1 ] = "value1" ; params[ 1 ][ 0 ] = "key2" ; params[ 1 ][ 1 ] = "value2" ; // for multiple file upload string filenames[ 2 ][ 2 ]; filenames[ 0 ][ 0 ] = "uploaded1" ; // name of form field for file upload filenames[ 0 ][ 1 ] = "test1.txt" ; // file name in experts/files/ subfolder filenames[ 1 ][ 0 ] = "uploaded2" ; filenames[ 1 ][ 1 ] = "test2.txt" ; string response; string Signature= "DZeZIy/6H6fXGPEk8sdfgYJOYl0gGIlfivZqcfjbIzKk=" ; string s= "{" +CharToStr( 34 )+ "Login" +CharToStr( 34 )+ ":" +CharToStr( 34 )+ "B8yQVM4tGWijT" +CharToStr( 34 )+ "," +CharToStr( 34 )+ "Wmid" +CharToStr( 34 )+ ":" +CharToStr( 34 )+ "" +CharToStr( 34 )+ "," +CharToStr( 34 )+ "Culture" +CharToStr( 34 )+ ":" +CharToStr( 34 )+ "ru-RU" +CharToStr( 34 )+ "," +CharToStr( 34 )+ "Signature" +CharToStr( 34 )+ ":" +CharToStr( 34 )+Signature+CharToStr( 34 )+ "}" ; Print (s); HttpPOST( "https://secure.indx.ru/api/v1/tradejson.asmx" , s, params, filenames, response); Print (response); //---- return ( 0 ); } //+------------------------------------------------------------------+ Alexandr Bryzgalov 2013.09.28 16:50 #27 요청을 보내자마자 거래 기능 세트가 준비된 것으로 간주하십시오. 나머지는 씨앗이지만 이 새끼는 나에게 아무것도 돌려주지 않는다((( 요청 시 문자열이 올바르게 떠나지만 분명히 POST 보내기 기능을 올바르게 사용하고 있지 않습니다. TheXpert 2013.09.28 16:57 #28 sanyooooook : 그래서 나는 그것을 일반 언어로 작성하고 문제가 있는 곳을 파악한 다음 MQL로 번역한다고 말합니다. Yury Reshetov 2013.09.28 21:15 #29 sanyooooook : 3.이 감염은 아무것도 보내고 싶지 않습니다. 아마도 내가 게시물을 올바르게 수행하지 않는 것입니까? ... string response; string Signature= "DZeZIy/6H6fXGPEk8sdfgYJOYl0gGIlfivZqcfjbIzKk=" ; string s= "{" +CharToStr( 34 )+ "Login" +CharToStr( 34 )+ ":" +CharToStr( 34 )+ "B8yQVM4tGWijT" +CharToStr( 34 )+ "," +CharToStr( 34 )+ "Wmid" +CharToStr( 34 )+ ":" +CharToStr( 34 )+ "364823817435" +CharToStr( 34 )+ "," +CharToStr( 34 )+ "Culture" +CharToStr( 34 )+ ":" +CharToStr( 34 )+ "ru-RU" +CharToStr( 34 )+ "," +CharToStr( 34 )+ "Signature" +CharToStr( 34 )+ ":" +CharToStr( 34 )+Signature+CharToStr( 34 )+ "}" ; Print (s); HttpPOST( "https://secure.indx.ru/api/v1/tradejson.asmx" , s, params, filenames, response); ... 사실, 모든 것은 id=value 형식으로 GET 및 POST 요청으로 전송됩니다. 매개변수 이름과 값은 등호로 구분됩니다. 또한 라틴 문자 및 숫자가 아닌 모든 문자는 %(문자 코드)로 인코딩됩니다. 저것들. 전달된 매개변수의 식별자가 params 배열에 저장되어 있다고 가정하면 변수 s도 매개변수에 해당하는 값을 전달하기 위해 동일한 차원의 배열이어야 합니까? Alexandr Bryzgalov 2013.09.28 21:34 #30 Reshetov : 저것들. params 배열이 전달된 매개변수의 식별자를 저장한다고 가정하면 변수 s도 매개변수에 해당하는 값을 전달하기 위해 동일한 차원의 배열이어야 합니까? 나한테 묻는거야? 1234567 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
문제는 간접비를 계산할 수 있지만 그 이면의 이익을 볼 수 없다는 것입니다.
첫째, SHA256이 아니라 HMAC SHA512입니다.
나는 이미 이익을 얻었고 나쁘지 않습니다. 전체 질문은 암호화에 있습니다.
그러한 메시지를 보낸 후 이익을 암호화하기에는 이미 너무 늦었습니다. 결국, 사기꾼은 이미 알고 있고 곧 빛을 볼 것입니다. 그리고 그들은 오랫동안 찾을 필요가 없습니다. 지붕이없는 외곽의 집 - 거기에 sanyooooook 이 이익을 암호화합니다.
그러한 메시지를 보낸 후 이익을 암호화하기에는 이미 너무 늦었습니다. 결국, 사기꾼은 이미 알고 있고 곧 빛을 볼 것입니다. 그리고 그들은 오랫동안 찾을 필요가 없습니다. 지붕이없는 외곽의 집 - 거기에 sanyooooook 이 이익을 암호화합니다.
BTC-e에 있습니다
이해했다. 그건 그렇고, 당신은 두려워합니다. 어쨌든 winepi를 사용하면 먼저 작동하는 코드를 만든 다음 mql로 번역합니다. 그러나 독립적인 프로그램인 mql로 무언가를 작성하는 것은... 요점이 무엇입니까?
날카로운 것을 원하지 않으면 파이썬을 배우십시오. 돈을 원하면 공부를 해야 한다.
이해했다. 그건 그렇고, 당신은 두려워합니다. 어쨌든 winepi를 사용하면 먼저 작동하는 코드를 만든 다음 mql로 번역합니다. 그러나 독립적인 프로그램인 mql로 무언가를 작성하는 것은... 요점이 무엇입니까?
날카로운 것을 원하지 않으면 파이썬을 배우십시오. 돈을 원하면 공부를 해야 한다.
젠장 여기 봐:
1. API 교환에서 json 형식으로 포스트 요청 보내기 (json 블라인드는 어렵지 않습니다)
2. 이 요청에서 데이터의 일부가 해시되는데, 여기에서 문제가 발생하지만 이것도 문제가 되지는 않습니다. 알아냈습니다. 데이터)
3.이 감염은 아무것도 보내고 싶지 않습니다. 아마도 내가 게시물을 올바르게 수행하지 않는 것입니까?
요청을 보내자마자 거래 기능 세트가 준비된 것으로 간주하십시오.
나머지는 씨앗이지만 이 새끼는 나에게 아무것도 돌려주지 않는다(((
요청 시 문자열이 올바르게 떠나지만 분명히 POST 보내기 기능을 올바르게 사용하고 있지 않습니다.
sanyooooook :
3.이 감염은 아무것도 보내고 싶지 않습니다. 아마도 내가 게시물을 올바르게 수행하지 않는 것입니까?
사실, 모든 것은 id=value 형식으로 GET 및 POST 요청으로 전송됩니다. 매개변수 이름과 값은 등호로 구분됩니다. 또한 라틴 문자 및 숫자가 아닌 모든 문자는 %(문자 코드)로 인코딩됩니다.
저것들. 전달된 매개변수의 식별자가 params 배열에 저장되어 있다고 가정하면 변수 s도 매개변수에 해당하는 값을 전달하기 위해 동일한 차원의 배열이어야 합니까?
저것들. params 배열이 전달된 매개변수의 식별자를 저장한다고 가정하면 변수 s도 매개변수에 해당하는 값을 전달하기 위해 동일한 차원의 배열이어야 합니까?
나한테 묻는거야?