From fee1741dfe8a724a7530dae83d94bada809daa87 Mon Sep 17 00:00:00 2001 From: Francesco Ambrosini <45211144+HellAmbro@users.noreply.github.com> Date: Fri, 25 Feb 2022 01:15:48 +0100 Subject: [PATCH 1/3] Export scanning results in SQL format --- resources/messages.properties | 1 + resources/messages_gr.properties | 1 + .../azib/ipscan/config/ComponentRegistry.java | 7 +--- .../azib/ipscan/exporters/SQLExporter.java | 37 +++++++++++++++++-- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/resources/messages.properties b/resources/messages.properties index 7a030910..18ff05c2 100644 --- a/resources/messages.properties +++ b/resources/messages.properties @@ -292,6 +292,7 @@ exporter.txt.scanned=Scanned exporter.csv=Comma-separated file (csv) exporter.xml=XML file (xml) exporter.ipList=IP:Port list (lst) +exporter.sql=SQL file (sql) exception.FeederException.invalidNetmask=Invalid netmask specified. Must be either in the A.B.C.D or /bits format exception.FeederException.invalidHostname=Invalid or nonexistent hostname specified exception.FeederException.malformedIP=Malformed IP address specified, it should look like A.B.C.D diff --git a/resources/messages_gr.properties b/resources/messages_gr.properties index 9370d152..77e324c2 100644 --- a/resources/messages_gr.properties +++ b/resources/messages_gr.properties @@ -256,6 +256,7 @@ exporter.txt.scanned=Σαρωμένα %INFO exporter.csv=Διαχωρισμένα-με κόμμα αρχεία (csv) exporter.xml=Αρχείο XML (xml) exporter.ipList=IP:Λίστα θυρών (lst) + exception.FeederException.invalidNetmask=Η καθορισμένη μάσκα δεν είναι έγκυρη. Πρέπει να είναι σε μορφή A.B.C.D exception.FeederException.invalidHostname=Το καθορισμένο όνομα υπολογιστή είναι άκυρο ή ανύπαρκτο exception.FeederException.malformedIP=Η καθορισμένη IP διεύθυνση είναι ακατάλληλη, θα πρέπει να εμφανίζεται όπως A.B.C.D diff --git a/src/net/azib/ipscan/config/ComponentRegistry.java b/src/net/azib/ipscan/config/ComponentRegistry.java index 32b0b625..38dfcf5f 100644 --- a/src/net/azib/ipscan/config/ComponentRegistry.java +++ b/src/net/azib/ipscan/config/ComponentRegistry.java @@ -7,10 +7,7 @@ package net.azib.ipscan.config; import net.azib.ipscan.core.PluginLoader; import net.azib.ipscan.di.Injector; -import net.azib.ipscan.exporters.CSVExporter; -import net.azib.ipscan.exporters.IPListExporter; -import net.azib.ipscan.exporters.TXTExporter; -import net.azib.ipscan.exporters.XMLExporter; +import net.azib.ipscan.exporters.*; import net.azib.ipscan.fetchers.*; /** @@ -25,7 +22,7 @@ public class ComponentRegistry { (Platform.WINDOWS ? ".WinMACFetcher" : Platform.LINUX ? ".LinuxMACFetcher" : ".UnixMACFetcher")).newInstance()); i.register(CommentFetcher.class, FilteredPortsFetcher.class, WebDetectFetcher.class, HTTPSenderFetcher.class, NetBIOSInfoFetcher.class, PacketLossFetcher.class, HTTPProxyFetcher.class, MACVendorFetcher.class); - i.register(TXTExporter.class, CSVExporter.class, XMLExporter.class, IPListExporter.class); + i.register(TXTExporter.class, CSVExporter.class, XMLExporter.class, IPListExporter.class, SQLExporter.class); } public Injector init() throws Exception { diff --git a/src/net/azib/ipscan/exporters/SQLExporter.java b/src/net/azib/ipscan/exporters/SQLExporter.java index a8408f06..3a3888a2 100644 --- a/src/net/azib/ipscan/exporters/SQLExporter.java +++ b/src/net/azib/ipscan/exporters/SQLExporter.java @@ -1,6 +1,7 @@ package net.azib.ipscan.exporters; import java.io.IOException; +import java.io.OutputStream; /** * SQL Exporter @@ -14,7 +15,9 @@ import java.io.IOException; public class SQLExporter extends AbstractExporter { static final char DELIMETER = ':'; - + static final String TABLE_NAME = "scan"; + static final char COMMA = ','; + public String getId() { return "exporter.sql"; } @@ -22,11 +25,37 @@ public class SQLExporter extends AbstractExporter { public String getFilenameExtension() { return "sql"; } - + + public void start(OutputStream outputStream, String feederInfo) throws IOException { + super.start(outputStream, feederInfo); + + if (!append) { + output.println("DROP TABLE IF EXISTS scan;"); + } + } + public void setFetchers(String[] fetcherNames) throws IOException { + if (!append) { + output.write("CREATE TABLE " + TABLE_NAME + " (`" + fetcherNames[0] + "` varchar(20)"); + for (int i = 1; i < fetcherNames.length; i++) { + output.write(COMMA); + output.print(" `" + fetcherNames[i] + "` "); + output.write("varchar(20)"); //Default type + } + output.println(");"); + } } - + public void nextAddressResults(Object[] results) throws IOException { - + output.print("INSERT INTO " + TABLE_NAME + " VALUES ('" + results[0]+"'"); + for (int i = 1; i < results.length; i++) { + Object result = results[i]; + output.print(COMMA); + output.print(" "); + output.print("'" + result + "'"); + } + output.println(");"); } + + } From ed8b5c37e89f0ec7952d39165d5e066f928c37ec Mon Sep 17 00:00:00 2001 From: Francesco Ambrosini <45211144+HellAmbro@users.noreply.github.com> Date: Fri, 25 Feb 2022 01:16:29 +0100 Subject: [PATCH 2/3] Export scanning results in SQL format --- resources/messages_gr.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/messages_gr.properties b/resources/messages_gr.properties index 77e324c2..9370d152 100644 --- a/resources/messages_gr.properties +++ b/resources/messages_gr.properties @@ -256,7 +256,6 @@ exporter.txt.scanned=Σαρωμένα %INFO exporter.csv=Διαχωρισμένα-με κόμμα αρχεία (csv) exporter.xml=Αρχείο XML (xml) exporter.ipList=IP:Λίστα θυρών (lst) - exception.FeederException.invalidNetmask=Η καθορισμένη μάσκα δεν είναι έγκυρη. Πρέπει να είναι σε μορφή A.B.C.D exception.FeederException.invalidHostname=Το καθορισμένο όνομα υπολογιστή είναι άκυρο ή ανύπαρκτο exception.FeederException.malformedIP=Η καθορισμένη IP διεύθυνση είναι ακατάλληλη, θα πρέπει να εμφανίζεται όπως A.B.C.D From e88caa5b81c22ec23c050f4ec5020aed7e1d321d Mon Sep 17 00:00:00 2001 From: Francesco Ambrosini <45211144+HellAmbro@users.noreply.github.com> Date: Fri, 25 Feb 2022 07:43:10 +0100 Subject: [PATCH 3/3] Export scanning results in SQL format --- src/net/azib/ipscan/exporters/SQLExporter.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/net/azib/ipscan/exporters/SQLExporter.java b/src/net/azib/ipscan/exporters/SQLExporter.java index 3a3888a2..9c2e3a82 100644 --- a/src/net/azib/ipscan/exporters/SQLExporter.java +++ b/src/net/azib/ipscan/exporters/SQLExporter.java @@ -8,14 +8,14 @@ import java.io.OutputStream; *
* Exports results as an SQL inserts, suitable for sqlite, mysql, etc, * optionally preceding by a 'create table'. - * TODO: implement SQLExporter * * @author Anton Keks + * @author Francesco Ambrosini */ public class SQLExporter extends AbstractExporter { - static final char DELIMETER = ':'; static final String TABLE_NAME = "scan"; + static final char COMMA = ','; public String getId() { @@ -30,24 +30,24 @@ public class SQLExporter extends AbstractExporter { super.start(outputStream, feederInfo); if (!append) { - output.println("DROP TABLE IF EXISTS scan;"); + output.println("DROP TABLE IF EXISTS" + TABLE_NAME + ";"); } } public void setFetchers(String[] fetcherNames) throws IOException { if (!append) { - output.write("CREATE TABLE " + TABLE_NAME + " (`" + fetcherNames[0] + "` varchar(20)"); + output.print("CREATE TABLE " + TABLE_NAME + " (`" + fetcherNames[0] + "` varchar(20)"); for (int i = 1; i < fetcherNames.length; i++) { - output.write(COMMA); + output.print(COMMA); output.print(" `" + fetcherNames[i] + "` "); - output.write("varchar(20)"); //Default type + output.print("varchar(20)"); //Default type } output.println(");"); } } public void nextAddressResults(Object[] results) throws IOException { - output.print("INSERT INTO " + TABLE_NAME + " VALUES ('" + results[0]+"'"); + output.print("INSERT INTO " + TABLE_NAME + " VALUES ('" + results[0] + "'"); for (int i = 1; i < results.length; i++) { Object result = results[i]; output.print(COMMA); @@ -57,5 +57,4 @@ public class SQLExporter extends AbstractExporter { output.println(");"); } - }