自動売買EAの口座縛りが破られる(実演)
まさか!!というと問い合わせも頂いたので、テスト環境を作って実演します。このやり方を自分が作った自動売買EAで検証してみてください。
※素晴らしい開発者はいろいろ策を練られているので、このやり方で口座縛りが突破されるとは限りません。内容を見て自分の自動売買EAは大丈夫と判断できる開発者さんは問題ありません。
1.前提条件
今回、テストした環境は以下の通りです。
1.1 自動売買EAがwininet.dllを使用している(ユーザーは見える)
1.2 自動売買EAのソースコード(ユーザーは見えない)
すべての自動売買EAがこうなっているとは限りません。
認証のところは、適当(笑)
string account = "12345";
string auth_url = "http://*.*.*.*:8000/?account="+account;
が、口座番号を添えてサーバーに問い合わせを行うURL
実際の自動売買EAは、AccountNumber()でログインしている口座番号を取得しています。
#property strict
string account = "12345";
string auth_url = "http://*.*.*.*:8000/?account="+account;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
int OnInit(){
Comment("");
//DLLの使用が許可されているかを確認する
if(!MQLInfoInteger(MQL_DLLS_ALLOWED)){
Comment("DLLの使用が許可されていません");
}
//認証サーバーに問い合わせ
string text = ReadInternet(auth_url, CP_UTF8);
//レスポンスにOKという文字が入っているか?
Print(text);
if(0<StringFind(text,"OK"))
Comment("口座番号",account,"認証OK");
else
Comment("口座番号",account,"認証NG");
return INIT_SUCCEEDED;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#import "wininet.dll"
int InternetOpenW(string agent, int accessType, string proxyName, string proxyByPass, int flags);
int InternetOpenUrlW(int internetSession, string url, string header, int headerLength, int flags, int context);
int InternetReadFile(int, uchar &arr[], int, int &byte);
int InternetCloseHandle(int winINet);
#import
string ReadInternet(string url, int cp){
int inet = InternetOpenW("MetaTrader", 0, "0", "0", 0);
if(inet == 0)
{
return("MetaTrader Error");
}
else
{
int handle = InternetOpenUrlW(inet, url, NULL, 0, 0, 0);
string text = "";
int byteSize = 0;
uchar receive[1024];
while(InternetReadFile(handle, receive, 1024, byteSize))
{
if(byteSize <= 0)
break;
text += CharArrayToString(receive, 0, byteSize, cp);
}
InternetCloseHandle(handle);
InternetCloseHandle(inet);
return(text);
}
return("Error");
}
1.3 認証サーバー(ユーザーは見えない)
口座番号でリクエストするとデータベースに口座番号があれば「OK」のレスポンス。逆に口座番号がなければ「NG」のレスポンス。
1.4 サーバーとMT4の認証を確認してみる(ユーザーは見えない)
ブラウザで「http://*.*.*.*:8000/?account=12345」にアクセスすると「OK」の文字が返ってくる通常の動作。
登録されていない口座番号123456だと「NG」の文字が返ってくる通常の動作。
2.レスポンスを差し替えるとすべてがOKになる
レスポンスをすべてOKという文字に差し替えると何をやっても「OK」という文字が返ってくる
うんこでもOK!!
テスト環境の自動売買EAは、レスポンスに「OK」という文字があれば認証OKというプログラムなので認証が破られることとなります。
3.具体的な検証操作
ここからは有料記事となります。Windows版での内容となっています。
windowsの基本的な操作方法(インストール、フォルダー操作、txtファイルの新規作成)ができるかたのみご購入下さい。mql4プログラムを書けるぐらいのスキルがあるなら大丈夫でしょう。
この操作においてトラブルや事故、及びそれが原因で発生した損失や損害について、一切責任を負いかねます。
ここから先は
¥ 4,980
Amazonギフトカード5,000円分が当たる
この記事が参加している募集
この記事が気に入ったらチップで応援してみませんか?