Advertisement
Guest User

Untitled

a guest
Mar 11th, 2016
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "WpClient.h"
  2.  
  3. WpClient::WpClient() {
  4.     icon.addFile(":/wp.ico");
  5.     accName = "Wp";
  6.     accHost = "wp.pl";
  7.     accInfo = "<b>Pojemność:</b> b/l<br><b>Max segment:</b> 100 MB";
  8.  
  9.     /*accImapHost = "imap.wp.pl";
  10.     accImapPort = 993;
  11.     accImapSsl = true;*/
  12.  
  13.     accDownload = true;
  14.     accKreator = true;
  15.     accForward = false;
  16.     accRemoveSpam = false;
  17.  
  18.     minLoginLength = 2;
  19.     maxLoginLength = 32;
  20.     minPasswordLength = 8;
  21.     maxPasswordLength = 30;
  22.  
  23.     currentPage = 1;
  24.     bGetLogin = true;
  25.     readReply = false;
  26.  
  27.     postData = "";
  28.  
  29.     //loginUrl = "http://m.poczta.wp.pl/";
  30.     kreatorUrl = "http://profil.wp.pl/rejestracja.html?";
  31.  
  32.     waitForToken = true;
  33.     page->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
  34.     page->settings()->setDefaultTextEncoding("utf-8");
  35. }
  36.  
  37. void WpClient::logIn() {
  38.     QString source = page->mainFrame()->toHtml();
  39.  
  40.     if (source.contains("id=\"notification_loginFailure\"")) {
  41.         emit setStatus(Acc::WrongLoginOrPassword);
  42.         emit addToLog(Acc::WrongLoginOrPassword, " ["+login+"@" + accHost + "]");
  43.         emit errorSignal();  // rozpocznij ściąganie ale z innego konta
  44.         return;
  45.     }
  46.  
  47.     if(page->mainFrame()->url().isEmpty()) {
  48.         page->setUserAgent("Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30");
  49.         emit setStatus(Acc::Logging);
  50.  
  51.         postRequest("https://profil.wp.pl/mlogin.html?login_username="+login+"%40wp.pl&login_password="+password+"&_action=login&flg=1&minipoczta=1&url=http%3A%2F%2Fm.poczta.wp.pl%2Findex.html", postData);
  52.         return;
  53.     }
  54.  
  55.     if(source.contains("<title>Mini poczta  Nowe</title>")){
  56.         //qDebug() << login << password;
  57.         emit logedIn();
  58.         return;
  59.     }
  60.  
  61.     if(source.contains("Trwa ładowanie..."))
  62.         return;
  63.  
  64.     //nieznany błąd
  65.     qDebug() << source;
  66.     outLog(source);
  67.     emit setStatus(Acc::UnnownError);
  68.     emit addToLog(Acc::UnnownError);
  69.     emit errorSignal();
  70. }
  71.  
  72. void WpClient::readSegments() {
  73.     QString source = page->mainFrame()->toHtml();
  74.  
  75.     if(source.contains("<title>Mini poczta  Nowe</title>")){
  76.         emit setStatus(Acc::ListingSegments);
  77.         QByteArray postData("{\"ActionName\":\"service\", \"serviceName\":\"MessageList\", \"methodName\":\"getPart\", \"folder\":\".Nowe\", \"column\":\"ARRIVAL\", \"ascOrder\":false, \"pageNr\":999, \"categories\":\"[1,0]\", \"userLogin\":\"");
  78.         postData.append(login.toLower());
  79.         postData.append("\"}");
  80.         QNetworkRequest netRequest;
  81.         netRequest.setUrl(QUrl("http://poczta.wp.pl/jsongwt.html"));
  82.         netRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8");
  83.         page->mainFrame()->load(netRequest, QNetworkAccessManager::PostOperation, postData);
  84.         return;
  85.     }
  86.  
  87.     if(source.contains("{\"Results\":[{\"uids\":")) {
  88.         QRegExp id("\\[\\{\"uids\":[^\\}]*\\]");
  89.         int poss = id.indexIn(source);
  90.         QStringList lista = id.capturedTexts();
  91.         QString idw=lista[0];
  92.  
  93.         idw = idw.remove(0,10);
  94.         idw = idw.remove(idw.length()-1,1);
  95.         QByteArray postData("{\"ActionName\":\"service\", \"serviceName\":\"MessageList\", \"methodName\":\"getHeaders\", \"uids\":[");
  96.         postData.append(idw);
  97.         postData.append("], \"userLogin\":\"");
  98.         postData.append(login.toLower());
  99.         postData.append("\"}");
  100.         QNetworkRequest netRequest;
  101.         netRequest.setUrl(QUrl("http://poczta.wp.pl/jsongwt.html"));
  102.         netRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8");
  103.         page->mainFrame()->load(netRequest, QNetworkAccessManager::PostOperation, postData);
  104.         return;
  105.     }
  106.  
  107.     if(source.contains("\"ResultName\":\"results_Msgheadersresult\"")) {
  108.         QStringList tmp = source.split("{");
  109.         foreach(QString itm, tmp)
  110.         {
  111.            QRegExp id("\"uid\":(\\d+),\"subject\":\"([^\"]+)\"");
  112.            int poss = id.indexIn(itm);
  113.            QStringList lista = id.capturedTexts();
  114.            QList<QString> list;
  115.            list << "\\u0104" << "Ą" << "\\u0105" << "ą" << "\\u0106" << "Ć" << "\\u0107" << "ć" << "\\u0118" << "Ę" << "\\u0119" << "ę" << "\\u0141" << "Ł" << "\\u0142" << "ł" << "\\u0143" << "Ń" << "\\u0144" << "ń" << "\\u00d3" << "Ó" << "\\u00f3" << "ó" << "\\u015a" << "Ś" << "\\u015b" << "ś" << "\\u0179" << "Ź" << "\\u017a" << "ź" << "\\u017b" << "Ż" << "\\u017c" << "ż";
  116.            for(int i = 0; i < list.count(); i += 2)
  117.                lista[2].replace(list.at(i), list.at(i + 1));
  118.            segments.append(prepareMailData(lista[2], "http://m.poczta.wp.pl/lista.html?page=1&fname=Nowe&no_ticaid=&no_ticket=&uid="+lista[1]+"&action=read"));
  119.         }
  120.         emit sendSegments(segments);
  121.         return;
  122.      }
  123.  
  124.     qDebug() << source;
  125.     outLog(source);
  126.     emit setStatus(Acc::UnnownError);
  127.     emit addToLog(Acc::UnnownError);
  128.     emit errorSignal();
  129. }
  130.  
  131. void WpClient::getQuota() {
  132.     QString value = page->mainFrame()->toHtml();
  133.     if (value.contains("Odebrane (")) {
  134.         value.remove(0, value.indexOf("Odebrane ("));
  135.         value.remove(0, value.indexOf("/")+1);
  136.         value.remove(value.indexOf(")"), value.length());
  137.         emit setQuota(value + " wiadomości");
  138.         return;
  139.     }
  140.  
  141.     emit setQuota("OK");}
  142.  
  143. void WpClient::getUrl() {
  144.     QString source = page->mainFrame()->toHtml();
  145.     if(source.contains("<a href=\"http://zalacznik.wp.pl")){
  146.         source.remove(0, source.indexOf("<a href=\"http://zalacznik.wp.pl")+9);
  147.         source.remove(source.indexOf("\">"), source.length());
  148.         source.replace("&amp;", "&");
  149.  
  150.         page->mainFrame()->load(QUrl(source));
  151.         return;
  152.     }
  153.  
  154.     emit errorSignal();
  155. }
  156.  
  157. void WpClient::removeSpam() {
  158.     QString source = page->mainFrame()->toHtml();
  159.     if (!page->mainFrame()->url().toString().contains("SPAM")) {
  160.         QString spamUrl = source.remove(0, source.indexOf("folders.html"));
  161.         spamUrl.remove(spamUrl.indexOf("\""), spamUrl.length());
  162.         spamUrl.replace("folders.html", "lista.html");
  163.         spamUrl = "http://m.poczta.wp.pl/" + spamUrl + "&fname=SPAM&action=show";
  164.         page->mainFrame()->load(QUrl(spamUrl));
  165.         return;
  166.     }
  167.  
  168.     if (page->mainFrame()->url().toString().contains("SPAM")) {
  169.         if (page->mainFrame()->evaluateJavaScript(QString("document.forms[1].elements[0].type")).toString().contains("checkbox")) {
  170.             for (int i=0;true;i++){
  171.                 if (page->mainFrame()->evaluateJavaScript(QString("document.forms[1].elements[%1].type").arg(i)).toString().contains("checkbox")) {
  172.                     spamMessage++;
  173.                     page->mainFrame()->evaluateJavaScript(QString("document.forms[1].elements[%1].checked=true").arg(i));
  174.                 } else {
  175.                     page->mainFrame()->evaluateJavaScript("document.forms[1].przenies.click();");
  176.                     return;
  177.                 }
  178.             }
  179.         }
  180.  
  181.         emit removeFinished(spamMessage);
  182.         return;
  183.     }
  184.  
  185.     emit setStatus(Acc::UnnownError);
  186.     emit addToLog(Acc::UnnownError);
  187.     emit errorSignal();
  188. }
  189.  
  190. void WpClient::registerAcc() {
  191.     QString source = page->mainFrame()->toHtml();
  192.  
  193.     if(bGetLogin) {
  194.         bGetLogin = false;
  195.         readReply = true;
  196.         manager = new QNetworkAccessManager(this);
  197.         connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(registerAcc()));
  198.         QNetworkRequest req;
  199.         req.setUrl(QUrl("http://jrk.site90.net/rand.php"));
  200.         req.setHeader(QNetworkRequest::UserAgentHeader, QVariant("M4UDownloader Kreator - " + accHost));
  201.         reply = manager->get(req);
  202.         return;
  203.     }
  204.  
  205.     if(readReply) {
  206.         readReply = false;
  207.         disconnect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(registerAcc()));
  208.         if(reply->error() != QNetworkReply::NoError) {
  209.             emit setStatus(Acc::Null, "Błąd połączenia z serwerem JRK!");
  210.             emit addToLog(Acc::Null, "Błąd połączenia z serwerem JRK!");
  211.             emit errorSignal();
  212.             return;
  213.         }
  214.  
  215.         QString s = reply->readAll();
  216.         s.remove("\n");
  217.         s.remove(s.indexOf("<!--"), s.length());
  218.         s.remove(char(10));
  219.         s.remove(char(13));
  220.         s.replace("ą", "a");
  221.         s.replace("ć", "c");
  222.         s.replace("ę", "e");
  223.         s.replace("ł", "l");
  224.         s.replace("ń", "n");
  225.         s.replace("ó", "o");
  226.         s.replace("ś", "s");
  227.         s.replace("ź", "z");
  228.         s.replace("ż", "z");
  229.         s.insert(getNumber(0, s.length()).toInt(), getNumber(100, 9999));
  230.         login = s;
  231.     }
  232.  
  233.     if (source.contains(" name=\"registration")) {
  234.         if (source.contains("Niestety, ale wybrany login jest już zajęty")) {
  235.             emit setStatus(Acc::WrongLogin);
  236.             emit errorSignal();
  237.             return;
  238.         }
  239.  
  240.         if (source.contains("Wpisane słowo różni się od słowa na obrazku"))
  241.             emit setStatus(Acc::WrongToken);
  242.  
  243.  
  244.         if (waitForToken) {
  245.             QTimer::singleShot(10*1000, this, SLOT(registerAcc()));
  246.             waitForToken = false;
  247.             return;
  248.         }
  249.  
  250.  
  251.         waitForToken = true;
  252.         QString token = source;
  253.         token.remove(0, token.indexOf("https://si.wp.pl/captcha"));
  254.         token.remove(token.indexOf("\""), token.length());
  255.         token.replace("&amp;", "&");
  256.         token = showToken(token);
  257.         if (token.isEmpty())
  258.             return;
  259.  
  260.         QString idu = page->mainFrame()->findFirstElement("input[name=\"idu\"]").attribute("value");
  261.         QString _secureFormsKey = page->mainFrame()->findFirstElement("input[name=\"_secureFormsKey\"]").attribute("value");
  262.  
  263.         QString data = "_secureFormsKey=" + _secureFormsKey + "&_action=registration&enticket=&idu=" + idu + "&serwis=nowa_poczta_wp&" +
  264.                 "url=/&plec=0&accountType=1&imie=" + getText() + "&nazwisko=" + getText() +
  265.                 "&plec=1&dzienUrodzin=" + getNumber(10,28) + "&miesiacUrodzin=" + getNumber(10,12) + "&";
  266.         data += "rokUrodzin=" + getNumber(1950,1999) + "&login=" + login + "&newPassword1=" + password + "&newPassword2=" + password + "&";
  267.         data += "wpextmail=" + getText() + "@gmail.com&telefonKomorkowy=&wielkoscMiejscowosci=" + getNumber(1,5) + "&wyksztalcenie=" + getNumber(1,5) + "&";
  268.         data += "zawod=" + getNumber(1,11) + "&zgodaMarketing=on&zgodaBehavioral=on&zgodaMailing=on&zgodaAlcohol=on&zgodaGambling=on&zgodaSms=on&zgodaMarketing=on&";
  269.         data += "zgodaBehavioral=on&zgodaMailing=on&zgodaSms=on&emailOpiekuna=&zgodaMarketing=on&zgodaBehavioral=on&zgodaMailing=on&zgodaSms=on&zgodaWebmailFree=on&";
  270.         data += "zgodaWebmailPro=on&zgodaAll=on&slowo=" + token + "&aEx34a=123";
  271.  
  272.  
  273.         this->postRequest(page->mainFrame()->url().toString(), data);
  274.         return;
  275.     }
  276.  
  277.     if (source.contains("konto email w Wirtualnej Polsce")) {
  278.         QNetworkRequest req;
  279.         req.setUrl(QUrl("http://jrk.site90.net/rand.php?zarazek=123"));
  280.         req.setHeader(QNetworkRequest::UserAgentHeader, QVariant("M4UDownloader Kreator - " + accHost));
  281.         manager->get(req);
  282.         emit addNewAccount();
  283.         return;
  284.     }
  285.  
  286.     outLog(source);
  287.     emit setStatus(Acc::UnnownError);
  288.     emit addToLog(Acc::UnnownError);
  289.     emit errorSignal();
  290. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement